From 7755e493f4f675d58e2520fda2b7775d4f4b25d5 Mon Sep 17 00:00:00 2001 From: Étienne Loks Date: Tue, 30 Apr 2024 15:39:57 +0200 Subject: ✨ Operation - quick action: add administrative act (refs #5925) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- archaeological_operations/models.py | 11 +++++++++++ archaeological_operations/urls.py | 5 +++++ archaeological_operations/views.py | 18 ++++++++++++++++++ archaeological_operations/wizards.py | 6 ++++++ 4 files changed, 40 insertions(+) (limited to 'archaeological_operations') diff --git a/archaeological_operations/models.py b/archaeological_operations/models.py index ea4b6c244..eeee9e8aa 100644 --- a/archaeological_operations/models.py +++ b/archaeological_operations/models.py @@ -1969,6 +1969,17 @@ class Operation( True, ), ] + end + if profile.files and self.can_do(request, "add_administrativeact"): + actions += [ + ( + reverse("operation-add-adminact", args=[self.pk]), + _("Add associated administrative act"), + "fa fa-plus", + _("admin. act"), + "", + False, + ), + ] if can_edit_operation: actions += [ ( diff --git a/archaeological_operations/urls.py b/archaeological_operations/urls.py index 7e2b71589..05c03bc51 100644 --- a/archaeological_operations/urls.py +++ b/archaeological_operations/urls.py @@ -74,6 +74,11 @@ urlpatterns = [ ), name="operation_search", ), + url( + r"^operation-add-adminact/(?P[0-9-]+)/$", + check_rights(["add_administrativeact"])(views.operation_adminact_add), + name="operation-add-adminact", + ), url( r"operation_creation/(?P.+)?$", check_rights(["add_operation", "add_own_operation"])( diff --git a/archaeological_operations/views.py b/archaeological_operations/views.py index 8fa7e08c0..08a1ee05c 100644 --- a/archaeological_operations/views.py +++ b/archaeological_operations/views.py @@ -720,6 +720,24 @@ def operation_administrativeactop_delete(request, pk): return redirect(reverse(wizard_url, kwargs={"step": "final-" + wizard_url})) +def operation_adminact_add(request, pk, current_right=None): + try: + models.Operation.objects.get(pk=pk) + except models.Operation.DoesNotExist: + raise Http404() + operation_administrativeactop_wizard(request) + + wizards.OperationAdministrativeActWizard.session_set_value( + request, "selec-operation_administrativeactop", "pk", pk, reset=True + ) + return redirect( + reverse( + "operation_administrativeactop", + kwargs={"step": "administrativeact-operation_administrativeactop"}, + ) + ) + + administrativact_register_wizard = SearchWizard.as_view( [ ( diff --git a/archaeological_operations/wizards.py b/archaeological_operations/wizards.py index 402219e41..581652c8f 100644 --- a/archaeological_operations/wizards.py +++ b/archaeological_operations/wizards.py @@ -350,6 +350,12 @@ class OperationAdministrativeActWizard(OperationWizard): res = render(self.request, "ishtar/wizard/wizard_done.html", dct) return res + def get_form_initial(self, step, data=None): + if not self.edit: + return {} + initial = super().get_form_initial(step) + return initial + class OperationEditAdministrativeActWizard(OperationAdministrativeActWizard): model = models.AdministrativeAct -- cgit v1.2.3