|
|
|
|
@ -24,10 +24,19 @@ User = get_user_model() |
|
|
|
|
|
|
|
|
|
logger = logging.getLogger(__name__) |
|
|
|
|
|
|
|
|
|
class ProspectInline(admin.StackedInline): |
|
|
|
|
model = Prospect.entities.through |
|
|
|
|
extra = 1 |
|
|
|
|
verbose_name = "Prospect" |
|
|
|
|
verbose_name_plural = "Prospects" |
|
|
|
|
autocomplete_fields = ['prospect'] |
|
|
|
|
|
|
|
|
|
@admin.register(Entity) |
|
|
|
|
class EntityAdmin(SyncedObjectAdmin): |
|
|
|
|
list_display = ('name', 'address', 'zip_code', 'city') |
|
|
|
|
search_fields = ('name', 'address', 'zip_code', 'city') |
|
|
|
|
# filter_horizontal = ('prospects',) |
|
|
|
|
inlines = [ProspectInline] |
|
|
|
|
|
|
|
|
|
@admin.register(EmailTemplate) |
|
|
|
|
class EmailTemplateAdmin(SyncedObjectAdmin): |
|
|
|
|
@ -35,34 +44,35 @@ class EmailTemplateAdmin(SyncedObjectAdmin): |
|
|
|
|
search_fields = ('name', 'subject') |
|
|
|
|
|
|
|
|
|
def contacted_by_sms(modeladmin, request, queryset): |
|
|
|
|
create_default_activity_for_prospect(modeladmin, request, queryset, ActivityType.SMS, Status.CONTACTED) |
|
|
|
|
create_default_activity_for_prospect(modeladmin, request, queryset, ActivityType.SMS, Status.CONTACTED, None) |
|
|
|
|
contacted_by_sms.short_description = "Contacted by SMS" |
|
|
|
|
|
|
|
|
|
def mark_as_customer(modeladmin, request, queryset): |
|
|
|
|
create_default_activity_for_prospect(modeladmin, request, queryset, None, Status.CUSTOMER) |
|
|
|
|
create_default_activity_for_prospect(modeladmin, request, queryset, None, Status.CUSTOMER, None) |
|
|
|
|
mark_as_customer.short_description = "Mark as customer" |
|
|
|
|
|
|
|
|
|
def mark_as_should_test(modeladmin, request, queryset): |
|
|
|
|
create_default_activity_for_prospect(modeladmin, request, queryset, None, Status.TESTING) |
|
|
|
|
create_default_activity_for_prospect(modeladmin, request, queryset, None, Status.TESTING, None) |
|
|
|
|
mark_as_should_test.short_description = "Mark as should test" |
|
|
|
|
|
|
|
|
|
def mark_as_testing(modeladmin, request, queryset): |
|
|
|
|
create_default_activity_for_prospect(modeladmin, request, queryset, None, Status.CUSTOMER) |
|
|
|
|
create_default_activity_for_prospect(modeladmin, request, queryset, None, Status.CUSTOMER, None) |
|
|
|
|
mark_as_testing.short_description = "Mark as testing" |
|
|
|
|
|
|
|
|
|
def declined_too_expensive(modeladmin, request, queryset): |
|
|
|
|
create_default_activity_for_prospect(modeladmin, request, queryset, None, Status.DECLINED_TOO_EXPENSIVE) |
|
|
|
|
create_default_activity_for_prospect(modeladmin, request, queryset, None, Status.DECLINED, DeclinationReason.TOO_EXPENSIVE) |
|
|
|
|
declined_too_expensive.short_description = "Declined too expensive" |
|
|
|
|
|
|
|
|
|
def declined_use_something_else(modeladmin, request, queryset): |
|
|
|
|
create_default_activity_for_prospect(modeladmin, request, queryset, None, Status.DECLINED_USE_SOMETHING_ELSE) |
|
|
|
|
create_default_activity_for_prospect(modeladmin, request, queryset, None, Status.DECLINED, DeclinationReason.USE_OTHER_PRODUCT) |
|
|
|
|
declined_use_something_else.short_description = "Declined use something else" |
|
|
|
|
|
|
|
|
|
def create_default_activity_for_prospect(modeladmin, request, queryset, type, status): |
|
|
|
|
def create_default_activity_for_prospect(modeladmin, request, queryset, type, status, reason): |
|
|
|
|
for prospect in queryset: |
|
|
|
|
activity = Activity.objects.create( |
|
|
|
|
type=type, |
|
|
|
|
status=status, |
|
|
|
|
declination_reason=reason, |
|
|
|
|
related_user = request.user |
|
|
|
|
) |
|
|
|
|
activity.prospects.add(prospect) |
|
|
|
|
@ -84,7 +94,7 @@ def create_activity_for_prospect(modeladmin, request, queryset): |
|
|
|
|
url = reverse('admin:bizdev_activity_add') |
|
|
|
|
url += f'?prospect={prospect.id}' |
|
|
|
|
return redirect(url) |
|
|
|
|
create_activity_for_prospect.short_description = "Create event" |
|
|
|
|
create_activity_for_prospect.short_description = "Create activity" |
|
|
|
|
|
|
|
|
|
@admin.register(Prospect) |
|
|
|
|
class ProspectAdmin(SyncedObjectAdmin): |
|
|
|
|
@ -96,7 +106,7 @@ class ProspectAdmin(SyncedObjectAdmin): |
|
|
|
|
] |
|
|
|
|
list_display = ('entity_names', 'first_name', 'last_name', 'email', 'last_update', 'current_status') |
|
|
|
|
list_filter = (ProspectStatusFilter, ProspectDeclineReasonFilter, 'creation_date', StaffUserFilter, 'source', ProspectProfileFilter) |
|
|
|
|
search_fields = ('first_name', 'last_name', 'email') |
|
|
|
|
search_fields = ('first_name', 'last_name', 'email', 'entities__name') |
|
|
|
|
date_hierarchy = 'creation_date' |
|
|
|
|
change_list_template = "admin/bizdev/prospect/change_list.html" |
|
|
|
|
ordering = ['-last_update'] |
|
|
|
|
|