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))