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)
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(),
'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)])
{% 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">