Files
goodtimes/manage_referrals/admin.py
2024-04-24 13:45:16 +05:30

174 lines
4.3 KiB
Python

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",
)
},
),
)