diff options
author | Étienne Loks <etienne.loks@iggdrasil.net> | 2024-11-28 17:58:55 +0100 |
---|---|---|
committer | Étienne Loks <etienne.loks@iggdrasil.net> | 2025-02-19 14:45:56 +0100 |
commit | d0760b4da854e1dadb4ff130468a4c6d185b1abc (patch) | |
tree | 464aab890c5d8ea8b51f6ad3558446b3c8018036 /archaeological_finds/views.py | |
parent | f10b03c55ece933e4277cdf1e7d4acfba9fdd7ed (diff) | |
download | Ishtar-d0760b4da854e1dadb4ff130468a4c6d185b1abc.tar.bz2 Ishtar-d0760b4da854e1dadb4ff130468a4c6d185b1abc.zip |
✨ exhibition: forms/sheets
Diffstat (limited to 'archaeological_finds/views.py')
-rw-r--r-- | archaeological_finds/views.py | 96 |
1 files changed, 86 insertions, 10 deletions
diff --git a/archaeological_finds/views.py b/archaeological_finds/views.py index 777b064c5..52085f2ef 100644 --- a/archaeological_finds/views.py +++ b/archaeological_finds/views.py @@ -27,11 +27,11 @@ from django.http import HttpResponseRedirect, HttpResponse, Http404 from django.shortcuts import redirect from django.urls import reverse -from ishtar_common.utils import ugettext_lazy as _ +from ishtar_common.utils import ugettext_lazy as _, BSMessage from django.views.generic import TemplateView -from django.views.generic.edit import CreateView, FormView +from django.views.generic.edit import CreateView, FormView, UpdateView -from ishtar_common.models import IshtarUser, get_current_profile +from ishtar_common.models import get_current_profile, IshtarUser, QuickAction from archaeological_operations.models import AdministrativeAct, Operation from archaeological_context_records.models import ContextRecord from archaeological_finds import models @@ -142,12 +142,21 @@ get_treatmentfile = get_item( search_form=forms.TreatmentFileSelect, ) +show_exhibition = show_item(models.Exhibition, "exhibition") +revert_exhibition = revert_item(models.Exhibition) get_exhibition = get_item( - models.TreatmentFile, - "get_treatmentfile", - "treatmentfile", - search_form=forms.TreatmentFileSelect, - base_request={"type__is_exhibition": True}, + models.Exhibition, "get_exhibition", "exhibition", + search_form=forms_treatments.ExhibitionSelect +) +display_exhibition = display_item(models.Exhibition) + +autocomplete_exhibition = get_autocomplete_item(model=models.Exhibition) + +get_exhibition = get_item( + models.Exhibition, + "get_exhibition", + "exhibition", + search_form=forms_treatments.ExhibitionSelect, ) get_administrativeacttreatmentfile = get_item( @@ -553,6 +562,7 @@ class SelectItemsInBasket(OwnBasket, IshtarMixin, LoginRequiredMixin, TemplateVi context["form"] = forms.MultipleFindFormSelectionWarehouseModule() else: context["form"] = forms.MultipleFindFormSelection() + context["back_url"] = self.request.GET.get("back_url", None) context["add_url"] = reverse("add_iteminbasket") context["list_url"] = reverse( "list_iteminbasket", kwargs={"pk": self.basket.pk} @@ -630,12 +640,40 @@ get_downstreamtreatment = get_item( ) -exhibition_wizard = wizards.TreatmentFileSearch.as_view( +exhibition_wizard = wizards.ExhibitionSearch.as_view( [("search", forms_treatments.ExhibitionFormSelection)], - label=_("Exhibition: search"), + label=_("Exhibition"), url_name="exhibition-search", ) + +class ExhibitionFormMixin(IshtarMixin, LoginRequiredMixin): + form_class = forms_treatments.ExhibitionForm + template_name = "ishtar/forms/base_form.html" + model = models.Exhibition + + def get_form_kwargs(self): + kwargs = super().get_form_kwargs() + kwargs["user"] = self.request.user + return kwargs + + def get_success_url(self): + return f"{reverse('exhibition-search')}?open_item={self.object.pk}" + + +class ExhibitionCreateView(ExhibitionFormMixin, CreateView): + page_name = _("Exhibition creation") + + def get_context_data(self, **kwargs): + data = super().get_context_data(**kwargs) + # data["extra_form_modals"] = self.form_class.extra_form_modals + return data + + +class ExhibitionEditView(ExhibitionFormMixin, UpdateView): + page_name = _("Exhibition modification") + + treatment_wizard_steps = [ ("selecfind-treatment_creation", forms.UpstreamFindFormSelection), ("file-treatment_creation", forms.TreatmentFormFileChoice), @@ -1368,3 +1406,41 @@ def get_geo_items(request, current_right=None): geo = item.get_geo_items() return HttpResponse(json.dumps(geo).encode("utf-8")) + +class QAExhibitionLoanFormView(QAItemForm): + model = models.Exhibition + form_class = forms_treatments.QANewExhibitionLoanForm + page_name = _("Add loan for exhibition") + modal_size = "large" + base_url = "exhibition-qa-add-loan" + icon = "fa fa-plus" + action_name = _("Create") + + def get_quick_action(self): + return QuickAction( + url=self.base_url, + icon_class=self.icon, + text=self.page_name, + rights=[ + "archaeological_finds.add_treatmentfile", + ], + ) + + def get_form_kwargs(self): + kwargs = super().get_form_kwargs() + kwargs["user"] = self.request.user + return kwargs + + def get_context_data(self, **kwargs): + data = super().get_context_data(**kwargs) + if not self.items[0].associated_basket_id: + data["messages"] = [ + BSMessage( + _("No basket associted to the exhibition."), + "danger", "fa fa-exclamation-triangle") + ] + return data + + def form_valid(self, form): + form.save() + return HttpResponseRedirect(reverse("success")) |