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:
parent
f2c6153343
commit
2c3b77b0d8
|
|
@ -23,14 +23,14 @@ class CompetenceProfilePage(CourseBasePage):
|
||||||
FieldPanel("title", classname="full title"),
|
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(
|
self.slug = find_available_slug(
|
||||||
slugify(f"{self.get_parent().slug}-competence", allow_unicode=True)
|
slugify(f"{self.get_parent().slug}-competence", allow_unicode=True)
|
||||||
)
|
)
|
||||||
super(CompetenceProfilePage, self).full_clean(*args, **kwargs)
|
super(CompetenceProfilePage, self).save(clean, user, log_action, **kwargs)
|
||||||
|
|
||||||
def get_frontend_url(self):
|
|
||||||
return f"/course/{self.slug.replace('-competence', '')}/competence"
|
|
||||||
|
|
||||||
|
|
||||||
class CompetencePage(CourseBasePage):
|
class CompetencePage(CourseBasePage):
|
||||||
|
|
@ -54,14 +54,14 @@ class CompetencePage(CourseBasePage):
|
||||||
FieldPanel("competence_id"),
|
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(
|
self.slug = find_available_slug(
|
||||||
slugify(
|
slugify(
|
||||||
f"{self.get_parent().slug}-competence-{self.competence_id}",
|
f"{self.get_parent().slug}-competence-{self.competence_id}",
|
||||||
allow_unicode=True,
|
allow_unicode=True,
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
super(CompetencePage, self).full_clean(*args, **kwargs)
|
super(CompetencePage, self).save(clean, user, log_action, **kwargs)
|
||||||
|
|
||||||
|
|
||||||
class PerformanceCriteria(CourseBasePage):
|
class PerformanceCriteria(CourseBasePage):
|
||||||
|
|
@ -80,7 +80,7 @@ class PerformanceCriteria(CourseBasePage):
|
||||||
FieldPanel("learning_unit"),
|
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()
|
profile_parent = self.get_ancestors().exact_type(CompetenceProfilePage).last()
|
||||||
if self.learning_unit and self.learning_unit.course_category:
|
if self.learning_unit and self.learning_unit.course_category:
|
||||||
self.slug = find_available_slug(
|
self.slug = find_available_slug(
|
||||||
|
|
@ -96,7 +96,7 @@ class PerformanceCriteria(CourseBasePage):
|
||||||
allow_unicode=True,
|
allow_unicode=True,
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
super(PerformanceCriteria, self).full_clean(*args, **kwargs)
|
super(PerformanceCriteria, self).save(clean, user, log_action, **kwargs)
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def get_serializer_class(cls):
|
def get_serializer_class(cls):
|
||||||
|
|
|
||||||
|
|
@ -127,9 +127,9 @@ class CoursePage(CourseBasePage):
|
||||||
class Meta:
|
class Meta:
|
||||||
verbose_name = _("Lehrgang-Seite")
|
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))
|
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):
|
def __str__(self):
|
||||||
return f"{self.title}"
|
return f"{self.title}"
|
||||||
|
|
|
||||||
|
|
@ -35,11 +35,11 @@ class LearningPath(CourseBasePage):
|
||||||
class Meta:
|
class Meta:
|
||||||
verbose_name = "Learning Path"
|
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(
|
self.slug = find_available_slug(
|
||||||
slugify(f"{self.get_parent().slug}-lp", allow_unicode=True)
|
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):
|
def __str__(self):
|
||||||
return f"{self.title}"
|
return f"{self.title}"
|
||||||
|
|
@ -60,9 +60,9 @@ class Topic(CourseBasePage):
|
||||||
FieldPanel("is_visible"),
|
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")
|
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):
|
def get_admin_display_title(self):
|
||||||
return f"Thema: {self.draft_title}"
|
return f"Thema: {self.draft_title}"
|
||||||
|
|
@ -104,9 +104,9 @@ class Circle(CourseBasePage):
|
||||||
return "ERROR: could not parse slug"
|
return "ERROR: could not parse slug"
|
||||||
return f"/course/{m.group('coursePart')}/learn/{m.group('circlePart')}"
|
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")
|
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:
|
class Meta:
|
||||||
verbose_name = "Circle"
|
verbose_name = "Circle"
|
||||||
|
|
@ -146,9 +146,9 @@ class LearningSequence(CourseBasePage):
|
||||||
def get_admin_display_title(self):
|
def get_admin_display_title(self):
|
||||||
return f"LS: {self.draft_title}"
|
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")
|
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):
|
def get_frontend_url(self):
|
||||||
r = re.compile(
|
r = re.compile(
|
||||||
|
|
@ -177,7 +177,7 @@ class LearningUnit(CourseBasePage):
|
||||||
def __str__(self):
|
def __str__(self):
|
||||||
return f"{self.title}"
|
return f"{self.title}"
|
||||||
|
|
||||||
def full_clean(self, *args, **kwargs):
|
def save(self, clean=True, user=None, log_action=False, **kwargs):
|
||||||
course = None
|
course = None
|
||||||
course_parent_page = self.get_ancestors().exact_type(CoursePage).last()
|
course_parent_page = self.get_ancestors().exact_type(CoursePage).last()
|
||||||
if course_parent_page:
|
if course_parent_page:
|
||||||
|
|
@ -194,7 +194,7 @@ class LearningUnit(CourseBasePage):
|
||||||
self.slug = find_slug_with_parent_prefix(
|
self.slug = find_slug_with_parent_prefix(
|
||||||
self, "lu", self.course_category.title
|
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):
|
def get_frontend_url(self):
|
||||||
r = re.compile(
|
r = re.compile(
|
||||||
|
|
@ -291,9 +291,9 @@ class LearningContent(CourseBasePage):
|
||||||
return "ERROR: could not parse slug"
|
return "ERROR: could not parse slug"
|
||||||
return f"/course/{m.group('coursePart')}/learn/{m.group('circlePart')}/{m.group('lcPart')}"
|
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")
|
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):
|
def find_slug_with_parent_prefix(page, type_prefix, slug_postfix=None):
|
||||||
|
|
|
||||||
|
|
@ -23,11 +23,11 @@ class MediaLibraryPage(CourseBasePage):
|
||||||
FieldPanel("title", classname="full title"),
|
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(
|
self.slug = find_available_slug(
|
||||||
slugify(f"{self.get_parent().slug}-media", allow_unicode=True)
|
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):
|
def get_frontend_url(self):
|
||||||
return f"/media/{self.slug}"
|
return f"/media/{self.slug}"
|
||||||
|
|
@ -84,11 +84,11 @@ class MediaCategoryPage(CourseBasePage):
|
||||||
StreamFieldPanel("body"),
|
StreamFieldPanel("body"),
|
||||||
]
|
]
|
||||||
|
|
||||||
def full_clean(self, *args, **kwargs):
|
def save(self, clean=True, user=None, log_action=False, **kwargs):
|
||||||
self.slug = find_available_slug(
|
self.slug = find_available_slug(
|
||||||
slugify(f"{self.get_parent().slug}-cat-{self.title}", allow_unicode=True)
|
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):
|
def get_frontend_url(self):
|
||||||
r = re.compile(r"^(?P<coursePart>.+?)-media-cat-(?P<catPart>.+)$")
|
r = re.compile(r"^(?P<coursePart>.+?)-media-cat-(?P<catPart>.+)$")
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue