diff options
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 | 
