Add roles to course_session_permissions
This commit is contained in:
parent
24aa5d9b8c
commit
16ebd23edf
|
|
@ -48,9 +48,9 @@ def has_course_session_preview(user, course_session_id: int):
|
|||
if is_course_session_member(user, course_session_id):
|
||||
return False
|
||||
|
||||
return is_learning_mentor(user, course_session_id) or is_course_session_expert(
|
||||
return is_course_session_learning_mentor(
|
||||
user, course_session_id
|
||||
)
|
||||
) or is_course_session_expert(user, course_session_id)
|
||||
|
||||
|
||||
def has_media_library(user, course_session_id: int):
|
||||
|
|
@ -66,7 +66,7 @@ def has_media_library(user, course_session_id: int):
|
|||
).exists()
|
||||
|
||||
|
||||
def is_learning_mentor(mentor: User, course_session_id: int):
|
||||
def is_course_session_learning_mentor(mentor: User, course_session_id: int):
|
||||
course_session = CourseSession.objects.get(id=course_session_id)
|
||||
|
||||
if course_session is None:
|
||||
|
|
@ -92,6 +92,15 @@ def is_learning_mentor_for_user(
|
|||
).exists()
|
||||
|
||||
|
||||
def is_course_session_supervisor(user, course_session_id: int):
|
||||
if user.is_superuser:
|
||||
return True
|
||||
|
||||
return CourseSessionGroup.objects.filter(
|
||||
supervisor=user, course_session=course_session_id
|
||||
).exists()
|
||||
|
||||
|
||||
def is_course_session_expert(user, course_session_id: int):
|
||||
if user.is_superuser:
|
||||
return True
|
||||
|
|
@ -244,40 +253,6 @@ def has_appointments(user: User, course_session_id: int) -> bool:
|
|||
return CourseSessionUser.objects.filter(course_session=course_session_id).exists()
|
||||
|
||||
|
||||
def has_learning_mentor(user: User, course_session_id: int) -> bool:
|
||||
course_session = CourseSession.objects.get(id=course_session_id)
|
||||
|
||||
if course_session is None:
|
||||
return False
|
||||
|
||||
if not course_session.course.configuration.enable_learning_mentor:
|
||||
return False
|
||||
|
||||
if is_learning_mentor(user, course_session_id):
|
||||
return True
|
||||
|
||||
if is_course_session_member(user, course_session_id):
|
||||
return True
|
||||
|
||||
return False
|
||||
|
||||
|
||||
def can_edit_mentors(user: User, course_session_id: int) -> bool:
|
||||
if not has_learning_mentor(user, course_session_id):
|
||||
return False
|
||||
|
||||
# limit further, since has_learning_mentor is too broad
|
||||
return is_course_session_member(user, course_session_id)
|
||||
|
||||
|
||||
def can_guide_members(user: User, course_session_id: int) -> bool:
|
||||
if not has_learning_mentor(user, course_session_id):
|
||||
return False
|
||||
|
||||
# limit further, since has_learning_mentor is too broad
|
||||
return is_learning_mentor(user, course_session_id)
|
||||
|
||||
|
||||
def can_view_profile(user: User, profile_user: CourseSessionUser) -> bool:
|
||||
if user.is_superuser:
|
||||
return True
|
||||
|
|
@ -311,29 +286,40 @@ def can_view_course_completions(
|
|||
)
|
||||
|
||||
|
||||
def can_complete_learning_content(user: User, course_session_id: int) -> bool:
|
||||
return is_course_session_member(
|
||||
user, course_session_id
|
||||
) or is_course_session_expert(user, course_session_id)
|
||||
|
||||
|
||||
def course_session_permissions(user: User, course_session_id: int) -> list[str]:
|
||||
course_session = CourseSession.objects.get(id=course_session_id)
|
||||
|
||||
is_supervisor = is_course_session_supervisor(user, course_session_id)
|
||||
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)
|
||||
|
||||
course_has_learning_mentor = (
|
||||
course_session.course.configuration.enable_learning_mentor
|
||||
)
|
||||
has_learning_mentor = course_has_learning_mentor and (
|
||||
is_member or is_expert or is_learning_mentor
|
||||
)
|
||||
|
||||
return _action_list(
|
||||
{
|
||||
"learning-mentor": has_learning_mentor(user, course_session_id),
|
||||
"learning-mentor::edit-mentors": can_edit_mentors(user, course_session_id),
|
||||
"learning-mentor::guide-members": can_guide_members(
|
||||
user, course_session_id
|
||||
),
|
||||
# roles
|
||||
"is_supervisor": is_supervisor,
|
||||
"is_expert": is_expert,
|
||||
"is_member": is_member,
|
||||
"is_learning_mentor": is_learning_mentor,
|
||||
# actions
|
||||
"learning-mentor": has_learning_mentor,
|
||||
"learning-mentor::edit-mentors": has_learning_mentor and is_member,
|
||||
"learning-mentor::guide-members": course_has_learning_mentor
|
||||
and is_learning_mentor,
|
||||
"preview": has_course_session_preview(user, course_session_id),
|
||||
"media-library": has_media_library(user, course_session_id),
|
||||
"appointments": has_appointments(user, course_session_id),
|
||||
"expert-cockpit": is_course_session_expert(user, course_session_id),
|
||||
"learning-path": is_course_session_member(user, course_session_id),
|
||||
"competence-navi": is_course_session_member(user, course_session_id),
|
||||
"complete-learning-content": can_complete_learning_content(
|
||||
user, course_session_id
|
||||
),
|
||||
"media-library": is_supervisor or is_expert or is_member,
|
||||
"appointments": is_supervisor or is_expert or is_member,
|
||||
"expert-cockpit": is_expert,
|
||||
"learning-path": is_member,
|
||||
"competence-navi": is_member,
|
||||
"complete-learning-content": is_expert or is_member,
|
||||
}
|
||||
)
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue