def clean_slug(self):
slug = self.cleaned_data['slug']
if slug.startswith("_"):
raise forms.ValidationError(
ugettext('A slug may not begin with an underscore.'))
if slug == 'admin':
raise forms.ValidationError(
ugettext("'admin' is not a permitted slug name."))
if settings.URL_CASE_SENSITIVE:
already_existing_slug = models.URLPath.objects.filter(
slug=slug,
parent=self.urlpath_parent)
else:
slug = slug.lower()
already_existing_slug = models.URLPath.objects.filter(
slug__iexact=slug,
parent=self.urlpath_parent)
if already_existing_slug:
already_urlpath = already_existing_slug[0]
if already_urlpath.article and already_urlpath.article.current_revision.deleted:
raise forms.ValidationError(
ugettext('A deleted article with slug "%s" already exists.') %
already_urlpath.slug)
else:
raise forms.ValidationError(
ugettext('A slug named "%s" already exists.') %
already_urlpath.slug)
if settings.CHECK_SLUG_URL_AVAILABLE:
try:
# Fail validation if URL resolves to non-wiki app
match = resolve(self.urlpath_parent.path + '/' + slug + '/')
if match.app_name != 'wiki':
raise forms.ValidationError(
ugettext('This slug conflicts with an existing URL.'))
except Resolver404:
pass
return slug
评论列表
文章目录