Added an organizer overview page

This commit is contained in:
Raphael Michel
2015-10-22 17:45:19 +02:00
parent 0b4cae07c4
commit 232c42b265
23 changed files with 400 additions and 92 deletions

View File

@@ -1,11 +1,14 @@
from django.conf.urls import include, url
from pretix.presale.urls import event_patterns, locale_patterns
from pretix.presale.urls import (
event_patterns, locale_patterns, organizer_patterns,
)
from pretix.urls import common_patterns
presale_patterns_main = [
url(r'', include(locale_patterns + [
url(r'^(?P<organizer>[^/]+)/(?P<event>[^/]+)/', include(event_patterns))
url(r'^(?P<organizer>[^/]+)/(?P<event>[^/]+)/', include(event_patterns)),
url(r'^(?P<organizer>[^/]+)/', include(organizer_patterns))
], namespace='presale'))
]

View File

@@ -1,12 +1,14 @@
from django.conf.urls import include, url
from pretix.presale.urls import event_patterns, locale_patterns
from pretix.presale.urls import (
event_patterns, locale_patterns, organizer_patterns,
)
from pretix.urls import common_patterns
print(event_patterns)
presale_patterns = [
url(r'', include(locale_patterns + [
url(r'^(?P<event>[^/]+)/', include(event_patterns))
url(r'^(?P<event>[^/]+)/', include(event_patterns)),
url(r'', include(organizer_patterns))
], namespace='presale'))
]

View File

@@ -43,7 +43,7 @@ def eventurl(parser, token):
"""
Similar to {% url %} in the same way that eventreverse() is similar to reverse().
Takes an event object, an url name and optional keyword arguments
Takes an event or organizer object, an url name and optional keyword arguments
"""
bits = token.split_contents()
if len(bits) < 3:

View File

@@ -3,12 +3,14 @@ from urllib.parse import urljoin, urlsplit
from django.conf import settings
from django.core.urlresolvers import reverse
from pretix.base.models import Event, Organizer
def get_domain(event):
c = event.organizer.get_cache()
def get_domain(organizer):
c = organizer.get_cache()
domain = c.get('domain')
if domain is None:
domains = event.organizer.domains.all()
domains = organizer.domains.all()
domain = domains[0].domainname if domains else None
c.set('domain', domain or 'none')
elif domain == 'none':
@@ -16,16 +18,24 @@ def get_domain(event):
return domain
def eventreverse(event, name, kwargs=None):
def eventreverse(obj, name, kwargs=None):
"""
Works similar to django.core.urlresolvers.reverse but takes into account that some
organizers might have their own (sub)domain instead of a subpath.
:param obj: An event or organizer
"""
from pretix.multidomain import subdomain_urlconf, maindomain_urlconf
kwargs = kwargs or {}
kwargs['event'] = event.slug
domain = get_domain(event)
if isinstance(obj, Event):
kwargs['event'] = obj.slug
organizer = obj.organizer
elif isinstance(obj, Organizer):
organizer = obj
else:
raise TypeError('obj should be Event or Organizer')
domain = get_domain(organizer)
if domain:
if 'organizer' in kwargs:
del kwargs['organizer']
@@ -36,12 +46,12 @@ def eventreverse(event, name, kwargs=None):
domain = '%s:%d' % (domain, siteurlsplit.port)
return urljoin('%s://%s' % (siteurlsplit.scheme, domain), path)
kwargs['organizer'] = event.organizer.slug
kwargs['organizer'] = organizer.slug
return reverse(name, kwargs=kwargs, urlconf=maindomain_urlconf)
def build_absolute_uri(event, urlname, kwargs=None):
reversedurl = eventreverse(event, urlname, kwargs)
def build_absolute_uri(obj, urlname, kwargs=None):
reversedurl = eventreverse(obj, urlname, kwargs)
if '://' in reversedurl:
return reversedurl
return urljoin(settings.SITE_URL, reversedurl)