urls.py 5.75 KB
Newer Older
Thom Wiggers's avatar
Thom Wiggers committed
1 2 3 4 5
"""
Thalia's root URL Configuration

The ``urlpatterns`` list routes URLs to views. For more information please see:
https://docs.djangoproject.com/en/dev/topics/http/urls/
Thom Wiggers's avatar
Thom Wiggers committed
6 7

Examples:
Thom Wiggers's avatar
Thom Wiggers committed
8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25

* Function views

  1. Add an import: ``from my_app import views``
  2. Add a URL to ``urlpatterns``: ``url(r'^$', views.home, name='home')``

* Class-based views

  1. Add an import: ``from other_app.views import Home``
  2. Add a URL to urlpatterns: ``url(r'^$', Home.as_view(), name='home')``

* Including another URLconf

  1. Import the ``include()`` function::

        from django.conf.urls import url, include

  2. Add a URL to urlpatterns: ``url(r'^blog/', include('blog.urls'))``
Thom Wiggers's avatar
Thom Wiggers committed
26
"""
Thom Wiggers's avatar
Thom Wiggers committed
27 28 29

# pragma: noqa

Thom Wiggers's avatar
Thom Wiggers committed
30 31 32
import os.path

from django.conf import settings
33
from django.conf.urls import include, url
Thom Wiggers's avatar
Thom Wiggers committed
34
from django.conf.urls.static import static
Thom Wiggers's avatar
Thom Wiggers committed
35
from django.contrib import admin
36
from django.contrib.auth.decorators import login_required
Thom Wiggers's avatar
Thom Wiggers committed
37
from django.contrib.auth.views import LoginView
Thom Wiggers's avatar
Thom Wiggers committed
38
from django.contrib.sitemaps.views import sitemap
39
from django.views.generic import TemplateView
40
from django.views.i18n import JavaScriptCatalog
41

42
from activemembers.sitemaps import sitemap as activemembers_sitemap
Thom Wiggers's avatar
Thom Wiggers committed
43
from documents.sitemaps import sitemap as documents_sitemap
44
from events.sitemaps import sitemap as events_sitemap
Sébastiaan Versteeg's avatar
Sébastiaan Versteeg committed
45
from events.views import AlumniEventsView
Sébastiaan Versteeg's avatar
Sébastiaan Versteeg committed
46 47
from members.sitemaps import sitemap as members_sitemap
from members.views import ObtainThaliaAuthToken
Thom Wiggers's avatar
Thom Wiggers committed
48
from partners.sitemaps import sitemap as partners_sitemap
49
from thabloid.sitemaps import sitemap as thabloid_sitemap
50
from thaliawebsite.forms import AuthenticationForm
Sébastiaan Versteeg's avatar
Sébastiaan Versteeg committed
51
from utils.media.views import (generate_thumbnail, private_media)
Thom Wiggers's avatar
Thom Wiggers committed
52
from . import views
53
from .sitemaps import StaticViewSitemap
Thom Wiggers's avatar
Thom Wiggers committed
54

55 56 57
__all__ = ['urlpatterns']

THALIA_SITEMAP = {
Thom Wiggers's avatar
Thom Wiggers committed
58 59
    'main-static': StaticViewSitemap,
}
60 61 62 63 64 65 66 67 68
THALIA_SITEMAP.update(activemembers_sitemap)
THALIA_SITEMAP.update(members_sitemap)
THALIA_SITEMAP.update(documents_sitemap)
THALIA_SITEMAP.update(thabloid_sitemap)
THALIA_SITEMAP.update(partners_sitemap)
THALIA_SITEMAP.update(events_sitemap)

# pragma pylint: disable=line-too-long
urlpatterns = [  # pylint: disable=invalid-name
Luuk Scholten's avatar
Luuk Scholten committed
69
    url(r'^$', TemplateView.as_view(template_name='index.html'), name='index'),
70
    url(r'^error/', TemplateView.as_view(template_name='403.html'), name='error'),
71
    url(r'^privacy-policy/', TemplateView.as_view(template_name='singlepages/privacy_policy.html'), name='privacy-policy'),
72
    url(r'^event-registration-terms/', TemplateView.as_view(template_name='singlepages/event_registration_terms.html'), name='event-registration-terms'),
Thom Wiggers's avatar
Thom Wiggers committed
73
    url(r'^admin/', admin.site.urls),
Sébastiaan Versteeg's avatar
Sébastiaan Versteeg committed
74
    url(r'^alumni/$', AlumniEventsView.as_view(), name='alumni'),
75
    url(r'^registration/', include('registrations.urls')),
76 77 78
    url(r'^events/', include('events.urls')),
    url(r'^pizzas/', include('pizzas.urls')),
    url(r'^newsletters/', include('newsletters.urls')),
79
    url(r'^nieuwsbrief/', include('newsletters.urls', namespace='newsletters-legacy'),),  # for legacy reasons
80 81
    url(r'^', include([  # 'association' menu
        url(r'^', include('activemembers.urls')),
82 83
        url(r'^merchandise/', include('merchandise.urls')),
        url(r'^documents/', include('documents.urls')),
84
        url(r'^sibling-associations', TemplateView.as_view(template_name='singlepages/sibling_associations.html'), name='sibling-associations'),
85
        url(r'^thabloid/', include('thabloid.urls')),
Joost Rijneveld's avatar
Joost Rijneveld committed
86
    ])),
87
    url(r'^', include([  # 'for members' menu
88
        url(r'^become-active/', login_required(TemplateView.as_view(template_name='singlepages/become_active.html')), name='become-active'),
89
        url(r'^photos/', include('photos.urls')),
90 91
        url(r'^styleguide/$', views.styleguide, name='styleguide'),
        url(r'^styleguide/file/(?P<filename>[\w\-_\.]+)$', views.styleguide_file, name='styleguide-file'),
Joost Rijneveld's avatar
Joost Rijneveld committed
92
    ])),
93
    url(r'^career/', include('partners.urls')),
Joost Rijneveld's avatar
Joost Rijneveld committed
94
    url(r'^contact$', TemplateView.as_view(template_name='singlepages/contact.html'), name='contact'),
95
    url(r'^api/', include([
Thom Wiggers's avatar
Thom Wiggers committed
96
        url(r'wikilogin', views.wiki_login),
97
        url(r'^v1/', include([
98
            url(r'^token-auth', ObtainThaliaAuthToken.as_view()),
99
            url(r'^', include('activemembers.api.urls')),
100 101 102
            url(r'^', include('events.api.urls')),
            url(r'^', include('members.api.urls')),
            url(r'^', include('partners.api.urls')),
103
            url(r'^', include('mailinglists.api.urls')),
Gijs Hendriksen's avatar
Gijs Hendriksen committed
104
            url(r'^', include('pizzas.api.urls')),
Sébastiaan Versteeg's avatar
Sébastiaan Versteeg committed
105
            url(r'^', include('photos.api.urls')),
106
            url(r'^', include('pushnotifications.api.urls')),
Thom Wiggers's avatar
Thom Wiggers committed
107
        ])),
108
    ])),
109
    url(r'^education/', include('education.urls')),
Joost Rijneveld's avatar
Joost Rijneveld committed
110
    url(r'^announcements/', include('announcements.urls')),
111
    url(r'^pushnotifications/', include('pushnotifications.urls')),
112
    # Default login helpers
Thom Wiggers's avatar
Thom Wiggers committed
113
    url(r'^login/$', LoginView.as_view(), {'authentication_form': AuthenticationForm},
114
        name='login'),
115
    url(r'^', include('django.contrib.auth.urls')),
Thom Wiggers's avatar
Thom Wiggers committed
116
    url(r'^i18n/', include('django.conf.urls.i18n')),
Thom Wiggers's avatar
Thom Wiggers committed
117
    # Sitemap
118
    url(r'^sitemap\.xml$', sitemap, {'sitemaps': THALIA_SITEMAP},
Thom Wiggers's avatar
Thom Wiggers committed
119
        name='django.contrib.sitemaps.views.sitemap'),
120 121
    # Dependencies
    url(r'^tinymce/', include('tinymce.urls')),
122 123
    # Javascript translation catalog
    url(r'jsi18n/$', JavaScriptCatalog.as_view(), name='javascript-catalog'),
124
    # Provide something to test error handling. Limited to admins.
Thom Wiggers's avatar
Thom Wiggers committed
125
    url(r'crash/$', views.crash),
Sébastiaan Versteeg's avatar
Sébastiaan Versteeg committed
126
    # Custom media paths
127
    url(r'^media/generate-thumbnail/(?P<request_path>.*)', generate_thumbnail, name='generate-thumbnail'),
128 129 130
    url(r'^media/private/(?P<request_path>.*)$', private_media, name='private-media'),
    url('', include('members.urls')),
    url('', include('payments.urls')),
131
] + static(settings.MEDIA_URL + 'public/',
Thom Wiggers's avatar
Thom Wiggers committed
132
           document_root=os.path.join(settings.MEDIA_ROOT, 'public'))