diff options
Diffstat (limited to 'archaeological_context_records/views.py')
| -rw-r--r-- | archaeological_context_records/views.py | 34 |
1 files changed, 27 insertions, 7 deletions
diff --git a/archaeological_context_records/views.py b/archaeological_context_records/views.py index 28fb6b18f..057e3ab61 100644 --- a/archaeological_context_records/views.py +++ b/archaeological_context_records/views.py @@ -195,8 +195,8 @@ 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): +def get_dating_form(model, dating_model, url_name): + def _dating_form(request, pk, dating_pk=None, current_right=None): try: item = model.objects.get(pk=pk) except model.DoesNotExist: @@ -207,6 +207,18 @@ def get_dating_form(model, dating_model, url_name, action='add'): elif current_right: if not request.user.has_perm(current_right): raise PermissionDenied() + initial = {} + if dating_pk: + try: + dating_item = dating_model.objects.get(pk=dating_pk) + initial = dict( + (attr, getattr(dating_item, attr)) + for attr in [ + "pk", "reference", "period_id", "start_date", "end_date", + "quality_id", "dating_type_id", "precise_dating"] + ) + except dating_model.DoesNotExist: + raise Http404() if request.method == 'POST': form = forms.QADating(request.POST, dating_model=dating_model, current_item=item) @@ -215,9 +227,12 @@ def get_dating_form(model, dating_model, url_name, action='add'): return HttpResponseRedirect(reverse("success")) else: form = forms.QADating(dating_model=dating_model, - current_item=item) - button_name = _("Add") if action == "add" else _("Modify") - icon = "fa fa-plus" if action == "add" else "fa fa-pencil" + current_item=item, initial=initial) + button_name = _("Add") if not dating_pk else _("Modify") + icon = "fa fa-plus" if not dating_pk else "fa fa-pencil" + url_args = [pk] + if dating_pk: + url_args.append(dating_pk) return render( request, "ishtar/forms/qa_form.html", { @@ -225,9 +240,9 @@ def get_dating_form(model, dating_model, url_name, action='add'): "icon": icon, "action_name": button_name, "form": form, - "url": reverse(url_name, args=[pk]) + "url": reverse(url_name, args=url_args) }) - return _dating_add + return _dating_form context_record_dating_add = get_dating_form( @@ -235,6 +250,11 @@ context_record_dating_add = get_dating_form( ) +context_record_dating_modify = get_dating_form( + models.ContextRecord, models.ContextRecordDating, "context-record-dating-modify" +) + + class GenerateRelationImage(IshtarMixin, LoginRequiredMixin, RedirectView): upper_model = models.Operation model = models.ContextRecord |
