diff options
Diffstat (limited to 'archaeological_context_records/views.py')
| -rw-r--r-- | archaeological_context_records/views.py | 41 |
1 files changed, 40 insertions, 1 deletions
diff --git a/archaeological_context_records/views.py b/archaeological_context_records/views.py index 69f995932..8c222f395 100644 --- a/archaeological_context_records/views.py +++ b/archaeological_context_records/views.py @@ -19,9 +19,10 @@ import json +from django.core.exceptions import PermissionDenied from django.db.models import Q from django.http import HttpResponse, HttpResponseRedirect, Http404 -from django.shortcuts import redirect +from django.shortcuts import redirect, render from django.urls import reverse from ishtar_common.utils import gettext_lazy as _ from django.views.generic import RedirectView @@ -194,6 +195,44 @@ context_record_modify_relations = get_relation_modify( ) +def get_dating_form(model, dating_model, url_name, action='add'): + def _dating_add(request, pk, current_right=None): + try: + item = model.objects.get(pk=pk) + except model.DoesNotExist: + raise Http404() + if "_own_" in current_right: + if not request.user.has_perm(current_right, item): + raise PermissionDenied() + elif current_right: + if not request.user.has_perm(current_right): + raise PermissionDenied() + if request.method == 'POST': + form = forms.QADating(request.POST) + if form.is_valid(): + form.save(dating_model, item) + return redirect(reverse(url_name, args=[pk])) + else: + form = forms.QADating() + button_name = _("Add") if action == "add" else _("Modify") + icon = "fa fa-plus" if action == "add" else "fa fa-pencil" + return render( + request, + "ishtar/forms/qa_form.html", { + "page_name": _("Dating"), + "icon": icon, + "action_name": button_name, + "form": form, + "url": reverse(url_name, args=[pk]) + }) + return _dating_add + + +context_record_dating_add = get_dating_form( + models.ContextRecord, models.ContextRecordDating, "context-record-dating-add" +) + + class GenerateRelationImage(IshtarMixin, LoginRequiredMixin, RedirectView): upper_model = models.Operation model = models.ContextRecord |
