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 "View Profile" % url return "" 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())