From 020b7b64dd27cc0191ae083f72a7ac6b375c627d Mon Sep 17 00:00:00 2001 From: Daniel Egger Date: Mon, 26 Aug 2024 10:28:10 +0200 Subject: [PATCH] =?UTF-8?q?VBV-726:=20Mediathek=20f=C3=BCr=20Berufsbildner?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- server/vbv_lernwelt/iam/permissions.py | 30 ++++++++++++++++++++++---- 1 file changed, 26 insertions(+), 4 deletions(-) diff --git a/server/vbv_lernwelt/iam/permissions.py b/server/vbv_lernwelt/iam/permissions.py index e530ae49..f52c60d9 100644 --- a/server/vbv_lernwelt/iam/permissions.py +++ b/server/vbv_lernwelt/iam/permissions.py @@ -69,18 +69,37 @@ def has_media_library(user, course_session_id: int): ).exists() -def is_course_session_learning_mentor(mentor: User, course_session_id: int): +def has_agent_role_in_course_session( + agent: User, course_session_id: int, role: AgentParticipantRoleType +): course_session = CourseSession.objects.get(id=course_session_id) if course_session is None: return False return AgentParticipantRelation.objects.filter( - agent=mentor, - role=AgentParticipantRoleType.LEARNING_MENTOR.value, + agent=agent, + participant__course_session_id=course_session_id, + role=role.value, ).exists() +def is_course_session_learning_mentor(mentor: User, course_session_id: int): + return has_agent_role_in_course_session( + agent=mentor, + course_session_id=course_session_id, + role=AgentParticipantRoleType.LEARNING_MENTOR, + ) + + +def is_course_session_berufsbildner(agent: User, course_session_id: int): + return has_agent_role_in_course_session( + agent=agent, + course_session_id=course_session_id, + role=AgentParticipantRoleType.BERUFSBILDNER, + ) + + def is_agent_for_user( agent: User, participant_user_id: str, @@ -329,6 +348,7 @@ def course_session_permissions(user: User, course_session_id: int) -> list[str]: is_expert = is_course_session_expert(user, course_session_id) is_member = is_course_session_member(user, course_session_id) is_learning_mentor = is_course_session_learning_mentor(user, course_session_id) + is_berufsbildner = is_course_session_berufsbildner(user, course_session_id) course_has_learning_mentor = ( course_session.course.configuration.enable_learning_mentor @@ -350,7 +370,9 @@ def course_session_permissions(user: User, course_session_id: int) -> list[str]: "learning-mentor::guide-members": course_has_learning_mentor and is_learning_mentor, "preview": has_course_session_preview(user, course_session_id), - "media-library": is_supervisor or is_expert or is_member, + "media-library": ( + is_supervisor or is_expert or is_member or is_berufsbildner + ), "appointments": is_supervisor or is_expert or is_member, "expert-cockpit": is_expert, "learning-path": is_member,