fix: load and show attachments in attachments tab

This commit is contained in:
Shariq Ansari 2024-10-14 23:07:14 +05:30
parent b40fd4a1af
commit 4eb506ee45
3 changed files with 31 additions and 7 deletions

View File

@ -35,10 +35,11 @@ def get_deal_activities(name):
calls = [] calls = []
notes = [] notes = []
tasks = [] tasks = []
attachments = []
creation_text = "created this deal" creation_text = "created this deal"
if lead: if lead:
activities, calls, notes, tasks = get_lead_activities(lead) activities, calls, notes, tasks, attachments = get_lead_activities(lead)
creation_text = "converted the lead to this deal" creation_text = "converted the lead to this deal"
activities.append({ activities.append({
@ -134,11 +135,12 @@ def get_deal_activities(name):
calls = calls + get_linked_calls(name) calls = calls + get_linked_calls(name)
notes = notes + get_linked_notes(name) notes = notes + get_linked_notes(name)
tasks = tasks + get_linked_tasks(name) tasks = tasks + get_linked_tasks(name)
attachments = attachments + get_attachments('CRM Deal', name)
activities.sort(key=lambda x: x["creation"], reverse=True) activities.sort(key=lambda x: x["creation"], reverse=True)
activities = handle_multiple_versions(activities) activities = handle_multiple_versions(activities)
return activities, calls, notes, tasks return activities, calls, notes, tasks, attachments
def get_lead_activities(name): def get_lead_activities(name):
get_docinfo('', "CRM Lead", name) get_docinfo('', "CRM Lead", name)
@ -248,19 +250,20 @@ def get_lead_activities(name):
calls = get_linked_calls(name) calls = get_linked_calls(name)
notes = get_linked_notes(name) notes = get_linked_notes(name)
tasks = get_linked_tasks(name) tasks = get_linked_tasks(name)
attachments = get_attachments('CRM Lead', name)
activities.sort(key=lambda x: x["creation"], reverse=True) activities.sort(key=lambda x: x["creation"], reverse=True)
activities = handle_multiple_versions(activities) activities = handle_multiple_versions(activities)
return activities, calls, notes, tasks return activities, calls, notes, tasks, attachments
@redis_cache() @redis_cache()
def get_attachments(doctype, name): def get_attachments(doctype, name):
return frappe.db.get_all( return frappe.db.get_all(
"File", "File",
filters={"attached_to_doctype": doctype, "attached_to_name": name}, filters={"attached_to_doctype": doctype, "attached_to_name": name},
fields=["name", "file_name", "file_url", "file_size", "is_private"], fields=["name", "file_name", "file_url", "file_size", "is_private", "creation", "owner"],
) ) or []
def handle_multiple_versions(versions): def handle_multiple_versions(versions):
activities = [] activities = []

View File

@ -104,6 +104,15 @@
</div> </div>
</div> </div>
</div> </div>
<div v-else-if="title == 'Attachments'">
<div
class="grid grid-cols-1 gap-4 px-3 pb-3 sm:px-10 sm:pb-5 lg:grid-cols-2 xl:grid-cols-3"
>
<div v-for="attachment in activities">
<AttachmentArea :attachment="attachment" />
</div>
</div>
</div>
<div <div
v-else v-else
v-for="(activity, i) in activities" v-for="(activity, i) in activities"
@ -415,6 +424,7 @@ import CommentArea from '@/components/Activities/CommentArea.vue'
import CallArea from '@/components/Activities/CallArea.vue' import CallArea from '@/components/Activities/CallArea.vue'
import NoteArea from '@/components/Activities/NoteArea.vue' import NoteArea from '@/components/Activities/NoteArea.vue'
import TaskArea from '@/components/Activities/TaskArea.vue' import TaskArea from '@/components/Activities/TaskArea.vue'
import AttachmentArea from '@/components/Activities/AttachmentArea.vue'
import UserAvatar from '@/components/UserAvatar.vue' import UserAvatar from '@/components/UserAvatar.vue'
import ActivityIcon from '@/components/Icons/ActivityIcon.vue' import ActivityIcon from '@/components/Icons/ActivityIcon.vue'
import Email2Icon from '@/components/Icons/Email2Icon.vue' import Email2Icon from '@/components/Icons/Email2Icon.vue'
@ -498,7 +508,7 @@ const all_activities = createResource({
params: { name: doc.value.data.name }, params: { name: doc.value.data.name },
cache: ['activity', doc.value.data.name], cache: ['activity', doc.value.data.name],
auto: true, auto: true,
transform: ([versions, calls, notes, tasks]) => { transform: ([versions, calls, notes, tasks, attachments]) => {
if (calls?.length) { if (calls?.length) {
calls.forEach((doc) => { calls.forEach((doc) => {
doc.show_recording = false doc.show_recording = false
@ -533,7 +543,7 @@ const all_activities = createResource({
} }
}) })
} }
return { versions, calls, notes, tasks } return { versions, calls, notes, tasks, attachments }
}, },
}) })
@ -621,6 +631,9 @@ const activities = computed(() => {
} else if (title.value == 'Notes') { } else if (title.value == 'Notes') {
if (!all_activities.data?.notes) return [] if (!all_activities.data?.notes) return []
return sortByCreation(all_activities.data.notes) return sortByCreation(all_activities.data.notes)
} else if (title.value == 'Attachments') {
if (!all_activities.data?.attachments) return []
return sortByCreation(all_activities.data.attachments)
} }
activities.forEach((activity) => { activities.forEach((activity) => {

View File

@ -0,0 +1,8 @@
<template>
<div>{{ attachment }}</div>
</template>
<script setup>
const props = defineProps({
attachment: Object,
})
</script>