From 1a4af35045908e4285dc18bce3733f069fada220 Mon Sep 17 00:00:00 2001 From: Étienne Loks Date: Fri, 4 Sep 2020 16:22:44 +0200 Subject: Documents: COinS and Dublin Core tags --- ishtar_common/views.py | 49 +++++++++++++++++++++++++++++++++---------------- 1 file changed, 33 insertions(+), 16 deletions(-) (limited to 'ishtar_common/views.py') diff --git a/ishtar_common/views.py b/ishtar_common/views.py index 160653bbb..96c292c43 100644 --- a/ishtar_common/views.py +++ b/ishtar_common/views.py @@ -1120,22 +1120,6 @@ class ProfileEdit(LoginRequiredMixin, FormView): return HttpResponseRedirect(self.get_success_url()) -class DisplayItemView(IshtarMixin, TemplateView): - template_name = 'ishtar/display_item.html' - - def dispatch(self, request, *args, **kwargs): - if not self.request.user.is_authenticated: - return redirect_to_login(reverse("display-item", kwargs=kwargs)) - return super(DisplayItemView, self).dispatch(request, *args, **kwargs) - - def get_context_data(self, *args, **kwargs): - data = super(DisplayItemView, self).get_context_data(*args, **kwargs) - pk = str(kwargs.get('pk')) + '/' - item_url = '/show-' + kwargs.get('item_type') - data['show_url'] = item_url + "/" + pk - return data - - class DynamicModelView: def get_model(self, kwargs): app = kwargs.get('app').replace('-', "_") @@ -2466,3 +2450,36 @@ class QADocumentPackagingFormView(QAItemForm): def form_valid(self, form): form.save(self.items, self.request.user) return HttpResponseRedirect(reverse("success")) + + +class DisplayItemView(IshtarMixin, TemplateView): + template_name = 'ishtar/display_item.html' + SHOW_VIEWS = { + 'document': show_document + } + ASSOCIATED_MODEL = { + "document": models.Document + } + + def dispatch(self, request, *args, **kwargs): + if not self.request.user.is_authenticated: + return redirect_to_login(reverse("display-item", kwargs=kwargs)) + return super(DisplayItemView, self).dispatch(request, *args, **kwargs) + + def get_context_data(self, *args, **kwargs): + data = super(DisplayItemView, self).get_context_data(*args, **kwargs) + pk = kwargs.get('pk') + item_type = kwargs.get('item_type') + if item_type in self.SHOW_VIEWS: + data["view_content"] = self.SHOW_VIEWS[item_type]( + self.request, pk).content + if item_type in self.ASSOCIATED_MODEL and \ + hasattr(self.ASSOCIATED_MODEL[item_type], "extra_meta"): + model = self.ASSOCIATED_MODEL[item_type] + try: + data["extra_meta"] = model.objects.get(pk=pk).extra_meta + except model.DoesNotExist: + pass + else: + data['show_url'] = "/show-{}/{}/".format(item_type, pk) + return data -- cgit v1.2.3