view savane/svmain/urls.py @ 318:8d7c891dec61

Start adding some stats for the homepage
author Sylvain Beucler <beuc@beuc.net>
date Wed, 18 Aug 2010 23:35:26 +0200
parents f5791b0b34d9
children
line wrap: on
line source

# URL dispatching for presentation pages
# Copyright (C) 2009, 2010  Sylvain Beucler
# Copyright (C) 2009  Jonathan Gonzalez V.
#
# This file is part of Savane.
# 
# Savane is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as
# published by the Free Software Foundation, either version 3 of the
# License, or (at your option) any later version.
# 
# Savane is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU Affero General Public License for more details.
# 
# You should have received a copy of the GNU Affero General Public License
# along with this program.  If not, see <http://www.gnu.org/licenses/>.

from django.conf.urls.defaults import *
from django.views.generic.list_detail import object_list, object_detail
from django.contrib.auth.decorators import login_required
from django.utils.translation import ugettext, ugettext_lazy as _

import savane.svmain.models as svmain_models
import django.contrib.auth.models as auth_models
import views
from savane.filters import search
from savane.perms import only_project_admin, only_superuser
from savane.django_utils import decorated_patterns

urlpatterns = patterns ('',)

urlpatterns += patterns ('',
  url(r'^$', views.homepage,
      { },
      name='homepage'),
  # TODO: add a web interface to edit some static content (using Django template notation?)
  url(r'^contact/$', 'django.views.generic.simple.direct_to_template',
      { 'template' : 'svmain/text.html',
        'extra_context' : { 'title' : 'Contact', }, },
      name='contact'),
)

# Superuser actions
urlpatterns += decorated_patterns ('', only_superuser,
  url(r'^superuser/toggle/$', views.superuser_toggle,
      name='superuser_toggle'),
  url(r'^superuser/impersonate/$', views.superuser_impersonate,
      name='superuser_impersonate'),
)

# TODO: not sure about the views naming convention - all this
# "models in 'svmain', views in 'my'" is getting messy, probably a
# mistake from me (Beuc) :P
from django.contrib.auth.admin import UserAdmin
urlpatterns += patterns ('',
  url(r'^u/$',
      search(object_list),
      { 'queryset': auth_models.User.objects.order_by('username'),
        'paginate_by': 20,
        'model_admin': UserAdmin,
        'extra_context' : { 'title' : _("Users") },
        'template_name' : 'svmain/user_list.html' },
      name='user_list'),
  url(r'^u/(?P<slug>[-\w]+)/$', object_detail,
      { 'queryset' : auth_models.User.objects.all(),
        'slug_field' : 'username',
        'extra_context' : { 'title' : _("User detail") },
        'template_name' : 'svmain/user_detail.html', },
      name='user_detail'),
  url(r'^us/(?P<slug>[-\w]+)/$', views.user_redir),
  url(r'^users/(?P<slug>[-\w]+)/?$', views.user_redir),
)

from django.contrib.auth.admin import GroupAdmin
urlpatterns += patterns ('',
  url(r'^p/$',
      search(object_list),
      { 'queryset': auth_models.Group.objects.order_by('name'),
        'paginate_by': 20,
        'model_admin': GroupAdmin,
        'extra_context' : { 'title' : _("Projects") },
        'template_name' : 'svmain/group_list.html' },
      name='group_list'),
  url(r'^p/(?P<slug>[-\w]+)/$', object_detail,
      { 'queryset' : auth_models.Group.objects.all(),
        'slug_field' : 'name',
        'template_name' : 'svmain/group_detail.html',
        'template_object_name' : 'group', },
      name='group_detail'),
  url(r'^pr/(?P<slug>[-\w]+)/$', views.group_redir),
  url(r'^projects/(?P<slug>[-\w]+)/$', views.group_redir),
  url(r'^p/(?P<slug>[-\w]+)/memberlist/$', object_detail,
      { 'queryset' : auth_models.Group.objects.all(),
        'slug_field' : 'name',
        'extra_context' : { 'title' : _("Project members list") },
        'template_name' : 'svmain/group_memberlist.html',
        'template_object_name' : 'group', },
      name='group_memberlist'),
  url(r'^p/(?P<slug>[-\w]+)/gpgkeyring/$', views.group_gpgkeyring,
      { 'extra_context' : { 'title' : _("Project members GPG keyring") }, },
      name='group_gpgkeyring'),
  url(r'^p/(?P<slug>[-\w]+)/gpgkeyring/download/$', views.group_gpgkeyring_download,
      name='group_gpgkeyring_download'),
  url(r'^p/(?P<slug>[-\w]+)/mailinglist/$', views.group_mailinglist,
      { 'extra_context' : { 'title' : _("Mailing lists") }, },
      name='group_mailinglist'),
  # VCS
  url(r'^p/(?P<slug>[-\w]+)/vcs/cvs/$', object_detail,
      { 'queryset' : auth_models.Group.objects.all(),
        'slug_field' : 'name',
        'extra_context' : { 'title' : _("CVS Repositories") },
        'template_name' : 'svmain/group_vcs_cvs.html',
        'template_object_name' : 'group', },
      name='group_vcs_cvs'),
  url(r'^p/(?P<slug>[-\w]+)/svn/cvs/$', object_detail,
      { 'queryset' : auth_models.Group.objects.all(),
        'slug_field' : 'name',
        'extra_context' : { 'title' : _("Subversion Repositories") },
        'template_name' : 'svmain/group_vcs_svn.html',
        'template_object_name' : 'group', },
      name='group_vcs_svn'),
  url(r'^p/(?P<slug>[-\w]+)/arch/cvs/$', object_detail,
      { 'queryset' : auth_models.Group.objects.all(),
        'slug_field' : 'name',
        'extra_context' : { 'title' : _("GNU Arch Repositories") },
        'template_name' : 'svmain/group_vcs_arch.html',
        'template_object_name' : 'group', },
      name='group_vcs_arch'),
  url(r'^p/(?P<slug>[-\w]+)/git/cvs/$', object_detail,
      { 'queryset' : auth_models.Group.objects.all(),
        'slug_field' : 'name',
        'extra_context' : { 'title' : _("Git Repositories") },
        'template_name' : 'svmain/group_vcs_git.html',
        'template_object_name' : 'group', },
      name='group_vcs_git'),
  url(r'^p/(?P<slug>[-\w]+)/hg/cvs/$', object_detail,
      { 'queryset' : auth_models.Group.objects.all(),
        'slug_field' : 'name',
        'extra_context' : { 'title' : _("Mercurial Repositories") },
        'template_name' : 'svmain/group_vcs_hg.html',
        'template_object_name' : 'group', },
      name='group_vcs_hg'),
  url(r'^p/(?P<slug>[-\w]+)/bzr/cvs/$', object_detail,
      { 'queryset' : auth_models.Group.objects.all(),
        'slug_field' : 'name',
        'extra_context' : { 'title' : _("Bazaar Repositories") },
        'template_name' : 'svmain/group_vcs_bzr.html',
        'template_object_name' : 'group', },
      name='group_vcs_bzr'),

)
urlpatterns += decorated_patterns ('', login_required,
  url(r'^p/(?P<slug>[-\w]+)/join/$', views.group_join),
)
urlpatterns += decorated_patterns ('', only_project_admin,
  url(r'^p/(?P<slug>[-\w]+)/admin/$', views.group_admin,
      name='group_admin'),
  url(r'^p/(?P<slug>[-\w]+)/admin/info/$', views.group_admin_info,
      { 'post_save_redirect' : '../../',  # back to project page to see the changes
        'extra_context' : { 'title' : _("Editing public info") }, },
      name='group_admin_info'),
  url(r'^p/(?P<slug>[-\w]+)/admin/features/$', views.group_admin_features,
      { 'extra_context' : { 'title' : _("Select features") },
        'post_save_redirect': ''},
      name='group_admin_features'),
  url(r'^p/(?P<slug>[-\w]+)/admin/members/$', views.group_admin_members,
      { 'extra_context' : { 'title' : _("Manage members") }, },
      name='group_admin_members'),
  url(r'^p/(?P<slug>[-\w]+)/admin/members/add/$', views.group_admin_members_add,
      { 'extra_context' : { 'title' : _("Manage members") }, },
      name='group_admin_members_add'),
)

urlpatterns += patterns ('',
  url(r'^license/$', 'django.views.generic.list_detail.object_list',
      { 'queryset' : svmain_models.License.objects.all(),
        'extra_context' : { 'title' : _("License list") }, },
      name='license_list'),
  url(r'^license/(?P<slug>[-\w]+)$', object_detail,
      { 'queryset' : svmain_models.License.objects.all(),
        'extra_context' : { 'title' : _("License detail") }, },
      name='license_detail'),
)