From 9eec62c31bebd06fc07210a65b352cf7bdf380f2 Mon Sep 17 00:00:00 2001 From: Daniel Egger Date: Fri, 15 Sep 2023 09:47:17 +0200 Subject: [PATCH] Fix problems with slugs in moved ActionCompetences --- client/src/pages/cockpit/CockpitParentPage.vue | 2 +- client/src/pages/competence/CompetenceParentPage.vue | 2 +- .../competence/migrations/0005_move_action_competence.py | 4 ++++ server/vbv_lernwelt/competence/models.py | 4 ++-- server/vbv_lernwelt/competence/tests/test_api.py | 2 +- server/vbv_lernwelt/course/models.py | 6 ++++-- 6 files changed, 13 insertions(+), 7 deletions(-) diff --git a/client/src/pages/cockpit/CockpitParentPage.vue b/client/src/pages/cockpit/CockpitParentPage.vue index f39be69c..984f1c2d 100644 --- a/client/src/pages/cockpit/CockpitParentPage.vue +++ b/client/src/pages/cockpit/CockpitParentPage.vue @@ -25,7 +25,7 @@ onMounted(async () => { await cockpitStore.loadCourseSessionUsers(courseSession.value.id); cockpitStore.courseSessionUsers?.forEach((csu) => { competenceStore.loadCompetenceProfilePage( - props.courseSlug + "-competence", + props.courseSlug + "-competencenavi-competences", csu.user_id ); diff --git a/client/src/pages/competence/CompetenceParentPage.vue b/client/src/pages/competence/CompetenceParentPage.vue index 1cdd8ca9..7b2333ff 100644 --- a/client/src/pages/competence/CompetenceParentPage.vue +++ b/client/src/pages/competence/CompetenceParentPage.vue @@ -34,7 +34,7 @@ onMounted(async () => { log.debug("CompetenceParentPage mounted", props.courseSlug); try { - const competencePageSlug = props.courseSlug + "-competence"; + const competencePageSlug = props.courseSlug + "-competencenavi-competences"; await competenceStore.loadCompetenceProfilePage(competencePageSlug); } catch (error) { log.error(error); diff --git a/server/vbv_lernwelt/competence/migrations/0005_move_action_competence.py b/server/vbv_lernwelt/competence/migrations/0005_move_action_competence.py index c3cfa689..57305186 100644 --- a/server/vbv_lernwelt/competence/migrations/0005_move_action_competence.py +++ b/server/vbv_lernwelt/competence/migrations/0005_move_action_competence.py @@ -108,6 +108,10 @@ def refactor_competence_wagtail_tree(apps=None, schema_editor=None): learning_content_edoniq.content_assignment = edoniq_test learning_content_edoniq.save() + for ac in ActionCompetenceListPage.objects.all(): + # trigger slug update by saving + ac.save() + for competence in ActionCompetence.objects.all(): if competence.competence_id.endswith(":"): # remove trailing colon diff --git a/server/vbv_lernwelt/competence/models.py b/server/vbv_lernwelt/competence/models.py index 2c08bbcf..fc9ba44a 100644 --- a/server/vbv_lernwelt/competence/models.py +++ b/server/vbv_lernwelt/competence/models.py @@ -77,11 +77,11 @@ class ActionCompetenceListPage(CourseBasePage): ] def get_frontend_url(self): - return f"/course/{self.slug.replace('-competence', '')}/competence" + return f"/course/{self.slug.replace('-competencenavi-competences', '')}/competence/competences" 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), + slugify(f"{self.get_parent().slug}-competences", allow_unicode=True), ignore_page_id=self.id, ) super(ActionCompetenceListPage, self).save(clean, user, log_action, **kwargs) diff --git a/server/vbv_lernwelt/competence/tests/test_api.py b/server/vbv_lernwelt/competence/tests/test_api.py index 857ffe14..bf9b181a 100644 --- a/server/vbv_lernwelt/competence/tests/test_api.py +++ b/server/vbv_lernwelt/competence/tests/test_api.py @@ -14,7 +14,7 @@ class CompetenceAPITestCase(APITestCase): self.client.login(username="admin", password="test") def test_get_compentence_page(self): - slug = "test-lehrgang-competence" + slug = "test-lehrgang-competencenavi-competence" competence_profile = ActionCompetenceListPage.objects.get(slug=slug) response = self.client.get(f"/api/course/page/{slug}/") diff --git a/server/vbv_lernwelt/course/models.py b/server/vbv_lernwelt/course/models.py index 86bfccdc..3b621aa9 100644 --- a/server/vbv_lernwelt/course/models.py +++ b/server/vbv_lernwelt/course/models.py @@ -39,10 +39,12 @@ class Course(models.Model): return self.get_learning_path().get_cockpit_url() def get_competence_url(self): - from vbv_lernwelt.competence.models import CompetenceNaviPage + from vbv_lernwelt.competence.models import ActionCompetenceListPage competence_page = ( - self.coursepage.get_children().exact_type(CompetenceNaviPage).first() + self.coursepage.get_descendants() + .exact_type(ActionCompetenceListPage) + .first() ) return competence_page.specific.get_frontend_url()