From c6aa7cbae32e87c41fd81ceae30bd4ed76014bae Mon Sep 17 00:00:00 2001 From: Alexander Artemenko Date: Fri, 14 Aug 2009 15:24:52 -0400 Subject: [PATCH] Added redirect to existing repository from add view. --- src/django_vcs_watch/urls.py | 5 +++-- src/django_vcs_watch/views.py | 16 ++++++++++++++-- 2 files changed, 17 insertions(+), 4 deletions(-) diff --git a/src/django_vcs_watch/urls.py b/src/django_vcs_watch/urls.py index 12dd819..c038b89 100644 --- a/src/django_vcs_watch/urls.py +++ b/src/django_vcs_watch/urls.py @@ -33,14 +33,15 @@ } urlpatterns = patterns('django.views.generic', - (r'^r/(?P[a-z0-9]{8}-[a-z0-9]{4}-[a-z0-9]{4}-[a-z0-9]{4}-[a-z0-9]{12})/$', 'list_detail.object_detail', repository_info, 'vcs-watch-repository'), - (r'^add/$', 'create_update.create_object', add_page, 'vcs-watch-add'), + (r'^r/(?P[a-z0-9]{8}-[a-z0-9]{4}-[a-z0-9]{4}-[a-z0-9]{4}-[a-z0-9]{12})/$', + 'list_detail.object_detail', repository_info, 'vcs-watch-repository'), #(r'^r/$', 'simple.direct_to_template', main_page, 'vcs-watch-main-page'), ) urlpatterns += patterns('django_vcs_watch.views', (r'^r/(?P[a-z0-9]{8}-[a-z0-9]{4}-[a-z0-9]{4}-[a-z0-9]{4}-[a-z0-9]{12})/(?P[a-z0-9-]{1,36})/$', 'revision', {}, 'vcs-watch-revision'), (r'^profile/$', 'profile', {}, 'vcs-watch-profile'), + (r'^add/$', 'add_repository', add_page, 'vcs-watch-add'), ) urlpatterns += patterns('django.contrib.syndication.views', diff --git a/src/django_vcs_watch/views.py b/src/django_vcs_watch/views.py index fe377f3..eb461c9 100644 --- a/src/django_vcs_watch/views.py +++ b/src/django_vcs_watch/views.py @@ -1,9 +1,10 @@ from django.shortcuts import get_object_or_404 from django.views.generic.list_detail import object_detail, object_list +from django.views.generic.create_update import create_object from django.contrib.auth.decorators import login_required -from django.http import HttpResponseForbidden +from django.http import HttpResponseForbidden, HttpResponseRedirect -from models import Repository +from django_vcs_watch.models import Repository def revision(request, repository_slug, revision): repository = get_object_or_404(Repository, hash=repository_slug) @@ -13,9 +14,20 @@ def revision(request, repository_slug, revision): slug=revision, slug_field='rev') + @login_required def profile(request): return object_list( request, queryset=request.user.repository_set.all()) + +def add_repository(request, *args, **kwargs): + url = request.POST.get('url', None) + reps = Repository.objects.filter(url = url).all() + + if len(reps) > 0: + return HttpResponseRedirect(reps[0].get_absolute_url()) + + return create_object(request, *args, **kwargs) +