From b99b4ffdc4a6f7ee9aa0ed0b7d1a83a5fdbbd539 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jon=C3=A1=C5=A1=20Havelka?= Date: Thu, 13 Feb 2025 18:28:25 +0100 Subject: [PATCH 1/8] =?UTF-8?q?Debugovac=C3=AD=20v=C3=BDpisy=20smaz=C3=A1n?= =?UTF-8?q?y?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../templates/korektury/korekturovatko/__dalsi_korektura.html | 2 -- 1 file changed, 2 deletions(-) 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; } From 0f1cd2e32aa6643843016a3e3b4e902039713306 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jon=C3=A1=C5=A1=20Havelka?= Date: Wed, 19 Feb 2025 15:22:14 +0100 Subject: [PATCH 2/8] =?UTF-8?q?Aktualizov=C3=A1n=C3=AD=20po=C4=8Dtu=20kore?= =?UTF-8?q?ktur=20a=20z=C3=A1sluh?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../korektury/korekturovatko/__komentar.html | 7 +++++- .../korektury/korekturovatko/__oprava.html | 5 +++- .../korektury/korekturovatko/_main.html | 2 ++ .../korekturovatko/_schovani_korektur.html | 24 +++++++++++++++--- .../korektury/korekturovatko/htmlstrana.html | 25 ++++++++++++++++--- korektury/views.py | 19 -------------- 6 files changed, 53 insertions(+), 29 deletions(-) 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/_main.html b/korektury/templates/korektury/korekturovatko/_main.html index 2bf74530..30a5c440 100644 --- a/korektury/templates/korektury/korekturovatko/_main.html +++ b/korektury/templates/korektury/korekturovatko/_main.html @@ -30,6 +30,8 @@ } } + updatuj_pocty_stavu(); + updatuj_pocty_zasluh(); place_comments(); }); }) diff --git a/korektury/templates/korektury/korekturovatko/_schovani_korektur.html b/korektury/templates/korektury/korekturovatko/_schovani_korektur.html index 84399650..10e659bf 100644 --- a/korektury/templates/korektury/korekturovatko/_schovani_korektur.html +++ b/korektury/templates/korektury/korekturovatko/_schovani_korektur.html @@ -3,26 +3,33 @@ Zobrazit: id="k_oprave_checkbox" name="k_oprave_checkbox" onchange="toggle_corrections('k_oprave')" checked> - + - + - + - +
diff --git a/korektury/templates/korektury/korekturovatko/htmlstrana.html b/korektury/templates/korektury/korekturovatko/htmlstrana.html index f2e545f6..a9ccbb07 100644 --- a/korektury/templates/korektury/korekturovatko/htmlstrana.html +++ b/korektury/templates/korektury/korekturovatko/htmlstrana.html @@ -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..33aa3886 100644 --- a/korektury/views.py +++ b/korektury/views.py @@ -125,31 +125,12 @@ class KorekturyView(generic.TemplateView): 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['tagy'] = KorekturaTag.objects.all() return context From 2f30d8d27f9210e4ce09267507bab19c2a85182a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jon=C3=A1=C5=A1=20Havelka?= Date: Wed, 19 Feb 2025 15:30:10 +0100 Subject: [PATCH 3/8] =?UTF-8?q?=C4=8Cistka=20nepot=C5=99ebn=C3=BDch=20v?= =?UTF-8?q?=C4=9Bc=C3=AD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- korektury/views.py | 67 ---------------------------------------------- 1 file changed, 67 deletions(-) diff --git a/korektury/views.py b/korektury/views.py index 33aa3886..8ef48f76 100644 --- a/korektury/views.py +++ b/korektury/views.py @@ -51,7 +51,6 @@ class KorekturySeskupeneListView(KorekturyAktualniListView): ### Korektury class KorekturyView(generic.TemplateView): - model = Oprava template_name = 'korektury/korekturovatko/htmlstrana.html' def setup(self, request, *args, **kwargs): @@ -59,78 +58,12 @@ class KorekturyView(generic.TemplateView): 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) - - 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['opravy'] = opravy context['tagy'] = KorekturaTag.objects.all() return context From eb9232305f28c56ab7613173b078cfa345c793ca Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jon=C3=A1=C5=A1=20Havelka?= Date: Wed, 19 Feb 2025 15:34:30 +0100 Subject: [PATCH 4/8] Typ --- korektury/templates/korektury/korekturovatko/__stranky.html | 3 +++ 1 file changed, 3 insertions(+) diff --git a/korektury/templates/korektury/korekturovatko/__stranky.html b/korektury/templates/korektury/korekturovatko/__stranky.html index 03121e3f..1f2c3b87 100644 --- a/korektury/templates/korektury/korekturovatko/__stranky.html +++ b/korektury/templates/korektury/korekturovatko/__stranky.html @@ -14,6 +14,9 @@ Korektury {{pdf.nazev}} - +

Korektury {{pdf.nazev}}

From de0f0d304087968114e6deb441c2ce473c5835d2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jon=C3=A1=C5=A1=20Havelka?= Date: Wed, 19 Feb 2025 15:51:14 +0100 Subject: [PATCH 6/8] =?UTF-8?q?KorekturyView=20je=20DetailView=20m=C3=ADst?= =?UTF-8?q?o=20TemplateView?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../korektury/korekturovatko/__stranky.html | 2 +- .../templates/korektury/korekturovatko/_main.html | 2 +- .../korektury/korekturovatko/_zmena_stavu.html | 10 +++++----- .../korektury/korekturovatko/htmlstrana.html | 10 +++++----- korektury/views.py | 15 ++++----------- 5 files changed, 16 insertions(+), 23 deletions(-) diff --git a/korektury/templates/korektury/korekturovatko/__stranky.html b/korektury/templates/korektury/korekturovatko/__stranky.html index 1f2c3b87..d16a609b 100644 --- a/korektury/templates/korektury/korekturovatko/__stranky.html +++ b/korektury/templates/korektury/korekturovatko/__stranky.html @@ -3,7 +3,7 @@ Strana {{ i|add:1 }} diff --git a/korektury/templates/korektury/korekturovatko/_main.html b/korektury/templates/korektury/korekturovatko/_main.html index 30a5c440..e9a0a517 100644 --- a/korektury/templates/korektury/korekturovatko/_main.html +++ b/korektury/templates/korektury/korekturovatko/_main.html @@ -18,7 +18,7 @@ * @param pri_uspechu Akce, která se má provést při úspěchu (speciálně zavřít formulář) */ function update_all(data={}, catchError=true, pri_uspechu=null) { // FIXME není mi jasné, zda v {} nemá být `cache: "no-store"`, aby prohlížeč necachoval GET. - fetch('{% url "korektury_api_opravy_a_komentare" pdf.id %}', data) + fetch('{% url "korektury_api_opravy_a_komentare" korekturovanepdf.id %}', data) .then(response => { if (!response.ok && catchError) {alert('Něco se nepovedlo:' + response.statusText);} else response.json().then(data => { 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 623b55b1..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 | diff --git a/korektury/views.py b/korektury/views.py index 8ef48f76..44339556 100644 --- a/korektury/views.py +++ b/korektury/views.py @@ -50,21 +50,14 @@ class KorekturySeskupeneListView(KorekturyAktualniListView): return reversed(sorted(qs, key=lambda it: it.cislo_a_tema)) ### Korektury -class KorekturyView(generic.TemplateView): +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 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['img_indexes'] = range(self.object.stran) context['tagy'] = KorekturaTag.objects.all() return context From 1624fdecc271966c5c15d7d465906845d8610578 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jon=C3=A1=C5=A1=20Havelka?= Date: Wed, 19 Feb 2025 16:24:55 +0100 Subject: [PATCH 7/8] =?UTF-8?q?Zapomenut=C3=A9=20importy?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- korektury/views.py | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/korektury/views.py b/korektury/views.py index 44339556..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 From 136aca5b831662d89e7a9932cce271563fb2611c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jon=C3=A1=C5=A1=20Havelka?= Date: Wed, 19 Feb 2025 16:29:23 +0100 Subject: [PATCH 8/8] =?UTF-8?q?Po=C4=8Dty=20stav=C5=AF=20mus=C3=ADme=20ini?= =?UTF-8?q?cializovat=20na=20nulu,=20jinak=20se=20nezm=C4=9Bn=C3=AD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../templates/korektury/korekturovatko/_schovani_korektur.html | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/korektury/templates/korektury/korekturovatko/_schovani_korektur.html b/korektury/templates/korektury/korekturovatko/_schovani_korektur.html index 10e659bf..a609702e 100644 --- a/korektury/templates/korektury/korekturovatko/_schovani_korektur.html +++ b/korektury/templates/korektury/korekturovatko/_schovani_korektur.html @@ -58,7 +58,8 @@ Zobrazit: function updatuj_pocty_stavu() { const pocty_stavu = {}; - for (let oprava of Object.values(opravy)) { + for (const stav of Object.keys(spany_s_pocty_stavu)) pocty_stavu[stav] = 0; + for (const oprava of Object.values(opravy)) { if (!(oprava.status in pocty_stavu)) pocty_stavu[oprava.status] = 0; pocty_stavu[oprava.status] += 1; }