import json
import re
import time
-import urlparse
-import urllib2
import uuid
from django import template
from django.conf import settings
from django.core.urlresolvers import reverse
from django.db.models.query import QuerySet
+from django.utils.encoding import force_text
+from django.utils.http import quote
+from django.utils.six.moves.urllib import parse as urlparse
+
from datetime import datetime, timedelta
from emissions.models import Emission, Episode, NewsItem, SoundFile, Focus
from emissions.utils import period_program
+from panikombo.models import Topik
+
from panikweb import utils
from panikweb import search
return zip(a, b)
@register.inclusion_tag('includes/audio.html', takes_context=True)
-def audio(context, sound=None):
+def audio(context, sound=None, embed=False, display_fragment_name=False):
return {
'episode': context.get('episode'),
- 'sound': sound
+ 'sound': sound,
+ 'display_fragment_name': display_fragment_name,
+ 'embed': embed,
}
@register.inclusion_tag('listen/nav.html', takes_context=True)
'diffusions': context.get('diffusions'),
'soundfiles': soundfiles,
'date': date,
+ 'topiks': context.get('topiks'),
}
@register.inclusion_tag('emissions/detail.html', takes_context=True)
@register.inclusion_tag('includes/metaNav.html', takes_context=True)
def metanav(context, active=None):
+ try:
+ request_path = context['request'].path
+ except KeyError:
+ # a context without 'requests' may happen when rendering error pages
+ request_path = 'xxx'
+ section = 'About'
+ if request_path == '/':
+ section = 'Home'
+ elif request_path.startswith('/actus/'):
+ section = 'News'
+ elif request_path.startswith('/sons/'):
+ section = 'Listen'
+ elif request_path.startswith('/topiks'):
+ section = 'Topiks'
+ elif request_path.startswith('/emissions') or request_path == '/grille' or request_path == '/programme/':
+ section = 'Emissions'
+ elif request_path == '/recherche/':
+ section = 'Search'
return {
'LANGUAGE_CODE': context.get('LANGUAGE_CODE'),
- 'sectionName': context.get('sectionName')
+ 'sectionName': section,
}
@register.inclusion_tag('includes/week.html')
x[0] == 'selected_facets' and x[1] == facet)]
query = '&'.join(['%s=%s' % x for x in query_string])
url = urlparse.urlunsplit([scheme, netloc, path, query, None])
- return re.sub(r'&page=\d+', '', url)
+ return force_text(re.sub(r'&page=\d+', '', url), 'utf-8')
@register.filter
def remove_tag_facet(url, facet):
def append_facet(facet_id, url, facet):
- facet = urllib2.quote(facet.encode('utf-8'), safe='')
+ facet = quote(facet.encode('utf-8'), safe='')
if not '?' in url:
url = url + '?'
return re.sub(r'&page=\d+', '', url + '&selected_facets=%s_exact:%s' % (facet_id, facet))
'episode': 'episodes'
}
t = template.loader.get_template('%s/search_result.html' % dir_mapping.get(result.model_name))
- return t.render(template.context.Context({'result': result}, autoescape=context.autoescape))
+ return t.render({'result': result})
@register.inclusion_tag('includes/piwik.html')
sqs = search.MoreLikeThisSearchQuerySet().models(Emission, Episode, NewsItem)
return {'more_like_this': sqs.more_like_this(object)[:12]}
+@register.inclusion_tag('includes/topik.html', takes_context=True)
+def topik(context, topik):
+ return {'topik': topik}
@register.filter
def get_focus_url(object):
return reverse('episode-view', kwargs={
'slug': object.soundfile.episode.slug,
'emission_slug': object.soundfile.episode.emission.slug})
+ if object.page:
+ return object.page.get_online_url()
return ''
@register.filter
def facet_tag(tag):
return tag.name
+
+
+@register.filter
+def image_file(page):
+ try:
+ matching_topik = Topik.objects.get(page=page)
+ return matching_topik.image
+ except Topik.DoesNotExist:
+ pass
+ return None
+
+
+@register.filter
+def set_absolute_urls(text):
+ text = text.replace('src="/', 'src="%s' % settings.WEBSITE_BASE_URL)
+ text = text.replace('href="/', 'href="%s' % settings.WEBSITE_BASE_URL)
+ return text
+
+@register.filter
+def as_absolute_url(url):
+ if url.startswith('/'):
+ url = settings.WEBSITE_BASE_URL + url.lstrip('/')
+ return url