permissions verfügbare Kurse korrigiert
This commit is contained in:
parent
9d2d9ac314
commit
673d2d6653
@ -8,32 +8,47 @@ def is_video_allowed_for_level(filename: str, mandant_level: int | None) -> bool
|
|||||||
basename = os.path.basename(filename)
|
basename = os.path.basename(filename)
|
||||||
first_char = basename[:1].upper()
|
first_char = basename[:1].upper()
|
||||||
|
|
||||||
if mandant_level in (0, 1):
|
# 0 = Admin = alles
|
||||||
|
if mandant_level == 0:
|
||||||
return True
|
return True
|
||||||
|
|
||||||
|
# 1 = Gold = A + B + C
|
||||||
|
if mandant_level == 1:
|
||||||
|
return first_char in ("A", "B", "C")
|
||||||
|
|
||||||
|
# 2 = Silber = A + B
|
||||||
if mandant_level == 2:
|
if mandant_level == 2:
|
||||||
return first_char in ("A", "B")
|
return first_char in ("A", "B")
|
||||||
|
|
||||||
|
# 3 = Bronze = A
|
||||||
if mandant_level == 3:
|
if mandant_level == 3:
|
||||||
return first_char == "A"
|
return first_char == "A"
|
||||||
|
|
||||||
return False
|
return False
|
||||||
|
|
||||||
def get_available_courses_for_user():
|
|
||||||
level = session.get("mandant_level", 0)
|
|
||||||
|
|
||||||
conn = get_connection()
|
|
||||||
cur = conn.cursor()
|
|
||||||
|
|
||||||
cur.execute("""
|
def is_course_allowed_for_level(code: str, mandant_level: int | None) -> bool:
|
||||||
SELECT id, code, title, description, video_file
|
if mandant_level is None:
|
||||||
FROM course
|
return False
|
||||||
WHERE is_active = TRUE
|
|
||||||
AND min_level <= %s
|
|
||||||
ORDER BY sort_order, code
|
|
||||||
""", (level,))
|
|
||||||
|
|
||||||
courses = fetchall_dict(cur)
|
prefix = (code or "")[:1].upper()
|
||||||
|
|
||||||
cur.close()
|
# 0 = Admin = alles
|
||||||
conn.close()
|
if mandant_level == 0:
|
||||||
|
return True
|
||||||
|
|
||||||
|
# 1 = Gold = A + B + C
|
||||||
|
if mandant_level == 1:
|
||||||
|
return prefix in ("A", "B", "C")
|
||||||
|
|
||||||
|
# 2 = Silber = A + B
|
||||||
|
if mandant_level == 2:
|
||||||
|
return prefix in ("A", "B")
|
||||||
|
|
||||||
|
# 3 = Bronze = A
|
||||||
|
if mandant_level == 3:
|
||||||
|
return prefix == "A"
|
||||||
|
|
||||||
|
return False
|
||||||
|
|
||||||
return courses
|
|
||||||
@ -1,4 +1,28 @@
|
|||||||
from permissions import is_video_allowed_for_level
|
from permissions import is_video_allowed_for_level, is_course_allowed_for_level
|
||||||
|
|
||||||
|
|
||||||
|
def test_course_level_0_admin_sees_all():
|
||||||
|
assert is_course_allowed_for_level("A1", 0) is True
|
||||||
|
assert is_course_allowed_for_level("B1", 0) is True
|
||||||
|
assert is_course_allowed_for_level("C1", 0) is True
|
||||||
|
|
||||||
|
|
||||||
|
def test_course_level_1_gold_sees_a_b_c():
|
||||||
|
assert is_course_allowed_for_level("A1", 1) is True
|
||||||
|
assert is_course_allowed_for_level("B1", 1) is True
|
||||||
|
assert is_course_allowed_for_level("C1", 1) is True
|
||||||
|
|
||||||
|
|
||||||
|
def test_course_level_2_silber_sees_a_b():
|
||||||
|
assert is_course_allowed_for_level("A1", 2) is True
|
||||||
|
assert is_course_allowed_for_level("B1", 2) is True
|
||||||
|
assert is_course_allowed_for_level("C1", 2) is False
|
||||||
|
|
||||||
|
|
||||||
|
def test_course_level_3_bronze_sees_only_a():
|
||||||
|
assert is_course_allowed_for_level("A1", 3) is True
|
||||||
|
assert is_course_allowed_for_level("B1", 3) is False
|
||||||
|
assert is_course_allowed_for_level("C1", 3) is False
|
||||||
|
|
||||||
def test_level_0_sees_everything():
|
def test_level_0_sees_everything():
|
||||||
assert is_video_allowed_for_level("A1.mp4", 0) is True
|
assert is_video_allowed_for_level("A1.mp4", 0) is True
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user