summaryrefslogtreecommitdiff
path: root/showcase/views.py
diff options
context:
space:
mode:
Diffstat (limited to 'showcase/views.py')
-rw-r--r--showcase/views.py30
1 files changed, 30 insertions, 0 deletions
diff --git a/showcase/views.py b/showcase/views.py
new file mode 100644
index 0000000..7134830
--- /dev/null
+++ b/showcase/views.py
@@ -0,0 +1,30 @@
+from django.http import Http404, HttpResponse
+from django.template import TemplateDoesNotExist
+from django.template.loader import get_template
+from django.utils.translation import ugettext_lazy as _
+
+from .models import ShowCase
+
+
+def display_item(request, slug, number):
+ q = ShowCase.objects.filter(slug=slug)
+ if not q.count():
+ return Http404(_("Unknown source."))
+ showcase = q.all()[0]
+ source = showcase.external_source
+ template_name = "showcase/item-{}.html".format(source.source_type.slug)
+ try:
+ template = get_template(template_name)
+ except TemplateDoesNotExist:
+ raise Http404(
+ str(_("Template {} is not defined. Ask your administrator to "
+ "define a template for this source type.")).format(
+ template_name))
+ data = source.get_item(int(number))
+ if not data:
+ raise Http404(
+ str(_("Data unavailable"))
+ )
+ data["showcase"] = slug
+ return HttpResponse(template.render(data, request))
+