from django.shortcuts import get_object_or_404, render from django.views import generic from django.conf import settings from django.http import HttpResponseForbidden from django.db.models import Count,Q from .utils import send_email_notification_komentar from .models import Oprava, Komentar, KorekturovanePDF, Organizator, KorekturaTag class KorekturyListView(generic.ListView): model = KorekturovanePDF queryset = KorekturovanePDF.objects.annotate( k_oprave_cnt=Count('oprava',distinct=True,filter=Q(oprava__status=Oprava.STATUS.K_OPRAVE)), opraveno_cnt=Count('oprava',distinct=True,filter=Q(oprava__status=Oprava.STATUS.OPRAVENO)), neni_chyba_cnt=Count('oprava',distinct=True,filter=Q(oprava__status=Oprava.STATUS.NENI_CHYBA)), k_zaneseni_cnt=Count('oprava',distinct=True,filter=Q(oprava__status=Oprava.STATUS.K_ZANESENI)), ) template_name = 'korektury/seznam.html' class KorekturyAktualniListView(KorekturyListView): def get_queryset(self, *args, **kwargs): queryset=super().get_queryset() queryset=queryset.exclude(status="zastarale") return queryset def get_context_data(self, **kwargs): context = super().get_context_data(**kwargs) context['selected'] = 'aktualni' return context class KorekturyZastaraleListView(KorekturyListView): def get_queryset(self, *args, **kwargs): queryset=super().get_queryset() queryset=queryset.filter(status="zastarale").order_by("-cas") return queryset def get_context_data(self, **kwargs): context = super().get_context_data(**kwargs) context['selected'] = 'zastarale' return context class KorekturySeskupeneListView(KorekturyAktualniListView): template_name = 'korektury/seskupeny_seznam.html' # {% regroup %} potřebuje dostat správně setříděné názvy, aby nedělal duplikáty def get_queryset(self, *args, **kwargs): qs = super().get_queryset(**kwargs) return reversed(sorted(qs, key=lambda it: it.cislo_a_tema)) ### Korektury class KorekturyView(generic.TemplateView): template_name = 'korektury/korekturovatko/htmlstrana.html' def setup(self, request, *args, **kwargs): super().setup(request, *args, **kwargs) self.pdf_id = self.kwargs["pdf"] self.pdf = get_object_or_404(KorekturovanePDF, id=self.pdf_id) def get_context_data(self, **kwargs): context = super().get_context_data(**kwargs) context['pdf'] = self.pdf context['img_prefix'] = self.pdf.get_prefix() context['img_indexes'] = range(self.pdf.stran) context['tagy'] = KorekturaTag.objects.all() return context