summaryrefslogtreecommitdiff
path: root/archaeological_context_records/views.py
diff options
context:
space:
mode:
Diffstat (limited to 'archaeological_context_records/views.py')
-rw-r--r--archaeological_context_records/views.py41
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