diff options
Diffstat (limited to 'ishtar_common/views.py')
| -rw-r--r-- | ishtar_common/views.py | 31 | 
1 files changed, 28 insertions, 3 deletions
| diff --git a/ishtar_common/views.py b/ishtar_common/views.py index 61bae69e2..5f5b0be42 100644 --- a/ishtar_common/views.py +++ b/ishtar_common/views.py @@ -19,12 +19,14 @@  import csv  import datetime +import importlib  import json  import logging -import importlib +import os +import unicodecsv  import unicodedata -import unicodecsv +from django.apps import apps  from django.conf import settings  from django.contrib.auth import logout  from django.contrib.auth.decorators import login_required @@ -38,7 +40,7 @@ from django.http import HttpResponse, Http404, HttpResponseRedirect, \  from django.shortcuts import redirect, render  from django.utils.decorators import method_decorator  from django.utils.translation import ugettext, ugettext_lazy as _ -from django.views.generic import ListView, UpdateView, TemplateView +from django.views.generic import ListView, TemplateView, View  from django.views.generic.edit import CreateView, DeleteView, FormView, \      UpdateView  from extra_views import ModelFormSetView @@ -1010,6 +1012,29 @@ class DisplayItemView(IshtarMixin, LoginRequiredMixin, TemplateView):          return data +class QRCodeView(IshtarMixin, LoginRequiredMixin, View): +    def get(self, request, *args, **kwargs): +        model_name = "".join( +            [part.capitalize() for part in kwargs.get('model_name').split('-')] +        ) +        app = kwargs.get('app').replace('-', "_") +        try: +            model = apps.get_model(app, model_name) +            item = model.objects.get(pk=kwargs.get("pk")) +            assert hasattr(item, 'qrcode') +        except (LookupError, model.DoesNotExist, AssertionError): +            raise Http404() + +        if not item.qrcode or not item.qrcode.name: +            item.generate_qrcode(request=self.request) + +        if not item.qrcode or not item.qrcode.name:  # generation has failed +            raise Http404() + +        with open(settings.MEDIA_ROOT + os.sep + item.qrcode.name, "rb") as f: +            return HttpResponse(f.read(), content_type="image/png") + +  class GlobalVarEdit(IshtarMixin, AdminLoginRequiredMixin, ModelFormSetView):      template_name = 'ishtar/formset.html'      model = models.GlobalVar | 
