summaryrefslogtreecommitdiff
path: root/archaeological_finds/views.py
diff options
context:
space:
mode:
Diffstat (limited to 'archaeological_finds/views.py')
-rw-r--r--archaeological_finds/views.py61
1 files changed, 61 insertions, 0 deletions
diff --git a/archaeological_finds/views.py b/archaeological_finds/views.py
index b289ac075..96b60587a 100644
--- a/archaeological_finds/views.py
+++ b/archaeological_finds/views.py
@@ -1520,3 +1520,64 @@ def qa_gam_export_views(request, pk, *args, **kwargs):
]
dct["unavailable"] = True
return render(request, "ishtar/forms/qa_form.html", dct)
+
+
+def statement_condition_form(request, find_pk, statement_condition_pk=None,
+ current_right=None):
+ try:
+ item = models.Find.objects.get(pk=find_pk)
+ except models.Find.DoesNotExist:
+ raise Http404()
+ # permission not provided
+ if not current_right:
+ raise PermissionDenied()
+ # specificaly check permission for own item, otherwise already checked
+ if "_own_" in current_right:
+ if not request.user.has_perm(current_right, item):
+ raise PermissionDenied()
+ initial = {}
+ if statement_condition_pk:
+ try:
+ statement_condition = models.StatementCondition.objects.get(
+ pk=statement_condition_pk)
+ initial = statement_condition.get_initial()
+ except models.StatementCondition.DoesNotExist:
+ raise Http404()
+ else:
+ # redirect to edit if there is already a draft
+ q = models.StatementCondition.objects.filter(find_id=find_pk, applied="D")
+ if q.exists():
+ sc_pk = q.values_list("pk", flat=True)[0]
+ return HttpResponseRedirect(
+ reverse("find-statement-condition-modify", args=[find_pk, sc_pk]))
+ initial = models.StatementCondition.get_initial_from_find(item)
+ if request.method == 'POST':
+ form = forms_treatments.QAStatementCondition(
+ request.POST, current_item=item, user=request.user.ishtaruser)
+ if form.is_valid():
+ form.save()
+ return HttpResponseRedirect(reverse("success"))
+ else:
+ form = forms_treatments.QAStatementCondition(
+ current_item=item, user=request.user.ishtaruser, initial=initial)
+ button_name = _("Add") if not statement_condition_pk else _("Modify")
+ icon = "fa fa-plus" if not statement_condition_pk else "fa fa-pencil"
+ url = "find-statement-condition-"
+ url_args = [find_pk]
+ if statement_condition_pk:
+ url_args.append(statement_condition_pk)
+ url += "modify"
+ else:
+ url += "add"
+ return render(
+ request,
+ "ishtar/forms/qa_statement_condition_form.html", {
+ "page_name": _("Statement condition"),
+ "icon": icon,
+ "action_name": button_name,
+ "form": form,
+ "modal_size": "large",
+ "url": reverse(url, args=url_args)
+ })
+
+statement_condition_delete_form = statement_condition_form