VBV-234: Bugfix neue Seiten im Wagtail erstellen

Der `parent` einer Page ist erst in der `save` Funktion
vorhanden für eine neue Seite. Deshalb muss man das
Überschreiben der `slug` im `save` machen.
This commit is contained in:
Daniel Egger 2023-04-05 14:47:00 +02:00
parent f2c6153343
commit 2c3b77b0d8
4 changed files with 27 additions and 27 deletions

View File

@ -23,14 +23,14 @@ class CompetenceProfilePage(CourseBasePage):
FieldPanel("title", classname="full title"),
]
def full_clean(self, *args, **kwargs):
def get_frontend_url(self):
return f"/course/{self.slug.replace('-competence', '')}/competence"
def save(self, clean=True, user=None, log_action=False, **kwargs):
self.slug = find_available_slug(
slugify(f"{self.get_parent().slug}-competence", allow_unicode=True)
)
super(CompetenceProfilePage, self).full_clean(*args, **kwargs)
def get_frontend_url(self):
return f"/course/{self.slug.replace('-competence', '')}/competence"
super(CompetenceProfilePage, self).save(clean, user, log_action, **kwargs)
class CompetencePage(CourseBasePage):
@ -54,14 +54,14 @@ class CompetencePage(CourseBasePage):
FieldPanel("competence_id"),
]
def full_clean(self, *args, **kwargs):
def save(self, clean=True, user=None, log_action=False, **kwargs):
self.slug = find_available_slug(
slugify(
f"{self.get_parent().slug}-competence-{self.competence_id}",
allow_unicode=True,
)
)
super(CompetencePage, self).full_clean(*args, **kwargs)
super(CompetencePage, self).save(clean, user, log_action, **kwargs)
class PerformanceCriteria(CourseBasePage):
@ -80,7 +80,7 @@ class PerformanceCriteria(CourseBasePage):
FieldPanel("learning_unit"),
]
def full_clean(self, *args, **kwargs):
def save(self, clean=True, user=None, log_action=False, **kwargs):
profile_parent = self.get_ancestors().exact_type(CompetenceProfilePage).last()
if self.learning_unit and self.learning_unit.course_category:
self.slug = find_available_slug(
@ -96,7 +96,7 @@ class PerformanceCriteria(CourseBasePage):
allow_unicode=True,
)
)
super(PerformanceCriteria, self).full_clean(*args, **kwargs)
super(PerformanceCriteria, self).save(clean, user, log_action, **kwargs)
@classmethod
def get_serializer_class(cls):

View File

@ -127,9 +127,9 @@ class CoursePage(CourseBasePage):
class Meta:
verbose_name = _("Lehrgang-Seite")
def full_clean(self, *args, **kwargs):
def save(self, *args, **kwargs):
self.slug = find_available_slug(slugify(self.title, allow_unicode=True))
super(CoursePage, self).full_clean(*args, **kwargs)
super(CoursePage, self).save(*args, **kwargs)
def __str__(self):
return f"{self.title}"

View File

@ -35,11 +35,11 @@ class LearningPath(CourseBasePage):
class Meta:
verbose_name = "Learning Path"
def full_clean(self, *args, **kwargs):
def save(self, clean=True, user=None, log_action=False, **kwargs):
self.slug = find_available_slug(
slugify(f"{self.get_parent().slug}-lp", allow_unicode=True)
)
super(LearningPath, self).full_clean(*args, **kwargs)
super(LearningPath, self).save(clean, user, log_action, **kwargs)
def __str__(self):
return f"{self.title}"
@ -60,9 +60,9 @@ class Topic(CourseBasePage):
FieldPanel("is_visible"),
]
def full_clean(self, *args, **kwargs):
def save(self, clean=True, user=None, log_action=False, **kwargs):
self.slug = find_slug_with_parent_prefix(self, "topic")
super(Topic, self).full_clean(*args, **kwargs)
super(Topic, self).save(clean, user, log_action, **kwargs)
def get_admin_display_title(self):
return f"Thema: {self.draft_title}"
@ -104,9 +104,9 @@ class Circle(CourseBasePage):
return "ERROR: could not parse slug"
return f"/course/{m.group('coursePart')}/learn/{m.group('circlePart')}"
def full_clean(self, *args, **kwargs):
def save(self, clean=True, user=None, log_action=False, **kwargs):
self.slug = find_slug_with_parent_prefix(self, "circle")
super(Circle, self).full_clean(*args, **kwargs)
super(Circle, self).save(clean, user, log_action, **kwargs)
class Meta:
verbose_name = "Circle"
@ -146,9 +146,9 @@ class LearningSequence(CourseBasePage):
def get_admin_display_title(self):
return f"LS: {self.draft_title}"
def full_clean(self, *args, **kwargs):
def save(self, clean=True, user=None, log_action=False, **kwargs):
self.slug = find_slug_with_parent_prefix(self, "ls")
super(LearningSequence, self).full_clean(*args, **kwargs)
super(LearningSequence, self).save(clean, user, log_action, **kwargs)
def get_frontend_url(self):
r = re.compile(
@ -177,7 +177,7 @@ class LearningUnit(CourseBasePage):
def __str__(self):
return f"{self.title}"
def full_clean(self, *args, **kwargs):
def save(self, clean=True, user=None, log_action=False, **kwargs):
course = None
course_parent_page = self.get_ancestors().exact_type(CoursePage).last()
if course_parent_page:
@ -194,7 +194,7 @@ class LearningUnit(CourseBasePage):
self.slug = find_slug_with_parent_prefix(
self, "lu", self.course_category.title
)
super(LearningUnit, self).full_clean(*args, **kwargs)
super(LearningUnit, self).save(clean, user, log_action, **kwargs)
def get_frontend_url(self):
r = re.compile(
@ -291,9 +291,9 @@ class LearningContent(CourseBasePage):
return "ERROR: could not parse slug"
return f"/course/{m.group('coursePart')}/learn/{m.group('circlePart')}/{m.group('lcPart')}"
def full_clean(self, *args, **kwargs):
def save(self, clean=True, user=None, log_action=False, **kwargs):
self.slug = find_slug_with_parent_prefix(self, "lc")
super(LearningContent, self).full_clean(*args, **kwargs)
super().save(**kwargs)
def find_slug_with_parent_prefix(page, type_prefix, slug_postfix=None):

View File

@ -23,11 +23,11 @@ class MediaLibraryPage(CourseBasePage):
FieldPanel("title", classname="full title"),
]
def full_clean(self, *args, **kwargs):
def save(self, clean=True, user=None, log_action=False, **kwargs):
self.slug = find_available_slug(
slugify(f"{self.get_parent().slug}-media", allow_unicode=True)
)
super(MediaLibraryPage, self).full_clean(*args, **kwargs)
super(MediaLibraryPage, self).save(clean, user, log_action, **kwargs)
def get_frontend_url(self):
return f"/media/{self.slug}"
@ -84,11 +84,11 @@ class MediaCategoryPage(CourseBasePage):
StreamFieldPanel("body"),
]
def full_clean(self, *args, **kwargs):
def save(self, clean=True, user=None, log_action=False, **kwargs):
self.slug = find_available_slug(
slugify(f"{self.get_parent().slug}-cat-{self.title}", allow_unicode=True)
)
super(MediaCategoryPage, self).full_clean(*args, **kwargs)
super(MediaCategoryPage, self).save(clean, user, log_action, **kwargs)
def get_frontend_url(self):
r = re.compile(r"^(?P<coursePart>.+?)-media-cat-(?P<catPart>.+)$")