urls.py 4.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132
  1. from django.conf.urls import include, patterns, url
  2. from django.contrib import admin
  3. from django.contrib.sitemaps import views as sitemap_views
  4. from django.views.decorators.cache import cache_page
  5. from django.views.generic import TemplateView, RedirectView
  6. from feeds import PackageFeed, NewsFeed, ReleaseFeed
  7. import sitemaps
  8. our_sitemaps = {
  9. 'base': sitemaps.BaseSitemap,
  10. 'news': sitemaps.NewsSitemap,
  11. 'packages': sitemaps.PackagesSitemap,
  12. 'package-files': sitemaps.PackageFilesSitemap,
  13. 'package-groups': sitemaps.PackageGroupsSitemap,
  14. 'split-packages': sitemaps.SplitPackagesSitemap,
  15. 'releases': sitemaps.ReleasesSitemap,
  16. 'todolists': sitemaps.TodolistSitemap,
  17. }
  18. news_sitemaps = { 'news': sitemaps.RecentNewsSitemap }
  19. urlpatterns = []
  20. # Public pages
  21. urlpatterns += patterns('public.views',
  22. (r'^$', 'index', {}, 'index'),
  23. (r'^about/$', TemplateView.as_view(template_name='public/about.html'),
  24. {}, 'page-about'),
  25. (r'^art/$', RedirectView.as_view(url='https://projects.parabola.nu/artwork.git/'),
  26. {}, 'page-art'),
  27. (r'^donate/$', RedirectView.as_view(url='https://wiki.parabola.nu/Donations'),
  28. {}, 'page-donate'),
  29. (r'^download/$', RedirectView.as_view(url='https://wiki.parabola.nu/Get_Parabola'),
  30. {}, 'page-download'),
  31. (r'^master-keys/$', 'keys', {}, 'page-keys'),
  32. (r'^master-keys/json/$', 'keys_json', {}, 'pgp-keys-json'),
  33. (r'^people/(?P<slug>[-\w]+)/$', 'people', {}, 'people'),
  34. )
  35. # Feeds patterns, used below
  36. feeds_patterns = patterns('',
  37. (r'^$', 'public.views.feeds', {}, 'feeds-list'),
  38. (r'^news/$', cache_page(311)(NewsFeed())),
  39. (r'^packages/$', cache_page(313)(PackageFeed())),
  40. (r'^packages/(?P<arch>[A-z0-9]+)/$',
  41. cache_page(313)(PackageFeed())),
  42. (r'^packages/all/(?P<repo>[A-z0-9\-]+)/$',
  43. cache_page(313)(PackageFeed())),
  44. (r'^packages/(?P<arch>[A-z0-9]+)/(?P<repo>[A-z0-9\-]+)/$',
  45. cache_page(313)(PackageFeed())),
  46. (r'^releases/$', cache_page(317)(ReleaseFeed())),
  47. )
  48. # Includes and other remaining stuff
  49. urlpatterns += patterns('',
  50. (r'^admin/', include(admin.site.urls)),
  51. (r'^devel/', include('devel.urls')),
  52. (r'^feeds/', include(feeds_patterns)),
  53. (r'^groups/', include('packages.urls_groups')),
  54. (r'^mirrorlist/',include('mirrors.urls_mirrorlist')),
  55. (r'^mirrors/', include('mirrors.urls')),
  56. (r'^news/', include('news.urls')),
  57. (r'^packages/', include('packages.urls')),
  58. (r'^releng/', include('releng.urls')),
  59. (r'^todo/', include('todolists.urls')),
  60. (r'^visualize/', include('visualize.urls')),
  61. (r'^opensearch/packages/$', 'packages.views.opensearch',
  62. {}, 'opensearch-packages'),
  63. (r'^opensearch/packages/suggest$', 'packages.views.opensearch_suggest',
  64. {}, 'opensearch-packages-suggest'),
  65. )
  66. # Sitemaps
  67. urlpatterns += patterns('',
  68. (r'^sitemap.xml$',
  69. cache_page(1831)(sitemap_views.index),
  70. {'sitemaps': our_sitemaps, 'sitemap_url_name': 'sitemaps'}),
  71. (r'^sitemap-(?P<section>.+)\.xml$',
  72. cache_page(1831)(sitemap_views.sitemap),
  73. {'sitemaps': our_sitemaps, 'template_name': 'sitemaps/sitemap.xml'},
  74. 'sitemaps'),
  75. (r'^news-sitemap\.xml$',
  76. cache_page(1831)(sitemap_views.sitemap),
  77. {'sitemaps': news_sitemaps, 'template_name': 'sitemaps/news_sitemap.xml'},
  78. 'news-sitemap'),
  79. )
  80. # Authentication
  81. urlpatterns += patterns('django.contrib.auth.views',
  82. (r'^login/$', 'login', {'template_name': 'registration/login.html'}, 'login'),
  83. (r'^logout/$', 'logout', {'template_name': 'registration/logout.html'}, 'logout'),
  84. )
  85. # Redirects for older known pages we see in the logs
  86. legacy_urls = (
  87. ('^about.php', '/about/'),
  88. ('^changelog.php', '/packages/?sort=-last_update'),
  89. ('^devs.php', '/people/hackers/'),
  90. ('^donations.php', '/donate/'),
  91. ('^download.php', '/download/'),
  92. ('^index.php', '/'),
  93. ('^logos.php', '/art/'),
  94. ('^news.php', '/news/'),
  95. ('^packages.php', '/packages/'),
  96. ('^people.php', '/people/hackers/'),
  97. ('^todolists/$', '/todo/'),
  98. ('^hackers/$', '/people/hackers/'),
  99. ('^developers/$', '/people/hackers/'),
  100. ('^artists/$', '/people/artists/'),
  101. ('^fellows/$', '/people/hacker-fellows/'),
  102. ('^trustedusers/$', '/people/hackers/'),
  103. ('^docs/en/guide/install/arch-install-guide.html',
  104. 'https://wiki.parabola.nu/Installation_Guide'),
  105. ('^docs/en/', 'https://wiki.parabola.nu/'),
  106. ('^docs/', 'https://wiki.parabola.nu/'),
  107. )
  108. urlpatterns += [url(old_url, RedirectView.as_view(url=new_url))
  109. for old_url, new_url in legacy_urls]
  110. def show_urls(urllist=urlpatterns, depth=0):
  111. for entry in urllist:
  112. print " " * depth, entry.regex.pattern
  113. if hasattr(entry, 'url_patterns'):
  114. show_urls(entry.url_patterns, depth + 1)
  115. # vim: set ts=4 sw=4 et: