Source code for pagetools.subscriptions.admin

from django.contrib import admin
from django.core.exceptions import ValidationError
from django.core.validators import validate_email
from django.template.response import TemplateResponse
from django.urls import path

from .models import QueuedEmail, SendStatus, Subscriber


[docs]class SubscriberAdmin(admin.ModelAdmin): change_list_template = "admin/subscriptions/subscriber/sub_change_list.html" list_display = ("email", "subscribtion_date", "is_activated") date_hierarchy = "subscribtion_date" readonly_fields = ["subscribtion_date"] list_editable = ["is_activated"] list_filter = ["is_activated"]
[docs] def get_urls(self): urls = super().get_urls() my_urls = [ path( "mass_subscription/", self.mass_subscription, name="pagetools_subscriptions_mass_subscription", ), ] return my_urls + urls
[docs] def mass_subscription(self, request): context = {} if request.method == "POST": failed = [] for entry in request.POST["entries"].splitlines(): entry = entry.strip() if not entry: continue try: validate_email(entry) Subscriber.objects.get_or_create(email=entry, is_activated=True) except ValidationError: failed.append(entry) context["failures"] = failed return TemplateResponse( request, "admin/subscriptions/subscriber/mass_subscription.html", context=context, )
admin.site.register(Subscriber, SubscriberAdmin) admin.site.register(QueuedEmail) admin.site.register(SendStatus)