summaryrefslogtreecommitdiff
path: root/ishtar_common/views.py
diff options
context:
space:
mode:
Diffstat (limited to 'ishtar_common/views.py')
-rw-r--r--ishtar_common/views.py55
1 files changed, 54 insertions, 1 deletions
diff --git a/ishtar_common/views.py b/ishtar_common/views.py
index 4c83fd818..5f175c186 100644
--- a/ishtar_common/views.py
+++ b/ishtar_common/views.py
@@ -77,6 +77,7 @@ from ishtar_common.models_common import QuickAction
from ishtar_common.templatetags.link_to_window import simple_link_to_window
from ishtar_common.utils_migrations import HOMEPAGE_TITLE
from ishtar_common.utils import (
+ BSMessage,
clean_session_cache,
CSV_OPTIONS,
get_current_item_keys,
@@ -1236,10 +1237,12 @@ ACTION_MODEL_DICT = {
"archaeological_operations", "AdministrativeAct"),
'file': apps.get_model("archaeological_files", "File"),
'site': apps.get_model("archaeological_operations", "ArchaeologicalSite"),
+ 'contextrecord': apps.get_model("archaeological_context_records", "ContextRecord"),
'record': apps.get_model("archaeological_context_records", "ContextRecord"),
'find': apps.get_model("archaeological_finds", "Find"),
'treatment': apps.get_model("archaeological_finds", "Treatment"),
'treatmentfle': apps.get_model("archaeological_finds", "TreatmentFile"),
+ 'treatmentfile': apps.get_model("archaeological_finds", "TreatmentFile"),
'exhibition': apps.get_model("archaeological_finds", "Exhibition"),
'container': apps.get_model("archaeological_warehouse", "Container"),
'warehouse': apps.get_model("archaeological_warehouse", "Warehouse"),
@@ -3160,6 +3163,9 @@ class QAItemForm(IshtarMixin, LoginRequiredMixin, FormView):
action_name = None
permissions = []
+ def get_permissions(self):
+ return self.permissions
+
def get_quick_action(self):
quick_action = self.model.get_quick_action_by_url(self.base_url)
if quick_action:
@@ -3169,7 +3175,7 @@ class QAItemForm(IshtarMixin, LoginRequiredMixin, FormView):
url=self.base_url,
icon_class=self.icon,
text=self.page_name,
- rights=self.permissions
+ rights=self.get_permissions()
)
def pre_dispatch(self, request, *args, **kwargs):
@@ -3401,6 +3407,53 @@ class QADocumentDuplicateFormView(QAItemForm):
return data
+class QADocumentUnlink(QAItemForm):
+ model = models.Document
+ page_name = _("Unlink")
+ form_class = forms.QAForm
+ base_url = "document-qa-unlink"
+ icon = "fa fa-chain-broken"
+ action_name = _("Unlink")
+
+ def pre_dispatch(self, request, *args, **kwargs):
+ related_model = kwargs.get("related_model")
+ # model, related_id
+ if related_model not in ACTION_MODEL_DICT:
+ raise Http404()
+ related_model = ACTION_MODEL_DICT[related_model]
+ related_id = kwargs.get("related_id")
+ try:
+ self.related_item = related_model.objects.get(pk=related_id)
+ except related_model.DoesNotExist:
+ raise Http404()
+ return super().pre_dispatch(request, *args, **kwargs)
+
+ def get_permissions(self):
+ rel_meta = self.related_item.__class__._meta
+ return [
+ f"{rel_meta.app_label}.change_{rel_meta.model_name}",
+ f"{rel_meta.app_label}.change_own_{rel_meta.model_name}",
+ ]
+
+ def get_form_kwargs(self):
+ kwargs = super().get_form_kwargs()
+ kwargs["confirm"] = True
+ return kwargs
+
+ def form_valid(self, form):
+ self.related_item.documents.remove(self.items[0])
+ return HttpResponseRedirect(reverse("success"))
+
+ def get_context_data(self, **kwargs):
+ data = super().get_context_data(**kwargs)
+ data["messages"] = [
+ BSMessage(
+ str(_('Unlink document "{}" from this item.')).format(self.items[0]),
+ "info", "", no_dismiss=True)
+ ]
+ return data
+
+
class QADocumentPackagingFormView(QAItemForm):
template_name = "ishtar/forms/qa_document_packaging.html"
model = models.Document