from django.contrib import admin from .models import ( ReferralCode, ReferralRecord, ReferralRecordReward, ReferralTracking, GoodTimeCoins, ) class ReferralCodeAdmin(admin.ModelAdmin): list_display = ( "referral_code", "principal", "principal_type", "get_principal_name", ) search_fields = ( "referral_code", "principal__first_name", "principal__last_name", "principal_type__name", ) list_filter = ("principal_type",) def get_principal_name(self, obj): return obj.principal.first_name + " " + obj.principal.last_name get_principal_name.short_description = "Principal Name" admin.site.register(ReferralCode, ReferralCodeAdmin) class ReferralRecordAdmin(admin.ModelAdmin): list_display = ( "id", "get_referrer_name", "get_referred_name", "principal_type", "is_completed", ) search_fields = ( "referrer_principal__first_name", "referrer_principal__last_name", "referred_principal__first_name", "referred_principal__last_name", "principal_type__name", ) list_filter = ( "is_completed", "principal_type", ) raw_id_fields = ("referrer_principal", "referred_principal", "principal_type") def get_referrer_name(self, obj): return f"{obj.referrer_principal.first_name} {obj.referrer_principal.last_name}" get_referrer_name.short_description = "Referrer Name" def get_referred_name(self, obj): return f"{obj.referred_principal.first_name} {obj.referred_principal.last_name}" get_referred_name.short_description = "Referred Name" admin.site.register(ReferralRecord, ReferralRecordAdmin) class ReferralRecordRewardAdmin(admin.ModelAdmin): list_display = ( "id", "get_referral_record_id", "get_subscription_name", "coins", "value", "unique_token", ) search_fields = ("referral_record__id", "subscription__title", "coins") list_filter = ("subscription",) raw_id_fields = ("referral_record", "subscription") def get_referral_record_id(self, obj): return f"{obj.referral_record.id}" get_referral_record_id.short_description = "Referral Record ID" def get_subscription_name(self, obj): return obj.subscription.title get_subscription_name.short_description = "Subscription Name" admin.site.register(ReferralRecordReward, ReferralRecordRewardAdmin) class ReferralTrackingAdmin(admin.ModelAdmin): list_display = ( "referral_record", "referrer_subscription_id", "referred_subscription_id", "is_referrer_subscribed", "ip_address", "user_agent", "device_model", ) list_filter = ("is_referrer_subscribed", "referral_record") search_fields = ( "referrer_subscription_id", "referred_subscription_id", "ip_address", ) # Customize form fields fieldsets = ( ( None, { "fields": ( "referral_record", "referrer_subscription_id", "referred_subscription_id", "is_referrer_subscribed", ) }, ), ( "Advanced options", { "classes": ("collapse",), "fields": ("ip_address", "user_agent", "device_model"), }, ), ) # Register your models here. admin.site.register(ReferralTracking, ReferralTrackingAdmin) @admin.register(GoodTimeCoins) class GoodTimeCoinsAdmin(admin.ModelAdmin): list_display = ( "id", "coins", "value_in_pound", "comments", "start_date", "end_date", "active", "deleted", ) list_filter = ("start_date", "end_date") search_fields = ("comments",) date_hierarchy = "start_date" ordering = ("-start_date",) fieldsets = ( ( None, { "fields": ( "coins", "value_in_pound", "comments", "start_date", "end_date", "active", "deleted", ) }, ), )