Files
goodtimes/manage_referrals/admin.py
2024-03-05 16:11:58 +05:30

132 lines
3.5 KiB
Python

from django.contrib import admin
from .models import ReferralCode, ReferralRecord, ReferralRecordReward, ReferralTracking
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",
)
search_fields = ("referral_record__id", "subscription__name", "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.name
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)