diff options
| author | Étienne Loks <etienne.loks@iggdrasil.net> | 2026-03-04 16:32:30 +0100 |
|---|---|---|
| committer | Étienne Loks <etienne.loks@iggdrasil.net> | 2026-03-10 11:11:46 +0100 |
| commit | 27fff0a390ea490047f0cfced48bad92f70401d1 (patch) | |
| tree | 478158dc660f14f7c82e1f7dca660ef7575fe743 /archaeological_finds/views.py | |
| parent | 5311aea5f9b9bd0fbfb12e368560ddd5d150162b (diff) | |
| download | Ishtar-27fff0a390ea490047f0cfced48bad92f70401d1.tar.bz2 Ishtar-27fff0a390ea490047f0cfced48bad92f70401d1.zip | |
🚧 Statement condition: views, forms, logic
Diffstat (limited to 'archaeological_finds/views.py')
| -rw-r--r-- | archaeological_finds/views.py | 61 |
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 |
