urls.py 5.43 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
Thom Wiggers's avatar
Thom Wiggers committed
36
from django.contrib.auth.views import LoginView
Thom Wiggers's avatar
Thom Wiggers committed
37
from django.contrib.sitemaps.views import sitemap
38
from django.urls import path
39
from django.views.i18n import JavaScriptCatalog
40

41
import members
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
Thom Wiggers's avatar
Thom Wiggers committed
44
from education.sitemaps import sitemap as education_sitemap
45
from events.sitemaps import sitemap as events_sitemap
Sébastiaan Versteeg's avatar
Sébastiaan Versteeg committed
46
from events.views import AlumniEventsView
Sébastiaan Versteeg's avatar
Sébastiaan Versteeg committed
47 48
from members.sitemaps import sitemap as members_sitemap
from members.views import ObtainThaliaAuthToken
Thom Wiggers's avatar
Thom Wiggers committed
49
from partners.sitemaps import sitemap as partners_sitemap
50
from thabloid.sitemaps import sitemap as thabloid_sitemap
51
from thaliawebsite.forms import AuthenticationForm
52 53 54 55 56 57 58
from thaliawebsite.views import (
    PrivacyPolicyView, EventTermsView,
    SiblingAssociationsView, TestCrashView,
    ContactView, IndexView,
    BecomeActiveView,
    StyleGuideView
)
Sébastiaan Versteeg's avatar
Sébastiaan Versteeg committed
59
from utils.media.views import (generate_thumbnail, private_media)
60
from .sitemaps import StaticViewSitemap
Thom Wiggers's avatar
Thom Wiggers committed
61

62 63 64
__all__ = ['urlpatterns']

THALIA_SITEMAP = {
Thom Wiggers's avatar
Thom Wiggers committed
65 66
    'main-static': StaticViewSitemap,
}
67 68 69 70 71
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)
Thom Wiggers's avatar
Thom Wiggers committed
72
THALIA_SITEMAP.update(education_sitemap)
73 74 75 76
THALIA_SITEMAP.update(events_sitemap)

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