コード例 #1
0
    def clean(self):
        cleaned_data = super().clean()

        if self.errors:
            return cleaned_data

        language = self.page_content.language

        slug = cleaned_data["slug"]
        if self.page_content.page.node.parent:
            parent_path = self.page_content.page.node.parent.item.get_path(language)
            path = "%s/%s" % (parent_path, slug) if parent_path else slug
        else:
            path = cleaned_data["slug"]

        try:
            validate_url_uniqueness(
                cleaned_data["site"],
                path=path,
                language=language,
                user_language=language,
            )
        except forms.ValidationError as e:
            self.add_error("slug", e)
        else:
            cleaned_data["path"] = path

        return cleaned_data
コード例 #2
0
    def clean(self):
        data = self.cleaned_data

        if self._errors:
            # Form already has errors, best to let those be
            # addressed first.
            return data

        parent_node = data.get('parent_node')

        if parent_node:
            slug = data['slug']
            parent_path = parent_node.item.get_path(self._language)
            path = u'%s/%s' % (parent_path, slug) if parent_path else slug
        else:
            path = data['slug']

        try:
            # Validate the url
            validate_url_uniqueness(
                self._site,
                path=path,
                language=self._language,
            )
        except ValidationError as error:
            self.add_error('slug', error)
        else:
            data['path'] = path
        return data
コード例 #3
0
    def clean_overwrite_url(self):
        path_override = self.cleaned_data.get('overwrite_url')

        if path_override:
            path = path_override.strip('/')
        else:
            path = self.instance.get_path_for_slug(self.title_obj.slug, self._language)

        validate_url_uniqueness(
            self._site,
            path=path,
            language=self._language,
            exclude_page=self.instance,
        )
        self.cleaned_data['path'] = path
        return path_override
コード例 #4
0
ファイル: forms.py プロジェクト: shoyshab/django-cms
    def clean(self):
        data = super().clean()

        if self._errors:
            # Form already has errors, best to let those be
            # addressed first.
            return data

        page = self.instance

        if page.is_home:
            data['path'] = ''
            return data

        if self.title_obj.has_url_overwrite:
            data['path'] = self.title_obj.path
            return data

        if 'slug' not in self.fields:
            # the {% edit_title_fields %} template tag
            # allows users to edit specific fields for a translation.
            # as a result, slug might not always be there.
            return data

        if page.parent_page:
            slug = data['slug']
            parent_path = page.parent_page.get_path(self._language)
            path = u'%s/%s' % (parent_path, slug) if parent_path else slug
        else:
            path = data['slug']

        try:
            # Validate the url
            validate_url_uniqueness(
                self._site,
                path=path,
                language=self._language,
                exclude_page=page,
            )
        except ValidationError as error:
            self.add_error('slug', error)
        else:
            data['path'] = path
        return data