funding top bar without ssi
authorJan Szejko <jan.szejko@gmail.com>
Mon, 25 Apr 2016 13:39:57 +0000 (15:39 +0200)
committerJan Szejko <jan.szejko@gmail.com>
Mon, 25 Apr 2016 13:40:09 +0000 (15:40 +0200)
src/funding/templatetags/funding_tags.py
src/funding/views.py
src/wolnelektury/templates/base/superbase.html

index 5dbeec6..851e0ce 100755 (executable)
@@ -5,16 +5,23 @@
 from django import template
 from ssify import ssi_variable
 from ssify.utils import ssi_cache_control
+
 from ..models import Offer
 from ..utils import sanitize_payment_title
+from ..views import offer_bar
 
 register = template.Library()
 
 
 @ssi_variable(register, patch_response=[ssi_cache_control(must_revalidate=True, max_age=0)])
-def current_offer(request):
+def current_offer(request=None):
     offer = Offer.current()
     return offer.pk if offer is not None else None
 
 
+@register.inclusion_tag('funding/includes/funding.html')
+def funding_top_bar():
+    return offer_bar(Offer.current(), link=True, closeable=True, add_class="funding-top-header")
+
+
 register.filter(sanitize_payment_title)
index ae0b1bb..18000c0 100644 (file)
@@ -158,11 +158,12 @@ class DisableNotifications(TemplateView):
         return redirect(self.request.get_full_path())
 
 
-def offer_bar(request, pk, link=False, closeable=False, show_title=True, show_title_calling=True, add_class=""):
-    offer = get_object_or_404(Offer, pk=pk)
-    offer_sum = offer.sum()
-
-    return render(request, "funding/includes/funding.html", {
+def offer_bar(offer, link=False, closeable=False, show_title=True, show_title_calling=True, add_class=""):
+    if offer:
+        offer_sum = offer.sum()
+    else:
+        return {}
+    return {
         'offer': offer,
         'sum': offer_sum,
         'is_current': offer.is_current(),
@@ -174,22 +175,28 @@ def offer_bar(request, pk, link=False, closeable=False, show_title=True, show_ti
         'show_title': show_title,
         'show_title_calling': show_title_calling,
         'add_class': add_class,
-    })
+    }
+
+
+def render_offer_bar(request, pk, link=False, closeable=False, show_title=True, show_title_calling=True, add_class=""):
+    offer = get_object_or_404(Offer, pk=pk)
+    return render(request, "funding/includes/funding.html",
+                  offer_bar(offer, link, closeable, show_title, show_title_calling, add_class))
 
 
 @ssi_included(patch_response=[ssi_cache_control(must_revalidate=True)])
 def top_bar(request, pk):
-    return offer_bar(request, pk, link=True, closeable=True, add_class="funding-top-header")
+    return render_offer_bar(request, pk, link=True, closeable=True, add_class="funding-top-header")
 
 
 @ssi_included(patch_response=[ssi_cache_control(must_revalidate=True)])
 def list_bar(request, pk):
-    return offer_bar(request, pk, link=True, show_title_calling=False)
+    return render_offer_bar(request, pk, link=True, show_title_calling=False)
 
 
 @ssi_included(patch_response=[ssi_cache_control(must_revalidate=True)])
 def detail_bar(request, pk):
-    return offer_bar(request, pk, show_title=False)
+    return render_offer_bar(request, pk, show_title=False)
 
 
 @ssi_included(patch_response=[ssi_cache_control(must_revalidate=True)])
index ec523e5..f30dfb3 100644 (file)
@@ -7,6 +7,8 @@
     {% load piwik_tags %}
     {% load ssi_include ssi_csrf_token from ssify %}
     {% load user_username user_is_staff from common_tags %}
+    {% load cache %}
+    {% get_current_language as LANGUAGE_CODE %}
     <head>
       <meta charset="utf-8">
       <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
       {% block bodycontent %}
 
         {% if not funding_no_show_current %}
-          {% current_offer as current_offer %}
-          {{ current_offer.if }}
-          {% ssi_include 'funding_top_bar' pk=current_offer %}
-          {{ current_offer.endif }}
+          {% cache 120 funding_top_bar LANGUAGE_CODE %}
+            {% funding_top_bar %}
+          {% endcache %}
         {% endif %}
 
         <div id="whole-header">