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 @@
@@ -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}}
@@ -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