diff --git a/pgweb/account/urls.py b/pgweb/account/urls.py index b3bbfa2f..cdca41e9 100644 --- a/pgweb/account/urls.py +++ b/pgweb/account/urls.py @@ -1,53 +1,55 @@ -from django.conf.urls import patterns, url +from django.conf.urls import url from django.conf import settings -urlpatterns = patterns('', - (r'^$', 'pgweb.account.views.home'), +import pgweb.account.views + +urlpatterns = [ + url(r'^$', pgweb.account.views.home), # Community authenticatoin - (r'^auth/(\d+)/$', 'pgweb.account.views.communityauth'), - (r'^auth/(\d+)/logout/$', 'pgweb.account.views.communityauth_logout'), - (r'^auth/(\d+)/search/$', 'pgweb.account.views.communityauth_search'), - (r'^auth/(\d+)/getkeys/(\d+/)?$', 'pgweb.account.views.communityauth_getkeys'), + url(r'^auth/(\d+)/$', pgweb.account.views.communityauth), + url(r'^auth/(\d+)/logout/$', pgweb.account.views.communityauth_logout), + url(r'^auth/(\d+)/search/$', pgweb.account.views.communityauth_search), + url(r'^auth/(\d+)/getkeys/(\d+/)?$', pgweb.account.views.communityauth_getkeys), # Profile - (r'^profile/$', 'pgweb.account.views.profile'), - (r'^profile/change_email/$', 'pgweb.account.views.change_email'), - (r'^profile/change_email/([0-9a-f]+)/$', 'pgweb.account.views.confirm_change_email'), + url(r'^profile/$', pgweb.account.views.profile), + url(r'^profile/change_email/$', pgweb.account.views.change_email), + url(r'^profile/change_email/([0-9a-f]+)/$', pgweb.account.views.confirm_change_email), # List of items to edit - (r'^edit/(.*)/$', 'pgweb.account.views.listobjects'), + url(r'^edit/(.*)/$', pgweb.account.views.listobjects), # News & Events - (r'^news/(.*)/$', 'pgweb.news.views.form'), - (r'^events/(.*)/$', 'pgweb.events.views.form'), + url(r'^news/(.*)/$', pgweb.news.views.form), + url(r'^events/(.*)/$', pgweb.events.views.form), # Software catalogue - (r'^organisations/(.*)/$', 'pgweb.core.views.organisationform'), - (r'^products/(.*)/$', 'pgweb.downloads.views.productform'), + url(r'^organisations/(.*)/$', pgweb.core.views.organisationform), + url(r'^products/(.*)/$', pgweb.downloads.views.productform), # Organisation information - (r'^orglist/$', 'pgweb.account.views.orglist'), + url(r'^orglist/$', pgweb.account.views.orglist), # Professional services - (r'^services/(.*)/$', 'pgweb.profserv.views.profservform'), + url(r'^services/(.*)/$', pgweb.profserv.views.profservform), # Docs comments - (r'^comments/(new)/(.*)/(.*)/$', 'pgweb.docs.views.commentform'), + url(r'^comments/(new)/(.*)/(.*)/$', pgweb.docs.views.commentform), # Log in, logout, change password etc - (r'^login/$', 'pgweb.account.views.login'), - (r'^logout/$', 'pgweb.account.views.logout'), - (r'^changepwd/$', 'pgweb.account.views.changepwd'), - (r'^changepwd/done/$', 'pgweb.account.views.change_done'), - (r'^reset/$', 'pgweb.account.views.resetpwd'), - (r'^reset/done/$', 'pgweb.account.views.reset_done'), - (r'^reset/(?P[0-9A-Za-z_\-]+)-(?P[0-9A-Za-z]{1,13}-[0-9A-Za-z]{1,20})/$', 'pgweb.account.views.reset_confirm'), - (r'^reset/complete/$', 'pgweb.account.views.reset_complete'), - (r'^signup/$', 'pgweb.account.views.signup'), - (r'^signup/complete/$', 'pgweb.account.views.signup_complete'), - (r'^signup/oauth/$', 'pgweb.account.views.signup_oauth'), -) + url(r'^login/$', pgweb.account.views.login), + url(r'^logout/$', pgweb.account.views.logout), + url(r'^changepwd/$', pgweb.account.views.changepwd), + url(r'^changepwd/done/$', pgweb.account.views.change_done), + url(r'^reset/$', pgweb.account.views.resetpwd), + url(r'^reset/done/$', pgweb.account.views.reset_done), + url(r'^reset/(?P[0-9A-Za-z_\-]+)-(?P[0-9A-Za-z]{1,13}-[0-9A-Za-z]{1,20})/$', pgweb.account.views.reset_confirm), + url(r'^reset/complete/$', pgweb.account.views.reset_complete), + url(r'^signup/$', pgweb.account.views.signup), + url(r'^signup/complete/$', pgweb.account.views.signup_complete), + url(r'^signup/oauth/$', pgweb.account.views.signup_oauth), +] for provider in settings.OAUTH.keys(): urlpatterns.append(url(r'^login/({0})/$'.format(provider), 'pgweb.account.oauthclient.login_oauth')) diff --git a/pgweb/urls.py b/pgweb/urls.py index 56c9cfd0..099b0370 100644 --- a/pgweb/urls.py +++ b/pgweb/urls.py @@ -1,4 +1,4 @@ -from django.conf.urls import patterns, include, url +from django.conf.urls import include, url from django.views.generic import RedirectView # Register our save signal handlers @@ -9,141 +9,157 @@ register_basic_signal_handlers() from django.contrib import admin admin.autodiscover() +import pgweb.contributors.views +import pgweb.core.views +import pgweb.docs.views +import pgweb.downloads.views +import pgweb.events.views +import pgweb.featurematrix.views +import pgweb.legacyurl.views +import pgweb.lists.views +import pgweb.misc.views +import pgweb.news.views +import pgweb.profserv.views +import pgweb.pugs.views +import pgweb.quotes.views +import pgweb.search.views +import pgweb.security.views +import pgweb.sponsors.views +import pgweb.survey.views -# dict with all the RSS feeds we can serve from pgweb.core.feeds import VersionFeed from pgweb.news.feeds import NewsFeed from pgweb.events.feeds import EventFeed -urlpatterns = patterns('', - (r'^$', 'pgweb.core.views.home'), - (r'^dyncss/(?Pbase|docs).css$', 'pgweb.core.views.dynamic_css'), +urlpatterns = [ + url(r'^$', pgweb.core.views.home), + url(r'^dyncss/(?Pbase|docs).css$', pgweb.core.views.dynamic_css), - (r'^about/newsarchive/([^/]+/)?$', 'pgweb.news.views.archive'), - (r'^about/news/(\d+)(-.*)?/$', 'pgweb.news.views.item'), - (r'^about/news/taglist.json/$', 'pgweb.news.views.taglist_json'), - (r'^about/events/$', 'pgweb.events.views.main'), - (r'^about/eventarchive/$', 'pgweb.events.views.archive'), - (r'^about/eventarchive/training/$', 'pgweb.events.views.trainingarchive'), - (r'^about/event/(\d+)(-.*)?/$', 'pgweb.events.views.item'), - (r'^about/featurematrix/$', 'pgweb.featurematrix.views.root'), - (r'^about/featurematrix/detail/(\d+)/$', 'pgweb.featurematrix.views.detail'), - (r'^about/quotesarchive/$', 'pgweb.quotes.views.allquotes'), + url(r'^about/newsarchive/([^/]+/)?$', pgweb.news.views.archive), + url(r'^about/news/(\d+)(-.*)?/$', pgweb.news.views.item), + url(r'^about/news/taglist.json/$', pgweb.news.views.taglist_json), + url(r'^about/events/$', pgweb.events.views.main), + url(r'^about/eventarchive/$', pgweb.events.views.archive), + url(r'^about/eventarchive/training/$', pgweb.events.views.trainingarchive), + url(r'^about/event/(\d+)(-.*)?/$', pgweb.events.views.item), + url(r'^about/featurematrix/$', pgweb.featurematrix.views.root), + url(r'^about/featurematrix/detail/(\d+)/$', pgweb.featurematrix.views.detail), + url(r'^about/quotesarchive/$', pgweb.quotes.views.allquotes), - (r'^ftp/(.*/)?$', 'pgweb.downloads.views.ftpbrowser'), - (r'^download/mirrors-ftp/+(.*)$', 'pgweb.downloads.views.mirrorselect'), - (r'^download/product-categories/$', 'pgweb.downloads.views.categorylist'), - (r'^download/products/(\d+)(-.*)?/$', 'pgweb.downloads.views.productlist'), - (r'^applications-v2.xml$', 'pgweb.downloads.views.applications_v2_xml'), - (r'^download/uploadftp/', 'pgweb.downloads.views.uploadftp'), - (r'^download/uploadyum/', 'pgweb.downloads.views.uploadyum'), - (r'^download/js/yum.js', 'pgweb.downloads.views.yum_js'), + url(r'^ftp/(.*/)?$', pgweb.downloads.views.ftpbrowser), + url(r'^download/mirrors-ftp/+(.*)$', pgweb.downloads.views.mirrorselect), + url(r'^download/product-categories/$', pgweb.downloads.views.categorylist), + url(r'^download/products/(\d+)(-.*)?/$', pgweb.downloads.views.productlist), + url(r'^applications-v2.xml$', pgweb.downloads.views.applications_v2_xml), + url(r'^download/uploadftp/', pgweb.downloads.views.uploadftp), + url(r'^download/uploadyum/', pgweb.downloads.views.uploadyum), + url(r'^download/js/yum.js', pgweb.downloads.views.yum_js), - (r'^docs/$', 'pgweb.docs.views.root'), - (r'^docs/manuals/$', 'pgweb.docs.views.manuals'), - (r'^docs/manuals/archive/$', 'pgweb.docs.views.manualarchive'), - (r'^docs/(current|devel|\d+(?:\.\d)?)/(static|interactive)/(.*).html?$', 'pgweb.docs.views.docpage'), - (r'^docs/(current|devel|\d+(?:\.\d)?)/(static|interactive)/$', 'pgweb.docs.views.docsrootpage'), - (r'^docs/(current|devel|\d+(?:\.\d)?)/$', 'pgweb.docs.views.redirect_root'), + url(r'^docs/$', pgweb.docs.views.root), + url(r'^docs/manuals/$', pgweb.docs.views.manuals), + url(r'^docs/manuals/archive/$', pgweb.docs.views.manualarchive), + url(r'^docs/(current|devel|\d+(?:\.\d)?)/(static|interactive)/(.*).html?$', pgweb.docs.views.docpage), + url(r'^docs/(current|devel|\d+(?:\.\d)?)/(static|interactive)/$', pgweb.docs.views.docsrootpage), + url(r'^docs/(current|devel|\d+(?:\.\d)?)/$', pgweb.docs.views.redirect_root), - (r'^community/$', 'pgweb.core.views.community'), - (r'^community/contributors/$', 'pgweb.contributors.views.completelist'), - (r'^community/lists/$', RedirectView.as_view(url='/list/', permanent=True)), - (r'^community/lists/subscribe/$', RedirectView.as_view(url='https://lists.postgresql.org/', permanent=True)), + url(r'^community/$', pgweb.core.views.community), + url(r'^community/contributors/$', pgweb.contributors.views.completelist), + url(r'^community/lists/$', RedirectView.as_view(url='/list/', permanent=True)), + url(r'^community/lists/subscribe/$', RedirectView.as_view(url='https://lists.postgresql.org/', permanent=True)), - (r'^community/lists/listinfo/$', 'pgweb.lists.views.listinfo'), - (r'^community/lists/activate/$', 'pgweb.lists.views.activate'), - (r'^community/survey/vote/(\d+)/$', 'pgweb.survey.views.vote'), - (r'^community/survey[/\.](\d+)(-.*)?/$', 'pgweb.survey.views.results'), - (r'^community/user-groups/$', 'pgweb.pugs.views.index'), + url(r'^community/lists/listinfo/$', pgweb.lists.views.listinfo), + url(r'^community/lists/activate/$', pgweb.lists.views.activate), + url(r'^community/survey/vote/(\d+)/$', pgweb.survey.views.vote), + url(r'^community/survey[/\.](\d+)(-.*)?/$', pgweb.survey.views.results), + url(r'^community/user-groups/$', pgweb.pugs.views.index), - (r'^search/$', 'pgweb.search.views.search'), + url(r'^search/$', pgweb.search.views.search), - (r'^support/security/$', 'pgweb.security.views.index'), - (r'^support/security/([\d\.]+)/$', 'pgweb.security.views.version'), - (r'^support/security_archive/$', RedirectView.as_view(url='/support/security/', permanent=True)), + url(r'^support/security/$', pgweb.security.views.index), + url(r'^support/security/([\d\.]+)/$', pgweb.security.views.version), + url(r'^support/security_archive/$', RedirectView.as_view(url='/support/security/', permanent=True)), - (r'^support/professional_(support|hosting)/$', 'pgweb.profserv.views.root'), - (r'^support/professional_(support|hosting)[/_](.*)/$', 'pgweb.profserv.views.region'), - (r'^account/submitbug/$', 'pgweb.misc.views.submitbug'), - (r'^support/submitbug/$', RedirectView.as_view(url='/account/submitbug/', permanent=True)), - (r'^support/versioning/$', 'pgweb.core.views.versions'), + url(r'^support/professional_(support|hosting)/$', pgweb.profserv.views.root), + url(r'^support/professional_(support|hosting)[/_](.*)/$', pgweb.profserv.views.region), + url(r'^account/submitbug/$', pgweb.misc.views.submitbug), + url(r'^support/submitbug/$', RedirectView.as_view(url='/account/submitbug/', permanent=True)), + url(r'^support/versioning/$', pgweb.core.views.versions), - (r'^about/sponsors/$', 'pgweb.sponsors.views.sponsors'), - (r'^about/servers/$', 'pgweb.sponsors.views.servers'), + url(r'^about/sponsors/$', pgweb.sponsors.views.sponsors), + url(r'^about/servers/$', pgweb.sponsors.views.servers), - (r'^robots.txt$', 'pgweb.core.views.robots'), + url(r'^robots.txt$', pgweb.core.views.robots), ### # RSS feeds ### - (r'^versions.rss$', VersionFeed()), - (r'^news(/(?P[^/]+))?.rss$', NewsFeed()), - (r'^events.rss$', EventFeed()), + url(r'^versions.rss$', VersionFeed()), + url(r'^news(/(?P[^/]+))?.rss$', NewsFeed()), + url(r'^events.rss$', EventFeed()), ### # Special sections ### - (r'^account/', include('pgweb.account.urls')), + url(r'^account/', include('pgweb.account.urls')), ### # Sitemap (FIXME: support for >50k urls!) ### - (r'^sitemap.xml', 'pgweb.core.views.sitemap'), - (r'^sitemap_internal.xml', 'pgweb.core.views.sitemap_internal'), + url(r'^sitemap.xml', pgweb.core.views.sitemap), + url(r'^sitemap_internal.xml', pgweb.core.views.sitemap_internal), ### # Workaround for broken links pushed in press release ### - (r'^downloads/$', RedirectView.as_view(url='/download/', permanent=True)), + url(r'^downloads/$', RedirectView.as_view(url='/download/', permanent=True)), ### # Legacy URLs from the old website, that are likely to be used from other # sites or press releases or such ### - (r'^about/press/presskit(\d+)\.html\.(\w+)$', 'pgweb.legacyurl.views.presskit'), - (r'^about/news\.(\d+)$', 'pgweb.legacyurl.views.news'), - (r'^about/event\.(\d+)$', 'pgweb.legacyurl.views.event'), - (r'^community/signup', 'pgweb.legacyurl.views.signup'), + url(r'^about/press/presskit(\d+)\.html\.(\w+)$', pgweb.legacyurl.views.presskit), + url(r'^about/news\.(\d+)$', pgweb.legacyurl.views.news), + url(r'^about/event\.(\d+)$', pgweb.legacyurl.views.event), + url(r'^community/signup', pgweb.legacyurl.views.signup), ### # Images that are used from other community sites ### - (r'^layout/images/(?P[a-z0-9_\.]+)$', RedirectView.as_view(url='/media/img/layout/%(f)s', permanent=True)), + url(r'^layout/images/(?P[a-z0-9_\.]+)$', RedirectView.as_view(url='/media/img/layout/%(f)s', permanent=True)), ### # These URLs were legacy even on the old site... ### - (r'^developer/sourcecode/$', RedirectView.as_view(url='/developer/coding/', permanent=True)), - (r'^developer/bios/$', RedirectView.as_view(url='/community/contributors/', permanent=True)), - (r'^docs/techdocs.*', RedirectView.as_view(url='https://wiki.postgresql.org/', permanent=True)), - (r'^docs/faqs.FAQ.html$', RedirectView.as_view(url='https://wiki.postgresql.org/wiki/FAQ', permanent=True)), - (r'^docs/faqs.FAQ_DEV.*', RedirectView.as_view(url='https://wiki.postgresql.org/wiki/Development_information', permanent=True)), - (r'^docs/faqs.TODO.*', RedirectView.as_view(url='https://wiki.postgresql.org/wiki/Todo', permanent=True)), - (r'^about/license/$', RedirectView.as_view(url='/about/licence', permanent=True)), + url(r'^developer/sourcecode/$', RedirectView.as_view(url='/developer/coding/', permanent=True)), + url(r'^developer/bios/$', RedirectView.as_view(url='/community/contributors/', permanent=True)), + url(r'^docs/techdocs.*', RedirectView.as_view(url='https://wiki.postgresql.org/', permanent=True)), + url(r'^docs/faqs.FAQ.html$', RedirectView.as_view(url='https://wiki.postgresql.org/wiki/FAQ', permanent=True)), + url(r'^docs/faqs.FAQ_DEV.*', RedirectView.as_view(url='https://wiki.postgresql.org/wiki/Development_information', permanent=True)), + url(r'^docs/faqs.TODO.*', RedirectView.as_view(url='https://wiki.postgresql.org/wiki/Todo', permanent=True)), + url(r'^about/license/$', RedirectView.as_view(url='/about/licence', permanent=True)), ### # Links included in emails on the lists (do we need to check this for XSS?) ### - (r'^mailpref/([a-z0-9_-]+)/$', 'pgweb.legacyurl.views.mailpref'), + url(r'^mailpref/([a-z0-9_-]+)/$', pgweb.legacyurl.views.mailpref), # Some basic information about the connection (for debugging purposes) - (r'^system_information/$', 'pgweb.core.views.system_information'), + url(r'^system_information/$', pgweb.core.views.system_information), # Sync timestamp, for automirror - (r'^web_sync_timestamp$', 'pgweb.core.views.sync_timestamp'), + url(r'^web_sync_timestamp$', pgweb.core.views.sync_timestamp), # API endpoints - (r'^api/varnish/purge/$', 'pgweb.core.views.api_varnish_purge'), + url(r'^api/varnish/purge/$', pgweb.core.views.api_varnish_purge), # Override some URLs in admin, to provide our own pages - (r'^admin/pending/$', 'pgweb.core.views.admin_pending'), - (r'^admin/purge/$', 'pgweb.core.views.admin_purge'), - (r'^admin/mergeorg/$', 'pgweb.core.views.admin_mergeorg'), + url(r'^admin/pending/$', pgweb.core.views.admin_pending), + url(r'^admin/purge/$', pgweb.core.views.admin_purge), + url(r'^admin/mergeorg/$', pgweb.core.views.admin_mergeorg), # We use selectable only for /admin/ for now, so put it there to avoid caching issues - (r'^admin/selectable/', include('selectable.urls')), + url(r'^admin/selectable/', include('selectable.urls')), # Uncomment the next line to enable the admin: - (r'^admin/', include(admin.site.urls)), + url(r'^admin/', include(admin.site.urls)), # This should not happen in production - serve by the webserver natively! url(r'^(favicon.ico)$', 'django.views.static.serve', { @@ -151,11 +167,11 @@ urlpatterns = patterns('', }), # Crash testing URL :-) - (r'^crashtest/$', 'pgweb.misc.views.crashtest'), + url(r'^crashtest/$', pgweb.misc.views.crashtest), # If we're getting an attempt for something ending in HTML, just get rid of it - (r'^(.*)\.html$', 'pgweb.legacyurl.views.html_extension'), + url(r'^(.*)\.html$', pgweb.legacyurl.views.html_extension), # Fallback for static pages, must be at the bottom - (r'^(.*)/$', 'pgweb.core.views.fallback'), -) + url(r'^(.*)/$', pgweb.core.views.fallback), +]