X-Git-Url: https://git.mdrn.pl/wolnelektury.git/blobdiff_plain/a7e41fefbf46ad5bfa2eb97dbd1cc11d3a28a354..243ac5a586da9e5abb87698306794b6cc173ded1:/src/messaging/admin.py?ds=sidebyside diff --git a/src/messaging/admin.py b/src/messaging/admin.py index 1b2bac599..06ed21202 100644 --- a/src/messaging/admin.py +++ b/src/messaging/admin.py @@ -1,34 +1,80 @@ from django.contrib import admin -from .models import EmailTemplate, EmailSent +from django.contrib import messages +from django.utils.translation import gettext_lazy as _ +from fnpdjango.actions import export_as_csv_action +from . import models -class EmailSentInline(admin.TabularInline): - model = EmailSent - fields = ['timestamp', 'email', 'subject'] - readonly_fields = ['timestamp', 'email', 'subject'] - extra = 0 - can_delete = False - show_change_link = True +class EmailTemplateAdmin(admin.ModelAdmin): + list_display = ['state', 'min_days_since', 'subject', 'min_hour', 'is_active'] + fieldsets = [ + (None, {"fields": [ + 'state', + ('min_days_since', 'max_days_since'), + 'is_active', + ]}), + (_('E-mail content'), {"fields": [ + 'subject', 'body' + ]}), + (_('Sending constraints'), {"fields": [ + ('min_day_of_month', 'max_day_of_month'), + ('dow_1', 'dow_2', 'dow_3', 'dow_4', 'dow_5', 'dow_6', 'dow_7'), + ('min_hour', 'max_hour'), + ]}), + ] - def has_add_permission(self, request, obj): - return False + def _test_email(self, request, obj): + if request.user.email: + obj.send_test_email(request.user.email) + messages.info(request, _('Test e-mail has been sent to %(email)s.') % {"email": request.user.email}) + else: + messages.warning(request, _('You have no email set. Test e-mail not sent.')) + def response_add(self, request, obj): + self._test_email(request, obj) + return super().response_add(request, obj) -class EmailTemplateAdmin(admin.ModelAdmin): - list_display = ['state', 'days', 'subject', 'hour'] - inlines = [EmailSentInline] + def response_change(self, request, obj): + self._test_email(request, obj) + return super().response_change(request, obj) -admin.site.register(EmailTemplate, EmailTemplateAdmin) +admin.site.register(models.EmailTemplate, EmailTemplateAdmin) class EmailSentAdmin(admin.ModelAdmin): list_filter = ['template'] - list_display = ['timestamp', 'template', 'email', 'subject'] - fields = ['timestamp', 'template', 'email', 'subject', 'body', 'hash_value'] + list_display = ['timestamp', 'template', 'contact', 'subject'] + fields = ['timestamp', 'template', 'contact', 'subject', 'body'] readonly_fields = fields change_links = ['template'] -admin.site.register(EmailSent, EmailSentAdmin) +admin.site.register(models.EmailSent, EmailSentAdmin) + + +class ContactEmailSentInline(admin.TabularInline): + model = models.EmailSent + fields = ['timestamp', 'template', 'subject'] + readonly_fields = ['timestamp', 'template', 'subject'] + extra = 0 + can_delete = False + show_change_link = True + + def has_add_permission(self, request, obj): + return False + + +class ContactAdmin(admin.ModelAdmin): + inlines = [ContactEmailSentInline] + list_filter = ['level'] + list_display = ['email', 'level', 'since', 'expires_at'] + search_fields = ['email'] + date_hierarchy = 'since' + actions = [ +# export_as_csv_action(fields=['id', 'email', 'get_level_display', 'since', 'expires_at']), + export_as_csv_action('Eksport dla PHPList', fields=['email', 'wl_optout_url']) + ] + +admin.site.register(models.Contact, ContactAdmin)