diff --git a/korektury/api/urls.py b/korektury/api/urls.py index eb74d90f..5c1e1bc3 100644 --- a/korektury/api/urls.py +++ b/korektury/api/urls.py @@ -6,4 +6,6 @@ urlpatterns = [ path('/stav', org_required(views.korektury_stav_view), name='korektury_api_pdf_stav'), path('oprava/stav', org_required(views.oprava_stav_view), name='korektury_api_oprava_stav'), path('/opravy_a_komentare', org_required(views.opravy_a_komentare_view), name='korektury_api_opravy_a_komentare'), + path('oprava/smaz', org_required(views.oprava_smaz_view), name='korektury_api_oprava_smaz'), + path('komentar/smaz', org_required(views.komentar_smaz_view), name='korektury_api_komentar_smaz'), ] diff --git a/korektury/api/views.py b/korektury/api/views.py index 560abfad..dff32f19 100644 --- a/korektury/api/views.py +++ b/korektury/api/views.py @@ -1,4 +1,6 @@ -from django.http import HttpResponseForbidden, JsonResponse +from http import HTTPStatus + +from django.http import HttpResponseForbidden, JsonResponse, HttpResponse from django.shortcuts import get_object_or_404 from django.utils.html import linebreaks from django.views.decorators.csrf import csrf_exempt @@ -34,6 +36,24 @@ def oprava_stav_view(request, **kwargs): op.save() return JsonResponse({'status': op.status}) +def oprava_smaz_view(request, **kwargs): + q = request.POST + op_id_str = q.get('oprava_id') + assert op_id_str is not None + op_id = int(op_id_str) + oprava = get_object_or_404(Oprava, id=op_id) + oprava.delete() + return HttpResponse(status=HTTPStatus.NO_CONTENT) + +def komentar_smaz_view(request, **kwargs): + q = request.POST + kom_id_str = q.get('komentar_id') + assert kom_id_str is not None + kom_id = int(kom_id_str) + komentar = get_object_or_404(Komentar, id=kom_id) + komentar.delete() + return HttpResponse(status=HTTPStatus.NO_CONTENT) + class KomentarSerializer(serializers.ModelSerializer): class Meta: model = Komentar diff --git a/korektury/templates/korektury/korekturovatko/__komentar.html b/korektury/templates/korektury/korekturovatko/__komentar.html index e9aed2d2..5f6309bc 100644 --- a/korektury/templates/korektury/korekturovatko/__komentar.html +++ b/korektury/templates/korektury/korekturovatko/__komentar.html @@ -84,7 +84,15 @@ #delete_comment() { if (confirm('Opravdu smazat komentář?')) { - throw {name : 'NotImplementedError', message: '(Webaři jsou) too lazy to implement'}; + const data = new FormData(CSRF_FORM); + data.append('komentar_id', this.id); + fetch('{% url "korektury_api_komentar_smaz" %}', {method: 'POST', body: data}) + .then(response => { + if (!response.ok) {alert('Něco se nepovedlo:' + response.statusText);} + this.htmlElement.remove(); + place_comments(); + }) + .catch(error => {alert('Něco se nepovedlo:' + error);}); } } } diff --git a/korektury/templates/korektury/korekturovatko/__oprava.html b/korektury/templates/korektury/korekturovatko/__oprava.html index 85b17262..0304f524 100644 --- a/korektury/templates/korektury/korekturovatko/__oprava.html +++ b/korektury/templates/korektury/korekturovatko/__oprava.html @@ -161,7 +161,15 @@ #delete() { if (confirm('Opravdu smazat korekturu?')) { - throw {name : 'NotImplementedError', message: '(Webaři jsou) too lazy to implement'}; + const data = new FormData(CSRF_FORM); + data.append('oprava_id', this.id); + fetch('{% url "korektury_api_oprava_smaz" %}', {method: 'POST', body: data}) + .then(response => { + if (!response.ok) {alert('Něco se nepovedlo:' + response.statusText);} + comments[this.img_id].splice(comments[this.img_id].indexOf(this), 1); + place_comments(); + }) + .catch(error => {alert('Něco se nepovedlo:' + error);}); } } }