Skip to content

Commit

Permalink
Merge pull request django-cms#867 from ojii/feature/fix-859
Browse files Browse the repository at this point in the history
  • Loading branch information
fivethreeo committed Jun 15, 2011
2 parents 98ac8e6 + 8f44628 commit 0e038cd
Show file tree
Hide file tree
Showing 2 changed files with 31 additions and 11 deletions.
25 changes: 14 additions & 11 deletions cms/admin/forms.py
@@ -1,4 +1,14 @@
# -*- coding: utf-8 -*-
from cms.apphook_pool import apphook_pool
from cms.forms.widgets import UserSelectAdminWidget
from cms.models import (Page, PagePermission, PageUser, ACCESS_PAGE,
PageUserGroup)
from cms.utils.mail import mail_page_user_change
from cms.utils.page import is_valid_page_slug
from cms.utils.page_resolver import get_page_from_path
from cms.utils.permissions import (get_current_user, get_subordinate_users,
get_subordinate_groups)
from cms.utils.urlutils import any_path_re
from django import forms
from django.conf import settings
from django.contrib.auth.forms import UserCreationForm
Expand All @@ -11,18 +21,9 @@
from django.forms.widgets import HiddenInput
from django.template.defaultfilters import slugify
from django.utils.translation import ugettext_lazy as _, get_language
from menus.menu_pool import menu_pool

from cms.apphook_pool import apphook_pool
from cms.forms.widgets import UserSelectAdminWidget
from cms.models import (Page, PagePermission, PageUser,
ACCESS_PAGE, PageUserGroup)
from cms.utils.mail import mail_page_user_change
from cms.utils.page import is_valid_page_slug
from cms.utils.permissions import (get_current_user, get_subordinate_users,
get_subordinate_groups)
from cms.utils.urlutils import any_path_re

from menus.menu_pool import menu_pool


def get_permission_acessor(obj):
Expand Down Expand Up @@ -158,7 +159,7 @@ def __init__(self, *args, **kwargs):
self.fields['navigation_extenders'].widget = forms.Select({}, [('', "---------")] + menu_pool.get_menus_by_attribute("cms_enabled", True))
if 'application_urls' in self.fields:
self.fields['application_urls'].choices = [('', "---------")] + apphook_pool.get_apphooks()

def clean(self):
cleaned_data = super(PageForm, self).clean()
if 'reverse_id' in self.fields:
Expand All @@ -175,6 +176,8 @@ def clean_overwrite_url(self):
if url:
if not any_path_re.match(url):
raise forms.ValidationError(_('Invalid URL, use /my/url format.'))
if get_page_from_path(url.strip('/')):
raise forms.ValidationError(_('Page with redirect url %r already exist') % url)
return url

class PagePermissionInlineAdminForm(forms.ModelForm):
Expand Down
17 changes: 17 additions & 0 deletions cms/tests/page.py
@@ -1,5 +1,6 @@
# -*- coding: utf-8 -*-
from __future__ import with_statement
from cms.admin.forms import PageForm
from cms.api import create_page
from cms.models import Page, Title
from cms.models.placeholdermodel import Placeholder
Expand Down Expand Up @@ -442,6 +443,22 @@ def test_page_already_expired(self):
publication_end_date=yesterday, published=True)
resp = self.client.get(page.get_absolute_url('en'))
self.assertEqual(resp.status_code, 404)

def test_existing_overwrite_url(self):
with SettingsOverride(CMS_MODERATOR=False, CMS_PERMISSION=False):
create_page('home', 'nav_playground.html', 'en', published=True)
create_page('boo', 'nav_playground.html', 'en', published=True)
data = {
'title': 'foo',
'overwrite_url': '/boo/',
'slug': 'foo',
'language': 'en',
'template': 'nav_playground.html',
'site': 1,
}
form = PageForm(data)
self.assertFalse(form.is_valid())
self.assertTrue('overwrite_url' in form.errors)



Expand Down

0 comments on commit 0e038cd

Please sign in to comment.