mirror of
https://github.com/pretix/pretix.git
synced 2026-05-07 15:34:02 +00:00
Add new template tag abseventurl
This commit is contained in:
@@ -6,12 +6,15 @@ from django.template.defaulttags import URLNode
|
|||||||
from django.utils.encoding import smart_text
|
from django.utils.encoding import smart_text
|
||||||
from django.utils.html import conditional_escape
|
from django.utils.html import conditional_escape
|
||||||
|
|
||||||
|
from pretix.multidomain.urlreverse import build_absolute_uri
|
||||||
|
|
||||||
register = template.Library()
|
register = template.Library()
|
||||||
|
|
||||||
|
|
||||||
class EventURLNode(URLNode):
|
class EventURLNode(URLNode):
|
||||||
def __init__(self, event, view_name, kwargs, asvar):
|
def __init__(self, event, view_name, kwargs, asvar, absolute):
|
||||||
self.event = event
|
self.event = event
|
||||||
|
self.absolute = absolute
|
||||||
super().__init__(view_name, [], kwargs, asvar)
|
super().__init__(view_name, [], kwargs, asvar)
|
||||||
|
|
||||||
def render(self, context):
|
def render(self, context):
|
||||||
@@ -24,7 +27,10 @@ class EventURLNode(URLNode):
|
|||||||
event = self.event.resolve(context)
|
event = self.event.resolve(context)
|
||||||
url = ''
|
url = ''
|
||||||
try:
|
try:
|
||||||
url = eventreverse(event, view_name, kwargs=kwargs)
|
if self.absolute:
|
||||||
|
url = build_absolute_uri(event, view_name, kwargs=kwargs)
|
||||||
|
else:
|
||||||
|
url = eventreverse(event, view_name, kwargs=kwargs)
|
||||||
except NoReverseMatch:
|
except NoReverseMatch:
|
||||||
if self.asvar is None:
|
if self.asvar is None:
|
||||||
raise
|
raise
|
||||||
@@ -39,7 +45,7 @@ class EventURLNode(URLNode):
|
|||||||
|
|
||||||
|
|
||||||
@register.tag
|
@register.tag
|
||||||
def eventurl(parser, token):
|
def eventurl(parser, token, absolute=False):
|
||||||
"""
|
"""
|
||||||
Similar to {% url %} in the same way that eventreverse() is similar to reverse().
|
Similar to {% url %} in the same way that eventreverse() is similar to reverse().
|
||||||
|
|
||||||
@@ -68,4 +74,14 @@ def eventurl(parser, token):
|
|||||||
else:
|
else:
|
||||||
raise TemplateSyntaxError('Event urls only have keyword arguments.')
|
raise TemplateSyntaxError('Event urls only have keyword arguments.')
|
||||||
|
|
||||||
return EventURLNode(event, viewname, kwargs, asvar)
|
return EventURLNode(event, viewname, kwargs, asvar, absolute)
|
||||||
|
|
||||||
|
|
||||||
|
@register.tag
|
||||||
|
def abseventurl(parser, token):
|
||||||
|
"""
|
||||||
|
Similar to {% url %} in the same way that eventreverse() is similar to reverse().
|
||||||
|
|
||||||
|
Returns an absolute URL.
|
||||||
|
"""
|
||||||
|
return eventurl(parser, token, absolute=True)
|
||||||
|
|||||||
Reference in New Issue
Block a user