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", "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 "" 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 = 0 profile.save() self.message_user(request, "%d subscriptions cancelled" % qs.count())