diff options
Diffstat (limited to 'urls.py')
-rw-r--r-- | urls.py | 237 |
1 files changed, 116 insertions, 121 deletions
@@ -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: |