summaryrefslogtreecommitdiff
path: root/archaeological_finds/views.py
diff options
context:
space:
mode:
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
commitd0760b4da854e1dadb4ff130468a4c6d185b1abc (patch)
tree464aab890c5d8ea8b51f6ad3558446b3c8018036 /archaeological_finds/views.py
parentf10b03c55ece933e4277cdf1e7d4acfba9fdd7ed (diff)
downloadIshtar-d0760b4da854e1dadb4ff130468a4c6d185b1abc.tar.bz2
Ishtar-d0760b4da854e1dadb4ff130468a4c6d185b1abc.zip
✨ exhibition: forms/sheets
Diffstat (limited to 'archaeological_finds/views.py')
-rw-r--r--archaeological_finds/views.py96
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"))