You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

71 lines
2.3 KiB

from django.contrib import admin
from django.contrib.admin import register
from django.urls import reverse_lazy
from django.utils.html import format_html
from django.utils.translation import ugettext_lazy as _
# Register your models here.
from rangefilter.filter import DateRangeFilter, DateTimeRangeFilter
from core.admin import SafeModelAdmin
from .forms import ReferralAdminForm, ReferralStatsAdminForm
from .models import Referral, ReferralStats
class ReferralAdminInline(admin.TabularInline):
model = Referral
verbose_name = 'Реферальная ссылка'
verbose_name_plural = 'Реферальные ссылки'
def has_add_permission(self, request):
return False
def has_delete_permission(self, request, obj=None):
return False
@register(Referral)
class ReferralAdmin(SafeModelAdmin):
def has_add_permission(self, request):
return False
def referral_stats(self, referral):
try:
link = reverse_lazy(
'admin:{}_{}_changelist'.format(referral.referralstats._meta.app_label,
referral.referralstats._meta.object_name.lower())
)
link += '?q={}'.format(referral.code)
except Exception as e:
link = '#'
name = _('Details')
return format_html('<a href="{}">{}</a>', link, name)
referral_stats.short_description = _('Stats')
form = ReferralAdminForm
list_display = ('code', 'create_at', 'updated_at', 'status', 'referral_stats')
search_fields = ('code',)
list_filter = ('status', ('create_at', DateRangeFilter), ('updated_at', DateTimeRangeFilter))
ordering = ('-create_at',)
@register(ReferralStats)
class ReferralStatsAdmin(SafeModelAdmin):
def has_add_permission(self, request):
return False
def referral_code(self, stats):
return stats.referral.code
referral_code.short_description = _('Code')
def converted_earnings(self, stats):
return stats.earnings if stats.earnings > 0 else 0
converted_earnings.short_description = _('Earnings')
form = ReferralStatsAdminForm
list_display = ('referral_code', 'visits', 'registrations')
list_select_related = ('referral',)
search_fields = ('referral__name', 'referral__code',)
ordering = ('-create_at',)