Add parent prefix to slugs
This commit is contained in:
parent
d5f4b37cfe
commit
2e59d2464c
|
|
@ -141,7 +141,7 @@ const profileDropdownData = [
|
||||||
>
|
>
|
||||||
<router-link
|
<router-link
|
||||||
v-if="inLearningPath()"
|
v-if="inLearningPath()"
|
||||||
to="/learningpath/versicherungsvermittlerin"
|
to="/learn/versicherungsvermittlerin"
|
||||||
class="nav-item"
|
class="nav-item"
|
||||||
:class="{ 'nav-item--active': inLearningPath() }"
|
:class="{ 'nav-item--active': inLearningPath() }"
|
||||||
>
|
>
|
||||||
|
|
|
||||||
|
|
@ -63,7 +63,7 @@ export default {
|
||||||
const newCircle = {}
|
const newCircle = {}
|
||||||
newCircle.pieData = pieData.reverse()
|
newCircle.pieData = pieData.reverse()
|
||||||
newCircle.title = circle.title
|
newCircle.title = circle.title
|
||||||
newCircle.slug = circle.slug
|
newCircle.slug = circle.slug.replace(`${circle.parentLearningPath.slug}-circle-`, '')
|
||||||
newCircle.id = circle.id
|
newCircle.id = circle.id
|
||||||
internalCircles.push(newCircle)
|
internalCircles.push(newCircle)
|
||||||
})
|
})
|
||||||
|
|
|
||||||
|
|
@ -33,7 +33,9 @@ export const useCircleStore = defineStore({
|
||||||
const learningPathStore = useLearningPathStore();
|
const learningPathStore = useLearningPathStore();
|
||||||
await learningPathStore.loadLearningPath(learningPathSlug);
|
await learningPathStore.loadLearningPath(learningPathSlug);
|
||||||
if (learningPathStore.learningPath) {
|
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) {
|
if (!this.circle) {
|
||||||
|
|
|
||||||
|
|
@ -106,7 +106,6 @@ LOCAL_APPS = [
|
||||||
"vbv_lernwelt.learnpath",
|
"vbv_lernwelt.learnpath",
|
||||||
"vbv_lernwelt.completion",
|
"vbv_lernwelt.completion",
|
||||||
"vbv_lernwelt.media_library",
|
"vbv_lernwelt.media_library",
|
||||||
|
|
||||||
]
|
]
|
||||||
# https://docs.djangoproject.com/en/dev/ref/settings/#installed-apps
|
# https://docs.djangoproject.com/en/dev/ref/settings/#installed-apps
|
||||||
INSTALLED_APPS = DJANGO_APPS + THIRD_PARTY_APPS + LOCAL_APPS
|
INSTALLED_APPS = DJANGO_APPS + THIRD_PARTY_APPS + LOCAL_APPS
|
||||||
|
|
|
||||||
|
|
@ -54,7 +54,7 @@ class Topic(Page):
|
||||||
# subpage_types = ['learnpath.Circle']
|
# subpage_types = ['learnpath.Circle']
|
||||||
|
|
||||||
def full_clean(self, *args, **kwargs):
|
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)
|
super(Topic, self).full_clean(*args, **kwargs)
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
|
|
@ -114,7 +114,7 @@ class Circle(Page):
|
||||||
)
|
)
|
||||||
|
|
||||||
def full_clean(self, *args, **kwargs):
|
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)
|
super(Circle, self).full_clean(*args, **kwargs)
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
|
|
@ -155,7 +155,7 @@ class LearningSequence(Page):
|
||||||
</span>'''
|
</span>'''
|
||||||
|
|
||||||
def full_clean(self, *args, **kwargs):
|
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)
|
super(LearningSequence, self).full_clean(*args, **kwargs)
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -170,7 +170,7 @@ class LearningUnit(Page):
|
||||||
return f"{self.title}"
|
return f"{self.title}"
|
||||||
|
|
||||||
def full_clean(self, *args, **kwargs):
|
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)
|
super(LearningUnit, self).full_clean(*args, **kwargs)
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
|
|
@ -192,7 +192,7 @@ class LearningUnitQuestion(Page):
|
||||||
return f"{self.title}"
|
return f"{self.title}"
|
||||||
|
|
||||||
def full_clean(self, *args, **kwargs):
|
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)
|
super(LearningUnitQuestion, self).full_clean(*args, **kwargs)
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
|
|
@ -247,8 +247,7 @@ class LearningContent(Page):
|
||||||
verbose_name = "Learning Content"
|
verbose_name = "Learning Content"
|
||||||
|
|
||||||
def full_clean(self, *args, **kwargs):
|
def full_clean(self, *args, **kwargs):
|
||||||
self.slug = find_available_slug(slugify(f'lc-{self.title}', allow_unicode=True))
|
self.slug = find_slug_with_parent_prefix(self, 'lc')
|
||||||
print(self.slug)
|
|
||||||
super(LearningContent, self).full_clean(*args, **kwargs)
|
super(LearningContent, self).full_clean(*args, **kwargs)
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
|
|
@ -261,6 +260,16 @@ class LearningContent(Page):
|
||||||
return f"{self.title}"
|
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):
|
def find_available_slug(requested_slug, ignore_page_id=None):
|
||||||
"""
|
"""
|
||||||
Finds an available slug within the specified parent.
|
Finds an available slug within the specified parent.
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue