chore: refactor frontend url parts handling
This commit is contained in:
parent
3f40e2fe07
commit
3cbea17f39
|
|
@ -1,5 +1,6 @@
|
||||||
import re
|
import re
|
||||||
from enum import Enum
|
from enum import Enum
|
||||||
|
from typing import Tuple
|
||||||
|
|
||||||
from django.db import models
|
from django.db import models
|
||||||
from django.utils.text import slugify
|
from django.utils.text import slugify
|
||||||
|
|
@ -219,21 +220,29 @@ class LearningUnit(CourseBasePage):
|
||||||
)
|
)
|
||||||
super(LearningUnit, self).save(clean, user, log_action, **kwargs)
|
super(LearningUnit, self).save(clean, user, log_action, **kwargs)
|
||||||
|
|
||||||
def get_frontend_url(self):
|
def get_frontend_url_parts(self) -> Tuple[str, str, str]:
|
||||||
|
"""
|
||||||
|
Extracts the course, circle and learning unit part from the slug.
|
||||||
|
:return: Tuple of course, circle and learning unit part
|
||||||
|
"""
|
||||||
|
|
||||||
r = re.compile(
|
r = re.compile(
|
||||||
r"^(?P<coursePart>.+?)-lp-circle-(?P<circlePart>.+?)-lu-(?P<luPart>.+?)$"
|
r"^(?P<coursePart>.+?)-lp-circle-(?P<circlePart>.+?)-lu-(?P<luPart>.+?)$"
|
||||||
)
|
)
|
||||||
m = r.match(self.slug)
|
m = r.match(self.slug)
|
||||||
|
|
||||||
if m is None:
|
if m is None:
|
||||||
return "ERROR: could not parse slug"
|
ValueError(f"Could not parse slug: {self.slug}")
|
||||||
return f"/course/{m.group('coursePart')}/learn/{m.group('circlePart')}#lu-{m.group('luPart')}"
|
|
||||||
|
return m.group("coursePart"), m.group("circlePart"), m.group("luPart")
|
||||||
|
|
||||||
|
def get_frontend_url(self):
|
||||||
|
course, circle, learning_unit = self.get_frontend_url_parts()
|
||||||
|
return f"/course/{course}/learn/{circle}#lu-{learning_unit}"
|
||||||
|
|
||||||
def get_evaluate_url(self):
|
def get_evaluate_url(self):
|
||||||
r = re.compile(
|
course, circle, learning_unit = self.get_frontend_url_parts()
|
||||||
r"^(?P<coursePart>.+?)-lp-circle-(?P<circlePart>.+?)-lu-(?P<luPart>.+?)$"
|
return f"/course/{course}/learn/{circle}/evaluate/{learning_unit}"
|
||||||
)
|
|
||||||
m = r.match(self.slug)
|
|
||||||
return f"/course/{m.group('coursePart')}/learn/{m.group('circlePart')}/evaluate/{m.group('luPart')}"
|
|
||||||
|
|
||||||
def get_admin_display_title(self):
|
def get_admin_display_title(self):
|
||||||
return f"LE: {self.draft_title}"
|
return f"LE: {self.draft_title}"
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue