""" Soubor sloužící k definici toho, co bude v adminu. Většinou pouhým zavoláním funkce :func:`django.contrib.admin.site.register`, v případě, že chceme něco upravit, tak jako třída rozšiřující :class:`django.contrib.admin.ModelAdmin` s dekorátorem :func:`django.contrib.admin.register`. Zde se definuje admin pro: - :class:`korektury.models.KorekturovanePDF` """ 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 # Register your models here. 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 = 'korekturovatko-nove-pdf@mam.mff.cuni.cz' prijemce = 'org@mam.mff.cuni.cz' 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)