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.
 
 
 
 
 

57 lines
1.4 KiB

from django.contrib import admin
from django.urls import reverse
from django.utils.safestring import mark_safe
from hc.accounts.models import Profile
from hc.payments.models import Subscription
@admin.register(Subscription)
class SubsAdmin(admin.ModelAdmin):
readonly_fields = ("email",)
search_fields = (
"customer_id",
"payment_method_token",
"subscription_id",
"user__email",
)
list_display = (
"id",
"email",
"customer_id",
"address_id",
"payment_method_token",
"subscription_id",
"plan_id",
"plan_name",
"profile",
)
list_filter = ("plan_id",)
raw_id_fields = ("user",)
actions = ("cancel",)
def email(self, obj):
return obj.user.email if obj.user else None
@mark_safe
def profile(self, obj):
if obj.user.profile:
url = reverse("admin:accounts_profile_change", args=[obj.user.profile.id])
return "<a href='%s'>View Profile</a>" % url
return ""
profile.allow_tags = True
def cancel(self, request, qs):
for sub in qs.all():
sub.cancel()
profile = Profile.objects.for_user(sub.user)
profile.check_limit = 20
profile.team_limit = 2
profile.sms_limit = 5
profile.save()
self.message_user(request, "%d subscriptions cancelled" % qs.count())