Bugfix
[django-migdal.git] / migdal / templatetags / migdal_tags.py
index f370f97..1668e33 100644 (file)
@@ -2,15 +2,25 @@
 # This file is part of PrawoKultury, licensed under GNU Affero GPLv3 or later.
 # Copyright © Fundacja Nowoczesna Polska. See NOTICE for more information.
 #
+from django.shortcuts import get_object_or_404
 from django_comments_xtd.models import XtdComment
 import django_comments as comments
+import django
 from django import template
 from migdal import app_settings
-from migdal.models import Category
+from migdal.models import Category, Entry
 
 register = template.Library()
 
 
+if django.VERSION < (1, 8):
+    # See https://docs.djangoproject.com/en/2.2/releases/1.8/#rendering-templates-loaded-by-get-template-with-a-context
+    context_for_get_template = template.Context
+else:
+    context_for_get_template = lambda x: x
+
+
+
 @register.simple_tag(takes_context=True)
 def entry_begin(context, entry, detail=False):
     t = template.loader.select_template((
@@ -22,7 +32,7 @@ def entry_begin(context, entry, detail=False):
         'object': entry,
         'detail': detail,
     }
-    return t.render(template.Context(context))
+    return t.render(context_for_get_template(context))
 
 
 @register.simple_tag(takes_context=True)
@@ -35,7 +45,7 @@ def entry_short(context, entry):
         'request': context['request'],
         'object': entry,
     }
-    return t.render(template.Context(context))
+    return t.render(context_for_get_template(context))
 
 
 @register.simple_tag(takes_context=True)
@@ -49,7 +59,7 @@ def entry_promobox(context, entry, counter):
         'object': entry,
         'counter': counter,
     }
-    return t.render(template.Context(context))
+    return t.render(context_for_get_template(context))
 
 
 @register.inclusion_tag('migdal/categories.html', takes_context=True)
@@ -73,3 +83,9 @@ def entry_comment_form(entry):
             'form': comments.get_form()(entry),
             'next': entry.get_absolute_url(),
         }
+
+
+@register.simple_tag
+def entry_url(slug, lang='pl'):
+    entry = get_object_or_404(Entry, **{'slug_%s' % lang: slug})
+    return entry.get_absolute_url()