From 5303ce3ef2b686174cd1a817eaebbdf6dbdb1822 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=89lie=20Bouttier?= Date: Sat, 30 Aug 2014 16:46:28 -0700 Subject: [PATCH] fix: avoid project url conflicts --- ponytracker/settings.py | 4 +++- tracker/urls.py | 2 +- tracker/views.py | 9 +++++---- 3 files changed, 9 insertions(+), 6 deletions(-) diff --git a/ponytracker/settings.py b/ponytracker/settings.py index 5c2f554..418cbdb 100644 --- a/ponytracker/settings.py +++ b/ponytracker/settings.py @@ -162,4 +162,6 @@ CELERY_RESULT_SERIALIZER = 'json' AUTH_USER_MODEL = 'accounts.User' -RESERVED_PROJECT_NAME = [ 'login', 'logout', 'profile', 'admin', 'django-admin' ] +RESERVED_PROJECT_URLS = [ + 'login', 'logout', 'profile', 'admin', 'django-admin' +] diff --git a/tracker/urls.py b/tracker/urls.py index aed6c06..2b3d969 100644 --- a/tracker/urls.py +++ b/tracker/urls.py @@ -5,7 +5,7 @@ urlpatterns = [ # Administration: redirect on first available admin page url(r'^admin/$', 'tracker.views.admin', name='admin'), # Settings - url(r'^admin/settings/$', 'tracker.views.settings', name='settings'), + url(r'^admin/settings/$', 'tracker.views.settings_list', name='settings'), # Projects url(r'^$', 'tracker.views.project_list', name='list-project'), url(r'^add/$', 'tracker.views.project_add', name='add-project'), diff --git a/tracker/views.py b/tracker/views.py index 9c8a9ec..5388dcc 100644 --- a/tracker/views.py +++ b/tracker/views.py @@ -3,6 +3,7 @@ from django.contrib import messages from django.core.exceptions import ObjectDoesNotExist, PermissionDenied from django.contrib.auth.decorators import login_required from django.views.decorators.http import require_http_methods +from django.conf import settings from tracker.forms import * from tracker.models import * @@ -39,7 +40,7 @@ def admin(request): ############ @project_perm_required('manage_settings') -def settings(request): +def settings_list(request): return render(request, 'tracker/settings.html') @@ -66,9 +67,9 @@ def project_add(request): if request.method == 'POST' and form.is_valid(): name = form.cleaned_data['name'] - if Project.objects.filter(name__iexact=name).exists(): - form._errors['name'] = ['There is already a project ' - 'with a similar name.'] + if name in settings.RESERVED_PROJECT_URLS: + form._errors['name'] = ['Sorry, this URL is reserved ' + 'and can not be used.'] else: project = form.save() messages.success(request, 'Project added successfully.')