from django.conf import settings from django.contrib import admin from reversion.admin import VersionAdmin from korektury.models import KorekturovanePDF from django.core.mail import EmailMessage from django.urls import reverse class KorekturovanePDFAdmin(VersionAdmin): """ nastaví čas vložení (:attr:`~koretkury.models.KorekturovanePDF.cas`) a počet stran (:attr:`~koretkury.models.KorekturovanePDF.stran`) jako readonly = neměnitelný Při prvním uložení pošle e-mail. """ readonly_fields = ['cas', 'stran'] def get_readonly_fields(self, request, obj=None): """ Když pdf existuje, tak nedovolím měnit ani pdf.""" if obj: return self.readonly_fields + ['pdf'] return self.readonly_fields fieldsets = [ (None, {'fields': ['pdf', 'cas', 'org', 'stran', 'nazev', 'komentar', 'poslat_mail']}), # (u'PDF', {'fields': ['pdf']}), ] list_display = ['nazev', 'cas', 'stran', 'org'] list_filter = [] search_fields = [] def save_model(self, request, obj, form, change): """ Pokud je soubor nový a má se poslat e-mail, tak pošle e-mail o novém pdf. """ super().save_model(request, obj, form, change) if not change and obj.poslat_mail: # Je nový a má se poslat mail odkaz = request.build_absolute_uri(reverse('korektury', kwargs={'pdf': obj.id})) odesilatel = settings.KOREKTURY_NOVE_PDF_EMAIL prijemce = settings.KONFERA_ORGOVE_EMAIL predmet = f'Nové korektury: {obj.nazev}' text = f'''\ V korekturovátku se objevil nový soubor: {obj.nazev} {odkaz} Popis souboru: {obj.komentar} --- S pozdravem a korekturám zdar! Korekturovátko ''' EmailMessage( subject=predmet, body=text, from_email=odesilatel, to=[prijemce], ).send() admin.site.register(KorekturovanePDF, KorekturovanePDFAdmin)