summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJohannes Löthberg <johannes@kyriasis.com>2018-01-01 22:25:02 +0100
committerJelle van der Waa <jelle@vdwaa.nl>2018-04-08 12:51:19 +0200
commit996ef6ec7205ac3c09b6d66ddcfbf91b21bed5b4 (patch)
treede922c4fa251187ac80e31198957e45ddbaaf479
parent2fbbbf946fcb5cc0ceeb8031b778e184995ddefc (diff)
downloadarchweb-996ef6ec7205ac3c09b6d66ddcfbf91b21bed5b4.tar.gz
archweb-996ef6ec7205ac3c09b6d66ddcfbf91b21bed5b4.zip
Change urls.py from patterns to list of url()
Signed-off-by: Johannes Löthberg <johannes@kyriasis.com>
-rw-r--r--devel/urls.py29
-rw-r--r--mirrors/urls.py24
-rw-r--r--mirrors/urls_mirrorlist.py14
-rw-r--r--news/urls.py22
-rw-r--r--packages/urls.py71
-rw-r--r--packages/urls_groups.py15
-rw-r--r--releng/urls.py35
-rw-r--r--todolists/urls.py22
-rw-r--r--urls.py124
-rw-r--r--visualize/urls.py15
10 files changed, 190 insertions, 181 deletions
diff --git a/devel/urls.py b/devel/urls.py
index 472c6456..d42995a1 100644
--- a/devel/urls.py
+++ b/devel/urls.py
@@ -1,15 +1,18 @@
-from django.conf.urls import patterns
-
-urlpatterns = patterns('devel.views',
- (r'^admin_log/$','admin_log'),
- (r'^admin_log/(?P<username>.*)/$','admin_log'),
- (r'^clock/$', 'clock', {}, 'devel-clocks'),
- (r'^$', 'index', {}, 'devel-index'),
- (r'^stats/$', 'stats', {}, 'devel-stats'),
- (r'^newuser/$', 'new_user_form'),
- (r'^profile/$', 'change_profile'),
- (r'^reports/(?P<report_name>.*)/(?P<username>.*)/$', 'report'),
- (r'^reports/(?P<report_name>.*)/$', 'report'),
-)
+from django.conf.urls import url
+
+import views
+
+
+urlpatterns = [
+ url(r'^admin_log/$', views.admin_log),
+ url(r'^admin_log/(?P<username>.*)/$', views.admin_log),
+ url(r'^clock/$', views.clock, name='devel-clocks'),
+ url(r'^$', views.index, name='devel-index'),
+ url(r'^stats/$', views.stats, name='devel-stats'),
+ url(r'^newuser/$', views.new_user_form),
+ url(r'^profile/$', views.change_profile),
+ url(r'^reports/(?P<report_name>.*)/(?P<username>.*)/$', views.report),
+ url(r'^reports/(?P<report_name>.*)/$', views.report),
+]
# vim: set ts=4 sw=4 et:
diff --git a/mirrors/urls.py b/mirrors/urls.py
index fc510fbb..f979c86e 100644
--- a/mirrors/urls.py
+++ b/mirrors/urls.py
@@ -1,18 +1,18 @@
-from django.conf.urls import patterns
+from django.conf.urls import url
from .views import mirrors, status, mirror_details, url_details
from .views.api import status_json, mirror_details_json, locations_json
-urlpatterns = patterns('',
- (r'^$', mirrors, {}, 'mirror-list'),
- (r'^status/$', status, {}, 'mirror-status'),
- (r'^status/json/$', status_json, {}, 'mirror-status-json'),
- (r'^status/tier/(?P<tier>\d+)/$', status, {}, 'mirror-status-tier'),
- (r'^status/tier/(?P<tier>\d+)/json/$', status_json, {}, 'mirror-status-tier-json'),
- (r'^locations/json/$', locations_json, {}, 'mirror-locations-json'),
- (r'^(?P<name>[\.\-\w]+)/$', mirror_details),
- (r'^(?P<name>[\.\-\w]+)/json/$', mirror_details_json),
- (r'^(?P<name>[\.\-\w]+)/(?P<url_id>\d+)/$', url_details),
-)
+urlpatterns = [
+ url(r'^$', mirrors, name='mirror-list'),
+ url(r'^status/$', status, name='mirror-status'),
+ url(r'^status/json/$', status_json, name='mirror-status-json'),
+ url(r'^status/tier/(?P<tier>\d+)/$', status, name='mirror-status-tier'),
+ url(r'^status/tier/(?P<tier>\d+)/json/$', status_json, name='mirror-status-tier-json'),
+ url(r'^locations/json/$', locations_json, name='mirror-locations-json'),
+ url(r'^(?P<name>[\.\-\w]+)/$', mirror_details),
+ url(r'^(?P<name>[\.\-\w]+)/json/$', mirror_details_json),
+ url(r'^(?P<name>[\.\-\w]+)/(?P<url_id>\d+)/$', url_details),
+]
# vim: set ts=4 sw=4 et:
diff --git a/mirrors/urls_mirrorlist.py b/mirrors/urls_mirrorlist.py
index a64656a9..483e2430 100644
--- a/mirrors/urls_mirrorlist.py
+++ b/mirrors/urls_mirrorlist.py
@@ -1,11 +1,11 @@
-from django.conf.urls import patterns
+from django.conf.urls import url
+from views import mirrorlist as views
-urlpatterns = patterns('mirrors.views.mirrorlist',
- (r'^$', 'generate_mirrorlist', {}, 'mirrorlist'),
- (r'^all/$', 'find_mirrors', {'countries': ['all']}),
- (r'^all/(?P<protocol>[A-z]+)/$', 'find_mirrors_simple',
- {}, 'mirrorlist_simple')
-)
+urlpatterns = [
+ url(r'^$', views.generate_mirrorlist, name='mirrorlist'),
+ url(r'^all/$', views.find_mirrors, {'countries': ['all']}),
+ url(r'^all/(?P<protocol>[A-z]+)/$', views.find_mirrors_simple, name='mirrorlist_simple')
+]
# vim: set ts=4 sw=4 et:
diff --git a/news/urls.py b/news/urls.py
index c13722d4..43f9f62a 100644
--- a/news/urls.py
+++ b/news/urls.py
@@ -1,24 +1,26 @@
-from django.conf.urls import patterns
+from django.conf.urls import url
from django.contrib.auth.decorators import permission_required
from .views import (NewsDetailView, NewsListView,
NewsCreateView, NewsEditView, NewsDeleteView)
+import views
-urlpatterns = patterns('news.views',
- (r'^$', NewsListView.as_view(), {}, 'news-list'),
- (r'^preview/$', 'preview'),
+urlpatterns = [
+ url(r'^$', NewsListView.as_view(), name='news-list'),
+
+ url(r'^preview/$', views.preview),
# old news URLs, permanent redirect view so we don't break all links
- (r'^(?P<object_id>\d+)/$', 'view_redirect'),
+ url(r'^(?P<object_id>\d+)/$', views.view_redirect),
- (r'^add/$',
+ url(r'^add/$',
permission_required('news.add_news')(NewsCreateView.as_view())),
- (r'^(?P<slug>[-\w]+)/$',
+ url(r'^(?P<slug>[-\w]+)/$',
NewsDetailView.as_view()),
- (r'^(?P<slug>[-\w]+)/edit/$',
+ url(r'^(?P<slug>[-\w]+)/edit/$',
permission_required('news.change_news')(NewsEditView.as_view())),
- (r'^(?P<slug>[-\w]+)/delete/$',
+ url(r'^(?P<slug>[-\w]+)/delete/$',
permission_required('news.delete_news')(NewsDeleteView.as_view())),
-)
+]
# vim: set ts=4 sw=4 et:
diff --git a/packages/urls.py b/packages/urls.py
index 4e2e2638..60899921 100644
--- a/packages/urls.py
+++ b/packages/urls.py
@@ -1,42 +1,41 @@
-from django.conf.urls import include, patterns
+from django.conf.urls import include, url
from .views.search import SearchListView
+import views
-package_patterns = patterns('packages.views',
- (r'^$', 'details'),
- (r'^json/$', 'details_json'),
- (r'^files/$', 'files'),
- (r'^files/json/$', 'files_json'),
- (r'^flag/$', 'flag'),
- (r'^flag/done/$', 'flag_confirmed', {}, 'package-flag-confirmed'),
- (r'^unflag/$', 'unflag'),
- (r'^unflag/all/$', 'unflag_all'),
- (r'^signoff/$', 'signoff_package'),
- (r'^signoff/revoke/$', 'signoff_package', {'revoke': True}),
- (r'^signoff/options/$', 'signoff_options'),
- (r'^download/$', 'download'),
-)
-
-urlpatterns = patterns('packages.views',
- (r'^flaghelp/$', 'flaghelp'),
- (r'^signoffs/$', 'signoffs', {}, 'package-signoffs'),
- (r'^signoffs/json/$', 'signoffs_json', {}, 'package-signoffs-json'),
- (r'^update/$', 'update'),
-
- (r'^$', SearchListView.as_view(), {}, 'packages-search'),
- (r'^search/json/$', 'search_json'),
-
- (r'^differences/$', 'arch_differences', {}, 'packages-differences'),
- (r'^stale_relations/$', 'stale_relations'),
- (r'^stale_relations/update/$','stale_relations_update'),
-
- (r'^(?P<name>[^ /]+)/$',
- 'details'),
- (r'^(?P<repo>[A-z0-9\-]+)/(?P<name>[^ /]+)/$',
- 'details'),
+
+package_patterns = [
+ url(r'^$', views.details),
+ url(r'^json/$', views.details_json),
+ url(r'^files/$', views.files),
+ url(r'^files/json/$', views.files_json),
+ url(r'^flag/$', views.flag),
+ url(r'^flag/done/$', views.flag_confirmed, name='package-flag-confirmed'),
+ url(r'^unflag/$', views.unflag),
+ url(r'^unflag/all/$', views.unflag_all),
+ url(r'^signoff/$', views.signoff_package),
+ url(r'^signoff/revoke/$', views.signoff_package, {'revoke': True}),
+ url(r'^signoff/options/$', views.signoff_options),
+ url(r'^download/$', views.download),
+]
+
+urlpatterns = [
+ url(r'^flaghelp/$', views.flaghelp),
+ url(r'^signoffs/$', views.signoffs, name='package-signoffs'),
+ url(r'^signoffs/json/$', views.signoffs_json, name='package-signoffs-json'),
+ url(r'^update/$', views.update),
+
+ url(r'^$', SearchListView.as_view(), name='packages-search'),
+ url(r'^search/json/$', views.search_json),
+
+ url(r'^differences/$', views.arch_differences, name='packages-differences'),
+ url(r'^stale_relations/$', views.stale_relations),
+ url(r'^stale_relations/update/$', views.stale_relations_update),
+
+ url(r'^(?P<name>[^ /]+)/$', views.details),
+ url(r'^(?P<repo>[A-z0-9\-]+)/(?P<name>[^ /]+)/$', views.details),
# canonical package url. subviews defined above
- (r'^(?P<repo>[A-z0-9\-]+)/(?P<arch>[A-z0-9]+)/(?P<name>[^ /]+)/',
- include(package_patterns)),
-)
+ url(r'^(?P<repo>[A-z0-9\-]+)/(?P<arch>[A-z0-9]+)/(?P<name>[^ /]+)/', include(package_patterns)),
+]
# vim: set ts=4 sw=4 et:
diff --git a/packages/urls_groups.py b/packages/urls_groups.py
index 49ced145..ebd8e527 100644
--- a/packages/urls_groups.py
+++ b/packages/urls_groups.py
@@ -1,9 +1,12 @@
-from django.conf.urls import patterns
+from django.conf.urls import url
-urlpatterns = patterns('packages.views',
- (r'^$', 'groups', {}, 'groups-list'),
- (r'^(?P<arch>[A-z0-9]+)/$', 'groups'),
- (r'^(?P<arch>[A-z0-9]+)/(?P<name>[^ /]+)/$', 'group_details'),
-)
+import views
+
+
+urlpatterns = [
+ url(r'^$', views.groups, name='groups-list'),
+ url(r'^(?P<arch>[A-z0-9]+)/$', views.groups),
+ url(r'^(?P<arch>[A-z0-9]+)/(?P<name>[^ /]+)/$', views.group_details),
+]
# vim: set ts=4 sw=4 et:
diff --git a/releng/urls.py b/releng/urls.py
index eff17115..c0f313bd 100644
--- a/releng/urls.py
+++ b/releng/urls.py
@@ -1,26 +1,23 @@
-from django.conf.urls import include, patterns
+from django.conf.urls import include, url
from .views import ReleaseListView, ReleaseDetailView
+import views
-releases_patterns = patterns('releng.views',
- (r'^$',
- ReleaseListView.as_view(), {}, 'releng-release-list'),
- (r'^json/$',
- 'releases_json', {}, 'releng-release-list-json'),
- (r'^(?P<version>[-.\w]+)/$',
- ReleaseDetailView.as_view(), {}, 'releng-release-detail'),
- (r'^(?P<version>[-.\w]+)/torrent/$',
- 'release_torrent', {}, 'releng-release-torrent'),
-)
+releases_patterns = [
+ url(r'^$', ReleaseListView.as_view(), name='releng-release-list'),
+ url(r'^json/$', views.releases_json, name='releng-release-list-json'),
+ url(r'^(?P<version>[-.\w]+)/$', ReleaseDetailView.as_view(), name='releng-release-detail'),
+ url(r'^(?P<version>[-.\w]+)/torrent/$', views.release_torrent, name='releng-release-torrent'),
+]
-netboot_patterns = patterns('releng.views',
- (r'^archlinux\.ipxe$', 'netboot_config', {}, 'releng-netboot-config'),
- (r'^$', 'netboot_info', {}, 'releng-netboot-info')
-)
+netboot_patterns = [
+ url(r'^archlinux\.ipxe$', views.netboot_config, name='releng-netboot-config'),
+ url(r'^$', views.netboot_info, name='releng-netboot-info')
+]
-urlpatterns = patterns('',
- (r'^releases/', include(releases_patterns)),
- (r'^netboot/', include(netboot_patterns)),
-)
+urlpatterns = [
+ url(r'^releases/', include(releases_patterns)),
+ url(r'^netboot/', include(netboot_patterns)),
+]
# vim: set ts=4 sw=4 et:
diff --git a/todolists/urls.py b/todolists/urls.py
index ed065f50..178cdc9a 100644
--- a/todolists/urls.py
+++ b/todolists/urls.py
@@ -1,26 +1,26 @@
-from django.conf.urls import patterns
+from django.conf.urls import url
from django.contrib.auth.decorators import permission_required
from .views import (view_redirect, view, add, edit, flag,
list_pkgbases, DeleteTodolist, TodolistListView)
-urlpatterns = patterns('',
- (r'^$', TodolistListView.as_view(), {}, 'todolist-list'),
+urlpatterns = [
+ url(r'^$', TodolistListView.as_view(), name='todolist-list'),
# old todolists URLs, permanent redirect view so we don't break all links
- (r'^(?P<old_id>\d+)/$', view_redirect),
+ url(r'^(?P<old_id>\d+)/$', view_redirect),
- (r'^add/$',
+ url(r'^add/$',
permission_required('todolists.add_todolist')(add)),
- (r'^(?P<slug>[-\w]+)/$', view),
- (r'^(?P<slug>[-\w]+)/edit/$',
+ url(r'^(?P<slug>[-\w]+)/$', view),
+ url(r'^(?P<slug>[-\w]+)/edit/$',
permission_required('todolists.change_todolist')(edit)),
- (r'^(?P<slug>[-\w]+)/delete/$',
+ url(r'^(?P<slug>[-\w]+)/delete/$',
permission_required('todolists.delete_todolist')(DeleteTodolist.as_view())),
- (r'^(?P<slug>[-\w]+)/flag/(?P<pkg_id>\d+)/$',
+ url(r'^(?P<slug>[-\w]+)/flag/(?P<pkg_id>\d+)/$',
permission_required('todolists.change_todolistpackage')(flag)),
- (r'^(?P<slug>[-\w]+)/pkgbases/(?P<svn_root>[a-z]+)/$',
+ url(r'^(?P<slug>[-\w]+)/pkgbases/(?P<svn_root>[a-z]+)/$',
list_pkgbases),
-)
+]
# vim: set ts=4 sw=4 et:
diff --git a/urls.py b/urls.py
index 081331e0..3205100c 100644
--- a/urls.py
+++ b/urls.py
@@ -1,6 +1,7 @@
-from django.conf.urls import include, patterns
+from django.conf.urls import include, url
from django.contrib import admin
from django.contrib.sitemaps import views as sitemap_views
+from django.contrib.auth import views as auth_views
from django.views.decorators.cache import cache_page
from django.views.generic import TemplateView
@@ -8,6 +9,18 @@ from django.views.generic import TemplateView
from feeds import PackageFeed, NewsFeed, ReleaseFeed
import sitemaps
+import devel.urls
+import mirrors.urls
+import mirrors.urls_mirrorlist
+import news.urls
+import packages.urls
+import packages.urls_groups
+import public.views
+import releng.urls
+import retro.views
+import todolists.urls
+import visualize.urls
+
our_sitemaps = {
'base': sitemaps.BaseSitemap,
'news': sitemaps.NewsSitemap,
@@ -24,79 +37,68 @@ 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/$', TemplateView.as_view(template_name='public/art.html'),
- {}, 'page-art'),
- (r'^svn/$', TemplateView.as_view(template_name='public/svn.html'),
- {}, 'page-svn'),
- (r'^donate/$', 'donate', {}, 'page-donate'),
- (r'^download/$', 'download', {}, 'page-download'),
- (r'^master-keys/$', 'keys', {}, 'page-keys'),
- (r'^master-keys/json/$', 'keys_json', {}, 'pgp-keys-json'),
- (r'^people/(?P<slug>[-\w]+)/$', 'people', {}, 'people'),
-)
+urlpatterns.extend([
+ url(r'^$', public.views.index),
+ url(r'^about/$', TemplateView.as_view(template_name='public/about.html'), name='page-about'),
+ url(r'^art/$', TemplateView.as_view(template_name='public/art.html'), name='page-art'),
+ url(r'^svn/$', TemplateView.as_view(template_name='public/svn.html'), name='page-svn'),
+ url(r'^donate/$', public.views.donate, name='page-donate'),
+ url(r'^download/$', public.views.download, name='page-download'),
+ url(r'^master-keys/$', public.views.keys, name='page-keys'),
+ url(r'^master-keys/json/$', public.views.keys_json, name='pgp-keys-json'),
+ url(r'^people/(?P<slug>[-\w]+)/$', public.views.people, name='people'),
+])
# 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())),
-)
+feeds_patterns = [
+ url(r'^$', public.views.feeds, name='feeds-list'),
+ url(r'^news/$', cache_page(311)(NewsFeed())),
+ url(r'^packages/$', cache_page(313)(PackageFeed())),
+ url(r'^packages/(?P<arch>[A-z0-9]+)/$', cache_page(313)(PackageFeed())),
+ url(r'^packages/all/(?P<repo>[A-z0-9\-]+)/$', cache_page(313)(PackageFeed())),
+ url(r'^packages/(?P<arch>[A-z0-9]+)/(?P<repo>[A-z0-9\-]+)/$', cache_page(313)(PackageFeed())),
+ url(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'),
-)
+urlpatterns.extend([
+ url(r'^admin/', include(admin.site.urls)),
+ url(r'^devel/', include(devel.urls)),
+ url(r'^feeds/', include(feeds_patterns)),
+ url(r'^groups/', include(packages.urls_groups)),
+ url(r'^mirrorlist/',include(mirrors.urls_mirrorlist)),
+ url(r'^mirrors/', include(mirrors.urls)),
+ url(r'^news/', include(news.urls)),
+ url(r'^packages/', include(packages.urls)),
+ url(r'^releng/', include(releng.urls)),
+ url(r'^todo/', include(todolists.urls)),
+ url(r'^visualize/', include(visualize.urls)),
+ url(r'^opensearch/packages/$', packages.views.opensearch, name='opensearch-packages'),
+ url(r'^opensearch/packages/suggest$', packages.views.opensearch_suggest, name='opensearch-packages-suggest'),
+])
# Retro home page views
-urlpatterns += patterns('retro.views',
- (r'^retro/(?P<year>[0-9]{4})/$', 'retro_homepage', {}, 'retro-homepage'),
-)
+urlpatterns.extend([
+ url(r'^retro/(?P<year>[0-9]{4})/$', retro.views.retro_homepage, name='retro-homepage'),
+])
# Sitemaps
-urlpatterns += patterns('',
- (r'^sitemap.xml$',
- cache_page(1831)(sitemap_views.index),
+urlpatterns.extend([
+ url(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),
+ url(r'^sitemap-(?P<section>.+)\.xml$', cache_page(1831)(sitemap_views.sitemap),
{'sitemaps': our_sitemaps, 'template_name': 'sitemaps/sitemap.xml'},
- 'sitemaps'),
- (r'^news-sitemap\.xml$',
- cache_page(1831)(sitemap_views.sitemap),
+ name='sitemaps'),
+ url(r'^news-sitemap\.xml$', cache_page(1831)(sitemap_views.sitemap),
{'sitemaps': news_sitemaps, 'template_name': 'sitemaps/news_sitemap.xml'},
- 'news-sitemap'),
-)
+ name='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'),
-)
+urlpatterns.extend([
+ url(r'^login/$', auth_views.login, {'template_name': 'registration/login.html'}, name='login'),
+ url(r'^logout/$', auth_views.logout, {'template_name': 'registration/logout.html'}, name='logout'),
+])
def show_urls(urllist=urlpatterns, depth=0):
diff --git a/visualize/urls.py b/visualize/urls.py
index 8c3ea06a..901bd477 100644
--- a/visualize/urls.py
+++ b/visualize/urls.py
@@ -1,9 +1,12 @@
-from django.conf.urls import patterns
+from django.conf.urls import url
-urlpatterns = patterns('visualize.views',
- (r'^$', 'index', {}, 'visualize-index'),
- (r'^by_arch/$', 'by_arch', {}, 'visualize-byarch'),
- (r'^by_repo/$', 'by_repo', {}, 'visualize-byrepo'),
-)
+import views
+
+
+urlpatterns = [
+ url(r'^$', views.index, name='visualize-index'),
+ url(r'^by_arch/$', views.by_arch, name='visualize-byarch'),
+ url(r'^by_repo/$', views.by_repo, name='visualize-byrepo'),
+]
# vim: set ts=4 sw=4 et: