Add parent prefix to slugs

This commit is contained in:
Daniel Egger 2022-09-02 17:42:14 +02:00
parent d5f4b37cfe
commit 2e59d2464c
5 changed files with 21 additions and 11 deletions

View File

@ -141,7 +141,7 @@ const profileDropdownData = [
>
<router-link
v-if="inLearningPath()"
to="/learningpath/versicherungsvermittlerin"
to="/learn/versicherungsvermittlerin"
class="nav-item"
:class="{ 'nav-item--active': inLearningPath() }"
>

View File

@ -63,7 +63,7 @@ export default {
const newCircle = {}
newCircle.pieData = pieData.reverse()
newCircle.title = circle.title
newCircle.slug = circle.slug
newCircle.slug = circle.slug.replace(`${circle.parentLearningPath.slug}-circle-`, '')
newCircle.id = circle.id
internalCircles.push(newCircle)
})

View File

@ -33,7 +33,9 @@ export const useCircleStore = defineStore({
const learningPathStore = useLearningPathStore();
await learningPathStore.loadLearningPath(learningPathSlug);
if (learningPathStore.learningPath) {
this.circle = learningPathStore.learningPath.circles.find(circle => circle.slug === circleSlug);
this.circle = learningPathStore.learningPath.circles.find((circle) => {
return circle.slug.endsWith(circleSlug);
});
}
if (!this.circle) {

View File

@ -106,7 +106,6 @@ LOCAL_APPS = [
"vbv_lernwelt.learnpath",
"vbv_lernwelt.completion",
"vbv_lernwelt.media_library",
]
# https://docs.djangoproject.com/en/dev/ref/settings/#installed-apps
INSTALLED_APPS = DJANGO_APPS + THIRD_PARTY_APPS + LOCAL_APPS

View File

@ -54,7 +54,7 @@ class Topic(Page):
# subpage_types = ['learnpath.Circle']
def full_clean(self, *args, **kwargs):
self.slug = find_available_slug(slugify(f'topic-{self.title}', allow_unicode=True))
self.slug = find_slug_with_parent_prefix(self, 'topic')
super(Topic, self).full_clean(*args, **kwargs)
@classmethod
@ -114,7 +114,7 @@ class Circle(Page):
)
def full_clean(self, *args, **kwargs):
self.slug = find_available_slug(slugify(self.title, allow_unicode=True))
self.slug = find_slug_with_parent_prefix(self, 'circle')
super(Circle, self).full_clean(*args, **kwargs)
class Meta:
@ -155,7 +155,7 @@ class LearningSequence(Page):
</span>'''
def full_clean(self, *args, **kwargs):
self.slug = find_available_slug(slugify(f'ls-{self.title}', allow_unicode=True))
self.slug = find_slug_with_parent_prefix(self, 'ls')
super(LearningSequence, self).full_clean(*args, **kwargs)
@ -170,7 +170,7 @@ class LearningUnit(Page):
return f"{self.title}"
def full_clean(self, *args, **kwargs):
self.slug = find_available_slug(slugify(f'lu-{self.title}', allow_unicode=True))
self.slug = find_slug_with_parent_prefix(self, 'lu')
super(LearningUnit, self).full_clean(*args, **kwargs)
@classmethod
@ -192,7 +192,7 @@ class LearningUnitQuestion(Page):
return f"{self.title}"
def full_clean(self, *args, **kwargs):
self.slug = find_available_slug(slugify(f'luq-{self.title}', allow_unicode=True))
self.slug = find_slug_with_parent_prefix(self, 'luq')
super(LearningUnitQuestion, self).full_clean(*args, **kwargs)
@classmethod
@ -247,8 +247,7 @@ class LearningContent(Page):
verbose_name = "Learning Content"
def full_clean(self, *args, **kwargs):
self.slug = find_available_slug(slugify(f'lc-{self.title}', allow_unicode=True))
print(self.slug)
self.slug = find_slug_with_parent_prefix(self, 'lc')
super(LearningContent, self).full_clean(*args, **kwargs)
@classmethod
@ -261,6 +260,16 @@ class LearningContent(Page):
return f"{self.title}"
def find_slug_with_parent_prefix(page, type_prefix):
parent_slug = page.get_ancestors().exact_type(LearningPath, Circle).last().slug
if parent_slug:
slug_prefix = f"{parent_slug}-{type_prefix}"
else:
slug_prefix = type_prefix
return find_available_slug(slugify(f'{slug_prefix}-{page.title}', allow_unicode=True))
def find_available_slug(requested_slug, ignore_page_id=None):
"""
Finds an available slug within the specified parent.