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', 'stran', 'nazev', 'orgove', 'komentar', 'poslat_mail']}),
			# (u'PDF',       {'fields': ['pdf']}),
				]
	list_display = ['nazev', 'cas', 'stran']
	list_filter = []
	search_fields = []
	autocomplete_fields = ['orgove']

	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)