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.py31
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