diff --git a/korektury/templates/korektury/korekturovatko/__dalsi_korektura.html b/korektury/templates/korektury/korekturovatko/__dalsi_korektura.html index 51ebc7a1..1e9c4724 100644 --- a/korektury/templates/korektury/korekturovatko/__dalsi_korektura.html +++ b/korektury/templates/korektury/korekturovatko/__dalsi_korektura.html @@ -35,7 +35,6 @@ for (let [_, opravy] of Object.entries(comments)) { for (const oprava of opravy) { if (stav == null || oprava.status === stav) { - console.log(oprava, oprava.htmlElement.getBoundingClientRect().y); const y = oprava.htmlElement.getBoundingClientRect().y; if (y >= -1) { if (dalsi) { @@ -44,7 +43,6 @@ return; } } else { - console.log(predchozi); if (predchozi !== null) predchozi.htmlElement.scrollIntoView(); else alert("Výše už není žádná taková korektura."); return; } diff --git a/korektury/templates/korektury/korekturovatko/__komentar.html b/korektury/templates/korektury/korekturovatko/__komentar.html index ed87ba40..e9aed2d2 100644 --- a/korektury/templates/korektury/korekturovatko/__komentar.html +++ b/korektury/templates/korektury/korekturovatko/__komentar.html @@ -35,6 +35,7 @@ #autor; #text; htmlElement; id; oprava; {# komentar_data; #} + autor; /** * @@ -66,7 +67,11 @@ this.set_text(komentar_data['text']); }; - set_autor(autor) {this.#autor.textContent=autor;}; + set_autor(autor) { + this.#autor.textContent=autor; + this.autor = autor; + }; + set_text(text) { this.#text.innerHTML=text; }; diff --git a/korektury/templates/korektury/korekturovatko/__oprava.html b/korektury/templates/korektury/korekturovatko/__oprava.html index 2879d2c3..85b17262 100644 --- a/korektury/templates/korektury/korekturovatko/__oprava.html +++ b/korektury/templates/korektury/korekturovatko/__oprava.html @@ -151,7 +151,10 @@ fetch('{% url "korektury_api_oprava_stav" %}', {method: 'POST', body: data}) .then(response => { if (!response.ok) {alert('Něco se nepovedlo:' + response.statusText);} - else response.json().then(data => this.set_status(data['status'])); + else response.json().then(data => { + this.set_status(data['status']); + updatuj_pocty_stavu(); + }); }) .catch(error => {alert('Něco se nepovedlo:' + error);}); } diff --git a/korektury/templates/korektury/korekturovatko/__stranky.html b/korektury/templates/korektury/korekturovatko/__stranky.html index 03121e3f..d16a609b 100644 --- a/korektury/templates/korektury/korekturovatko/__stranky.html +++ b/korektury/templates/korektury/korekturovatko/__stranky.html @@ -3,7 +3,7 @@ Strana {{ i|add:1 }} @@ -14,6 +14,9 @@ diff --git a/korektury/templates/korektury/korekturovatko/_zmena_stavu.html b/korektury/templates/korektury/korekturovatko/_zmena_stavu.html index e769d159..6f34138b 100644 --- a/korektury/templates/korektury/korekturovatko/_zmena_stavu.html +++ b/korektury/templates/korektury/korekturovatko/_zmena_stavu.html @@ -1,13 +1,13 @@

Změnit stav PDF:

-Aktuální: {{pdf.status}} +Aktuální: {{korekturovanepdf.status}}
{% csrf_token %} - Přidávání korektur + Přidávání korektur
- Zanášení korektur + Zanášení korektur
- Zastaralé, nekorigovat + Zastaralé, nekorigovat
@@ -21,7 +21,7 @@ * @param {Boolean} catchError */ function fetchStav(data, catchError=true) { - fetch("{% url 'korektury_api_pdf_stav' pdf.id %}", data + fetch("{% url 'korektury_api_pdf_stav' korekturovanepdf.id %}", data ) .then(response => { if (!response.ok) { if (catchError) alert("Něco se nepovedlo:" + response.statusText);} diff --git a/korektury/templates/korektury/korekturovatko/htmlstrana.html b/korektury/templates/korektury/korekturovatko/htmlstrana.html index f2e545f6..6dcd278a 100644 --- a/korektury/templates/korektury/korekturovatko/htmlstrana.html +++ b/korektury/templates/korektury/korekturovatko/htmlstrana.html @@ -6,19 +6,19 @@ - Korektury {{pdf.nazev}} + Korektury {{korekturovanepdf.nazev}} - + -

Korektury {{pdf.nazev}}

+

Korektury {{korekturovanepdf.nazev}}

Probíhá zanášení korektur, zvažte, zda chcete přidávat nové

Toto PDF je již zastaralé, nepřidávejte nové korektury

- {{pdf.komentar}} + {{korekturovanepdf.komentar}}
Klikni na chybu, napiš komentář | - stáhnout PDF (bez korektur) | + stáhnout PDF (bez korektur) | seznam souborů | Spravovat PDF | nápověda | @@ -35,10 +35,27 @@

- Děkujeme opravovatelům: - {% for z in zasluhy %} - {{z.autor}} ({{z.pocet}}){% if not forloop.last %},{% endif %} - {% endfor %}

+ Děkujeme opravovatelům:


+ + diff --git a/korektury/views.py b/korektury/views.py index 6d447ad1..23e5dcb1 100644 --- a/korektury/views.py +++ b/korektury/views.py @@ -1,11 +1,7 @@ -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 +from .models import Oprava, KorekturovanePDF, KorekturaTag class KorekturyListView(generic.ListView): model = KorekturovanePDF @@ -50,107 +46,14 @@ class KorekturySeskupeneListView(KorekturyAktualniListView): return reversed(sorted(qs, key=lambda it: it.cislo_a_tema)) ### Korektury -class KorekturyView(generic.TemplateView): - model = Oprava +class KorekturyView(generic.DetailView): + model = KorekturovanePDF + pk_url_kwarg = "pdf" 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 post(self, request, *args, **kwargs): - q = request.POST - - # prirazeni autora podle prihlaseni - autor_user = request.user - # pokud existuje ucet (user), ale neni to organizator = 403 - autor = Organizator.objects.filter(osoba__user=autor_user).first() - if not autor: - return HttpResponseForbidden() - - action = q.get('action') - if (action == ''): # Přidej - x = int(q.get('x')) - y = int(q.get('y')) - text = q.get('txt') - strana = int(q.get('img-id')[4:]) - op = Oprava(x=x,y=y, strana=strana, pdf=self.pdf) - op.save() - kom = Komentar(oprava=op,autor=autor,text=text) - kom.save() - send_email_notification_komentar(op, autor, request) - elif (action == 'del'): - id = int(q.get('id')) - op = Oprava.objects.get(id=id) - for k in Komentar.objects.filter(oprava=op): - k.delete() - op.delete() - elif action in Oprava.STATUS.values: - id = int(q.get('id')) - op = Oprava.objects.get(id=id) - op.status = action - op.save() - elif (action == 'comment'): - id = int(q.get('id')) - op = Oprava.objects.get(id=id) - text = q.get('txt') - kom = Komentar(oprava=op,autor=autor,text=text) - kom.save() - send_email_notification_komentar(op, autor, request) - elif (action == 'update-comment'): - id = int(q.get('id')) - kom = Komentar.objects.get(id=id) - text = q.get('txt') - kom.text = text - kom.autor = autor - kom.save() - elif (action == 'del-comment'): - id = int(q.get('id')) - kom = Komentar.objects.get(id=id) - kom.delete() - elif (action == 'set-state'): - status = q.get('state') - assert status in KorekturovanePDF.STATUS.values - self.pdf.status = status - self.pdf.save() - context = self.get_context_data() - context['autor'] = autor - return render(request, 'korektury/korekturovatko/htmlstrana.html', context) - 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_path'] = settings.KOREKTURY_IMG_DIR - context['img_indexes'] = range(self.pdf.stran) - opravy = Oprava.objects.filter(pdf=self.pdf_id) - zasluhy = {} - for o in opravy: - o.komentare = o.komentar_set.all() - for k in o.komentare: - if k.autor in zasluhy: - zasluhy[k.autor] += 1 - else: - zasluhy[k.autor] = 1 - zasluhy = [ - {'autor': jmeno, 'pocet': pocet} - for (jmeno, pocet) in zasluhy.items() - ] - zasluhy.sort(key=lambda z: z['pocet'], reverse=True) - - strany = set(o.strana for o in opravy) - opravy_na_stranu = [{'strana': s, 'op_id': opravy.filter(strana=s)} for s in strany] - context['opravy_strany'] = opravy_na_stranu - - context['k_oprave_cnt'] = opravy.filter(status='k_oprave').count() - context['opraveno_cnt'] = opravy.filter(status='opraveno').count() - context['neni_chyba_cnt'] = opravy.filter(status='neni_chyba').count() - context['k_zaneseni_cnt'] = opravy.filter(status='k_zaneseni').count() - - context['opravy'] = opravy - context['zasluhy'] = zasluhy - + context['img_indexes'] = range(self.object.stran) context['tagy'] = KorekturaTag.objects.all() return context