summaryrefslogtreecommitdiff
path: root/urls.py
diff options
context:
space:
mode:
Diffstat (limited to 'urls.py')
-rw-r--r--urls.py237
1 files changed, 116 insertions, 121 deletions
diff --git a/urls.py b/urls.py
index 5c792035..3c295c67 100644
--- a/urls.py
+++ b/urls.py
@@ -1,136 +1,131 @@
-from django.conf.urls.defaults import *
-from django.conf import settings
+from django.conf.urls import include, patterns, url
from django.contrib import admin
+from django.contrib.sitemaps import views as sitemap_views
-from django.views.generic.simple import direct_to_template
+from django.views.decorators.cache import cache_page
+from django.views.generic import TemplateView, RedirectView
-from main.models import Todolist
-from feeds import PackageFeed, NewsFeed
+from feeds import PackageFeed, NewsFeed, ReleaseFeed
import sitemaps
-sitemaps = {
+our_sitemaps = {
+ 'base': sitemaps.BaseSitemap,
'news': sitemaps.NewsSitemap,
'packages': sitemaps.PackagesSitemap,
'package-files': sitemaps.PackageFilesSitemap,
'package-groups': sitemaps.PackageGroupsSitemap,
+ 'split-packages': sitemaps.SplitPackagesSitemap,
+ 'releases': sitemaps.ReleasesSitemap,
+ 'todolists': sitemaps.TodolistSitemap,
}
-admin.autodiscover()
-
-urlpatterns = patterns('',
- (r'^packages/flaghelp/$', 'packages.views.flaghelp'),
- (r'^packages/signoffs/$', 'packages.views.signoffs'),
- (r'^packages/signoff_package/(?P<arch>[A-z0-9]+)/(?P<pkgname>[A-z0-9\-+.]+)/$',
- 'packages.views.signoff_package'),
- (r'^packages/update/$', 'packages.views.update'),
-
- # Preference is for the packages/ url below, but search is kept
- # because other projects link to it
- (r'^packages/search/$', 'packages.views.search'),
- (r'^packages/search/(?P<page>\d+)/$', 'packages.views.search'),
- (r'^packages/differences/$', 'packages.views.arch_differences'),
- (r'^packages/$', 'packages.views.search'),
- (r'^packages/(?P<page>\d+)/$', 'packages.views.search'),
-
- (r'^packages/(?P<name>[A-z0-9\-+.]+)/$',
- 'packages.views.details'),
- (r'^packages/(?P<repo>[A-z0-9\-]+)/(?P<name>[A-z0-9\-+.]+)/$',
- 'packages.views.details'),
- (r'^packages/(?P<repo>[A-z0-9\-]+)/(?P<arch>[A-z0-9]+)/(?P<name>[A-z0-9\-+.]+)/$',
- 'packages.views.details'),
- (r'^packages/(?P<repo>[A-z0-9\-]+)/(?P<arch>[A-z0-9]+)/(?P<name>[A-z0-9\-+.]+)/files/$',
- 'packages.views.files'),
- (r'^packages/(?P<repo>[A-z0-9\-]+)/(?P<arch>[A-z0-9]+)/(?P<name>[A-z0-9\-+.]+)/maintainer/$',
- 'packages.views.getmaintainer'),
- (r'^packages/(?P<repo>[A-z0-9\-]+)/(?P<arch>[A-z0-9]+)/(?P<name>[A-z0-9\-+.]+)/flag/$',
- 'packages.views.flag'),
- (r'^packages/(?P<repo>[A-z0-9\-]+)/(?P<arch>[A-z0-9]+)/(?P<name>[A-z0-9\-+.]+)/unflag/$',
- 'packages.views.unflag'),
- (r'^packages/(?P<repo>[A-z0-9\-]+)/(?P<arch>[A-z0-9]+)/(?P<name>[A-z0-9\-+.]+)/download/$',
- 'packages.views.download'),
-
- (r'^groups/$', 'packages.views.groups'),
- (r'^groups/(?P<arch>[A-z0-9]+)/(?P<name>[A-z0-9\-+.]+)/$',
- 'packages.views.group_details'),
-
- (r'^todo/(\d+)/$', 'todolists.views.view'),
- (r'^todo/add/$', 'todolists.views.add'),
- (r'^todo/edit/(?P<list_id>\d+)/$', 'todolists.views.edit'),
- (r'^todo/flag/(\d+)/(\d+)/$', 'todolists.views.flag'),
- (r'^todo/delete/(?P<object_id>\d+)/$',
- 'todolists.views.delete_todolist'),
- (r'^todo/$', 'todolists.views.list'),
- (r'^todolists/$', 'todolists.views.public_list'),
-
- (r'^news/add/$', 'news.views.add'),
- (r'^news/preview/$', 'news.views.preview'),
- # old news URLs, permanent redirect view so we don't break all links
- (r'^news/(?P<object_id>\d+)/$', 'news.views.view_redirect'),
- (r'^news/(?P<slug>[-\w]+)/$', 'news.views.view'),
- (r'^news/(?P<slug>[-\w]+)/edit/$', 'news.views.edit'),
- (r'^news/(?P<slug>[-\w]+)/delete/$', 'news.views.delete'),
- (r'^news/$', 'news.views.news_list', {}, 'news-list'),
-
- (r'^mirrors/$', 'mirrors.views.mirrors', {}, 'mirrors-list'),
- (r'^mirrors/status/$', 'mirrors.views.status', {}, 'mirror-status'),
- (r'^mirrors/(?P<name>[\.\-\w]+)/$', 'mirrors.views.mirror_details'),
-
- (r'^mirrorlist/$', 'mirrors.views.generate_mirrorlist', {}, 'mirrorlist'),
- (r'^mirrorlist/all/$', 'mirrors.views.find_mirrors', {'countries': ['all']}),
- (r'^mirrorlist/all/ftp/$', 'mirrors.views.find_mirrors',
- {'countries': ['all'], 'protocols': ['ftp']}),
- (r'^mirrorlist/all/http/$', 'mirrors.views.find_mirrors',
- {'countries': ['all'], 'protocols': ['http']}),
-
- (r'^devel/$', 'devel.views.index'),
- (r'^devel/notify/$', 'devel.views.change_notify'),
- (r'^devel/profile/$', 'devel.views.change_profile'),
-
- (r'^devel/newuser/$', 'devel.views.new_user_form'),
-
-# Feeds and sitemaps
- (r'^feeds/$', 'public.views.feeds', {}, 'feeds-list'),
- (r'^feeds/news/$', NewsFeed()),
- (r'^feeds/packages/$', PackageFeed()),
- (r'^feeds/packages/(?P<arch>[A-z0-9]+)/$',
- PackageFeed()),
- (r'^feeds/packages/(?P<arch>[A-z0-9]+)/(?P<repo>[A-z0-9\-]+)/$',
- PackageFeed()),
- (r'^sitemap.xml$', 'django.contrib.sitemaps.views.index',
- {'sitemaps': sitemaps}),
- (r'^sitemap-(?P<section>.+)\.xml$', 'django.contrib.sitemaps.views.sitemap',
- {'sitemaps': sitemaps}),
-
-# Authentication / Admin
- (r'^login/$', 'django.contrib.auth.views.login', {
- 'template_name': 'registration/login.html'}),
- (r'^accounts/login/$', 'django.contrib.auth.views.login', {
- 'template_name': 'registration/login.html'}),
- (r'^logout/$', 'django.contrib.auth.views.logout', {
- 'template_name': 'registration/logout.html'}),
- (r'^accounts/logout/$', 'django.contrib.auth.views.logout', {
- 'template_name': 'registration/logout.html'}),
- (r'^admin/', include(admin.site.urls)),
-
-# (mostly) Static Pages
- (r'^$', 'public.views.index', {}, 'index'),
- (r'^about/$', direct_to_template, {'template': 'public/about.html'}, 'page-about'),
- (r'^art/$', direct_to_template, {'template': 'public/art.html'}, 'page-art'),
- (r'^svn/$', direct_to_template, {'template': 'public/svn.html'}, 'page-svn'),
- (r'^developers/$', 'public.views.userlist', { 'type':'Developers' }, 'page-devs'),
- (r'^trustedusers/$', 'public.views.userlist', { 'type':'Trusted Users' }, 'page-tus'),
- (r'^fellows/$', 'public.views.userlist', { 'type':'Fellows' }, 'page-fellows'),
- (r'^donate/$', 'public.views.donate', {}, 'page-donate'),
- (r'^download/$', 'public.views.download', {}, 'page-download'),
- (r'^opensearch/packages/$', 'packages.views.opensearch', {}, 'opensearch-packages'),
-
-# Some django internals we use
- (r'^jsi18n/$', 'django.views.i18n.null_javascript_catalog'),
+news_sitemaps = { 'news': sitemaps.RecentNewsSitemap }
+
+urlpatterns = []
+
+# Public pages
+urlpatterns += patterns('public.views',
+ (r'^$', 'index', {}, 'index'),
+ (r'^about/$', TemplateView.as_view(template_name='public/about.html'),
+ {}, 'page-about'),
+ (r'^art/$', RedirectView.as_view(url='https://projects.parabola.nu/artwork.git/'),
+ {}, 'page-art'),
+ (r'^donate/$', RedirectView.as_view(url='https://wiki.parabola.nu/Donations'),
+ {}, 'page-donate'),
+ (r'^download/$', RedirectView.as_view(url='https://wiki.parabola.nu/Get_Parabola'),
+ {}, 'page-download'),
+ (r'^master-keys/$', 'keys', {}, 'page-keys'),
+ (r'^master-keys/json/$', 'keys_json', {}, 'pgp-keys-json'),
+ (r'^people/(?P<slug>[-\w]+)/$', 'people', {}, 'people'),
)
-if settings.DEBUG == True:
- urlpatterns += patterns('',
- (r'^media/(.*)$', 'django.views.static.serve',
- {'document_root': settings.DEPLOY_PATH+'/media'}))
+# Feeds patterns, used below
+feeds_patterns = patterns('',
+ (r'^$', 'public.views.feeds', {}, 'feeds-list'),
+ (r'^news/$', cache_page(311)(NewsFeed())),
+ (r'^packages/$', cache_page(313)(PackageFeed())),
+ (r'^packages/(?P<arch>[A-z0-9]+)/$',
+ cache_page(313)(PackageFeed())),
+ (r'^packages/all/(?P<repo>[A-z0-9\-]+)/$',
+ cache_page(313)(PackageFeed())),
+ (r'^packages/(?P<arch>[A-z0-9]+)/(?P<repo>[A-z0-9\-]+)/$',
+ cache_page(313)(PackageFeed())),
+ (r'^releases/$', cache_page(317)(ReleaseFeed())),
+)
+
+# Includes and other remaining stuff
+urlpatterns += patterns('',
+ (r'^admin/', include(admin.site.urls)),
+ (r'^devel/', include('devel.urls')),
+ (r'^feeds/', include(feeds_patterns)),
+ (r'^groups/', include('packages.urls_groups')),
+ (r'^mirrorlist/',include('mirrors.urls_mirrorlist')),
+ (r'^mirrors/', include('mirrors.urls')),
+ (r'^news/', include('news.urls')),
+ (r'^packages/', include('packages.urls')),
+ (r'^releng/', include('releng.urls')),
+ (r'^todo/', include('todolists.urls')),
+ (r'^visualize/', include('visualize.urls')),
+ (r'^opensearch/packages/$', 'packages.views.opensearch',
+ {}, 'opensearch-packages'),
+ (r'^opensearch/packages/suggest$', 'packages.views.opensearch_suggest',
+ {}, 'opensearch-packages-suggest'),
+)
+
+# Sitemaps
+urlpatterns += patterns('',
+ (r'^sitemap.xml$',
+ cache_page(1831)(sitemap_views.index),
+ {'sitemaps': our_sitemaps, 'sitemap_url_name': 'sitemaps'}),
+ (r'^sitemap-(?P<section>.+)\.xml$',
+ cache_page(1831)(sitemap_views.sitemap),
+ {'sitemaps': our_sitemaps, 'template_name': 'sitemaps/sitemap.xml.jinja'},
+ 'sitemaps'),
+ (r'^news-sitemap\.xml$',
+ cache_page(1831)(sitemap_views.sitemap),
+ {'sitemaps': news_sitemaps, 'template_name': 'sitemaps/news_sitemap.xml.jinja'},
+ 'news-sitemap'),
+)
+
+# Authentication
+urlpatterns += patterns('django.contrib.auth.views',
+ (r'^login/$', 'login', {'template_name': 'registration/login.html'}, 'login'),
+ (r'^logout/$', 'logout', {'template_name': 'registration/logout.html'}, 'logout'),
+)
+
+# Redirects for older known pages we see in the logs
+legacy_urls = (
+ ('^about.php', '/about/'),
+ ('^changelog.php', '/packages/?sort=-last_update'),
+ ('^devs.php', '/people/hackers/'),
+ ('^donations.php', '/donate/'),
+ ('^download.php', '/download/'),
+ ('^index.php', '/'),
+ ('^logos.php', '/art/'),
+ ('^news.php', '/news/'),
+ ('^packages.php', '/packages/'),
+ ('^people.php', '/people/hackers/'),
+ ('^todolists/$', '/todo/'),
+ ('^hackers/$', '/people/hackers/'),
+ ('^developers/$', '/people/hackers/'),
+ ('^artists/$', '/people/artists/'),
+ ('^fellows/$', '/people/hacker-fellows/'),
+ ('^trustedusers/$', '/people/hackers/'),
+
+ ('^docs/en/guide/install/arch-install-guide.html',
+ 'https://wiki.parabola.nu/Installation_Guide'),
+ ('^docs/en/', 'https://wiki.parabola.nu/'),
+ ('^docs/', 'https://wiki.parabola.nu/'),
+)
+
+urlpatterns += [url(old_url, RedirectView.as_view(url=new_url))
+ for old_url, new_url in legacy_urls]
+
+
+def show_urls(urllist=urlpatterns, depth=0):
+ for entry in urllist:
+ print " " * depth, entry.regex.pattern
+ if hasattr(entry, 'url_patterns'):
+ show_urls(entry.url_patterns, depth + 1)
# vim: set ts=4 sw=4 et: