mamweb/korektury/admin.py

75 lines
2.1 KiB
Python
Raw Normal View History

2022-02-15 17:48:16 +01:00
"""
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`
"""
2015-12-01 22:18:28 +01:00
from django.contrib import admin
from reversion.admin import VersionAdmin
from korektury.models import KorekturovanePDF
2015-12-01 22:18:28 +01:00
2023-04-17 20:15:39 +02:00
from django.core.mail import EmailMessage
from django.urls import reverse
2015-12-01 22:18:28 +01:00
# Register your models here.
class KorekturovanePDFAdmin(VersionAdmin):
2022-02-15 17:48:16 +01:00
"""
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.
"""
2019-05-11 01:15:05 +02:00
readonly_fields = ['cas', 'stran']
2019-05-11 01:15:05 +02:00
def get_readonly_fields(self, request, obj=None):
2022-09-08 18:11:27 +02:00
""" Když pdf existuje, tak nedovolím měnit ani pdf."""
2019-05-11 01:15:05 +02:00
if obj:
return self.readonly_fields + ['pdf']
return self.readonly_fields
2019-05-11 01:15:05 +02:00
fieldsets = [
(None,
{'fields':
['pdf', 'cas', 'org', 'stran', 'nazev', 'komentar', 'poslat_mail']}),
2019-05-11 01:15:05 +02:00
# (u'PDF', {'fields': ['pdf']}),
]
list_display = ['nazev', 'cas', 'stran', 'org']
list_filter = []
search_fields = []
def save_model(self, request, obj, form, change):
2022-02-15 17:48:16 +01:00
"""
Pokud je soubor nový a 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
'''
2023-04-17 20:15:39 +02:00
EmailMessage(
subject=predmet,
body=text,
from_email=odesilatel,
to=[prijemce],
).send()
admin.site.register(KorekturovanePDF, KorekturovanePDFAdmin)