From 5611450360566cdbf7b3dd2d5095043d0774ac72 Mon Sep 17 00:00:00 2001 From: Laurent Date: Sun, 13 Jul 2025 21:45:10 +0200 Subject: [PATCH] Fix quick actions --- bizdev/admin.py | 18 +++++++----------- bizdev/filters.py | 5 ++++- 2 files changed, 11 insertions(+), 12 deletions(-) diff --git a/bizdev/admin.py b/bizdev/admin.py index 147ced8..2be93d8 100644 --- a/bizdev/admin.py +++ b/bizdev/admin.py @@ -35,30 +35,30 @@ class EmailTemplateAdmin(SyncedObjectAdmin): search_fields = ('name', 'subject') def contacted_by_sms(modeladmin, request, queryset): - create_activity_for_prospect(modeladmin, request, queryset, None, Status.CONTACTED) + create_default_activity_for_prospect(modeladmin, request, queryset, ActivityType.SMS, Status.CONTACTED) contacted_by_sms.short_description = "Contacted by SMS" def mark_as_customer(modeladmin, request, queryset): - create_activity_for_prospect(modeladmin, request, queryset, None, Status.CUSTOMER) + create_default_activity_for_prospect(modeladmin, request, queryset, None, Status.CUSTOMER) mark_as_customer.short_description = "Mark as customer" def mark_as_should_test(modeladmin, request, queryset): - create_activity_for_prospect(modeladmin, request, queryset, None, Status.TESTING) + create_default_activity_for_prospect(modeladmin, request, queryset, None, Status.TESTING) mark_as_should_test.short_description = "Mark as should test" def mark_as_testing(modeladmin, request, queryset): - create_activity_for_prospect(modeladmin, request, queryset, None, Status.CUSTOMER) + create_default_activity_for_prospect(modeladmin, request, queryset, None, Status.CUSTOMER) mark_as_testing.short_description = "Mark as testing" def declined_too_expensive(modeladmin, request, queryset): - create_activity_for_prospect(modeladmin, request, queryset, None, Status.DECLINED_TOO_EXPENSIVE) + create_default_activity_for_prospect(modeladmin, request, queryset, None, Status.DECLINED_TOO_EXPENSIVE) declined_too_expensive.short_description = "Declined too expensive" def declined_use_something_else(modeladmin, request, queryset): - create_activity_for_prospect(modeladmin, request, queryset, None, Status.DECLINED_USE_SOMETHING_ELSE) + create_default_activity_for_prospect(modeladmin, request, queryset, None, Status.DECLINED_USE_SOMETHING_ELSE) declined_use_something_else.short_description = "Declined use something else" -def create_activity_for_prospect(modeladmin, request, queryset, type, status): +def create_default_activity_for_prospect(modeladmin, request, queryset, type, status): for prospect in queryset: activity = Activity.objects.create( type=type, @@ -83,10 +83,6 @@ def create_activity_for_prospect(modeladmin, request, queryset): # Build the URL with pre-populated fields url = reverse('admin:bizdev_activity_add') url += f'?prospect={prospect.id}' - - # You can add more fields as URL parameters - # url += f'&title=Event for {prospect.name}&status=pending' - return redirect(url) create_activity_for_prospect.short_description = "Create event" diff --git a/bizdev/filters.py b/bizdev/filters.py index 8edb770..2be08f1 100644 --- a/bizdev/filters.py +++ b/bizdev/filters.py @@ -1,3 +1,4 @@ +from xml.dom import Node import django_filters from django.db.models import Max, F, Q from django.contrib.auth import get_user_model @@ -77,7 +78,9 @@ class ProspectStatusFilter(admin.SimpleListFilter): return [(tag.name, tag.value) for tag in Status] def queryset(self, request, queryset): - if self.value(): + if self.value() == Status.NONE: + return queryset.filter(activities__isnull=True) + elif self.value(): # Get prospects whose most recent activity has the selected status return queryset.filter( activities__status=self.value()