diff options
author | Étienne Loks <etienne.loks@iggdrasil.net> | 2020-09-04 16:22:44 +0200 |
---|---|---|
committer | Étienne Loks <etienne.loks@iggdrasil.net> | 2021-02-28 12:15:21 +0100 |
commit | de0dff09b8dff23dd50922ba5afe61abcefe5557 (patch) | |
tree | cdf909dfa35be53ca15e5391e4baa97e455b00ae /ishtar_common/views.py | |
parent | 7ca549609edbe1c833abd929a9552c1339b2e4cf (diff) | |
download | Ishtar-de0dff09b8dff23dd50922ba5afe61abcefe5557.tar.bz2 Ishtar-de0dff09b8dff23dd50922ba5afe61abcefe5557.zip |
Documents: COinS and Dublin Core tags
Diffstat (limited to 'ishtar_common/views.py')
-rw-r--r-- | ishtar_common/views.py | 49 |
1 files changed, 33 insertions, 16 deletions
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 |