Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
18 changes: 10 additions & 8 deletions google_analytics/templatetags/analytics.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
from django.contrib.sites.models import Site

from django.template import Context, loader
import re


register = template.Library()
Expand All @@ -20,23 +21,24 @@ def do_get_analytics(parser, token):
code = None
else:
raise template.TemplateSyntaxError, "%r cannot take more than one argument" % tag_name


if not code and settings.GOOGLE_ANALYTICS_KEY:
code = settings.GOOGLE_ANALYTICS_KEY

if not code:
current_site = Site.objects.get_current()
else:
if not (code[0] == code[-1] and code[0] in ('"', "'")):
raise template.TemplateSyntaxError, "%r tag's argument should be in quotes" % tag_name
code = code[1:-1]
code = re.sub(r'^["\']|["\']$', '', code)
current_site = None

return AnalyticsNode(current_site, code, template_name)

class AnalyticsNode(template.Node):
def __init__(self, site=None, code=None, template_name='google_analytics/analytics_template.html'):
self.site = site
self.code = code
self.template_name = template_name

def render(self, context):
content = ''
if self.site:
Expand All @@ -49,7 +51,7 @@ def render(self, context):
code = self.code
else:
return ''

if code.strip() != '':
t = loader.get_template(self.template_name)
c = Context({
Expand All @@ -61,6 +63,6 @@ def render(self, context):
return t.render(c)
else:
return ''

register.tag('analytics', do_get_analytics)
register.tag('analytics_async', do_get_analytics)