def clean(self): """ Validates that either the slug is provided, or that slugification from `title` produces a valid slug. :return: """ cleaned_data = super(CreateCMSPageForm, self).clean() slug = cleaned_data.get("slug") sub_page = cleaned_data.get("sub_page") title = cleaned_data.get("title") if self.page: if sub_page: parent = self.page else: parent = self.page.parent else: parent = None if slug: starting_point = slug elif title: starting_point = title else: starting_point = _("page") slug = generate_valid_slug(starting_point, parent, self.language_code) if not slug: raise forms.ValidationError("Please provide a valid slug.") cleaned_data["slug"] = slug return cleaned_data
def test_generage_valid_slug_check_parent(self): title = "Hello Title" page = create_page(title, 'nav_playground.html', 'en') # second time with same title, it should append -1 expected_slug = "hello-title" slug = generate_valid_slug(title, page, 'en') self.assertEqual(slug, expected_slug)
def test_generate_valid_slug(self): title = "Hello Title" expected_slug = "hello-title" # empty db, it should just slugify slug = generate_valid_slug(title, None, 'en') self.assertEqual(slug, expected_slug)