VBV-708: Fix für Regionenleiter (hat auch Zugriff auf Cockpit)
This commit is contained in:
parent
cd001a1269
commit
7058e76999
|
|
@ -291,8 +291,8 @@ class CourseSessionObjectType(DjangoObjectType):
|
|||
_add_course_session_user(rel.participant)
|
||||
|
||||
if self.course.configuration.is_uk:
|
||||
# happy path, members and experts
|
||||
if me_csu:
|
||||
# VBV-708: Teilnehmer und Trainer haben Zugriff auf alle Teilnehmer im Ük
|
||||
for course_session_user in CourseSessionUser.objects.filter(
|
||||
course_session_id=self.id
|
||||
).distinct():
|
||||
|
|
@ -300,6 +300,45 @@ class CourseSessionObjectType(DjangoObjectType):
|
|||
user.id for user in course_session_users_resolved
|
||||
]:
|
||||
_add_course_session_user(course_session_user)
|
||||
elif CourseSessionGroup.objects.filter(
|
||||
supervisor=info.context.user, course_session=self
|
||||
).exists():
|
||||
# VBV-708: Supervisor (Regionenleiter) has access to all users and circles
|
||||
for course_session_user in CourseSessionUser.objects.filter(
|
||||
course_session_id=self.id
|
||||
).distinct():
|
||||
if course_session_user.id not in [
|
||||
user.id for user in course_session_users_resolved
|
||||
]:
|
||||
_add_course_session_user(course_session_user)
|
||||
|
||||
circles = (
|
||||
self.course.get_learning_path()
|
||||
.get_descendants()
|
||||
.live()
|
||||
.specific()
|
||||
.exact_type(Circle)
|
||||
)
|
||||
user = info.context.user
|
||||
course_session_users_resolved.append(
|
||||
CourseSessionUserObjectsType(
|
||||
id=f"{user.id}-{self.id}-as-ephemeral-supervisor", # noqa
|
||||
user_id=user.id, # noqa
|
||||
first_name=user.first_name, # noqa
|
||||
last_name=user.last_name, # noqa
|
||||
email=user.email, # noqa
|
||||
avatar_url=user.avatar_url, # noqa
|
||||
role=CourseSessionUser.Role.EXPERT, # noqa
|
||||
circles=[ # noqa
|
||||
CourseSessionUserExpertCircleType( # noqa
|
||||
id=circle.id, # noqa
|
||||
title=circle.title, # noqa
|
||||
slug=circle.slug, # noqa
|
||||
)
|
||||
for circle in circles
|
||||
],
|
||||
)
|
||||
)
|
||||
else:
|
||||
# VBV-708: user has only "AgentParticipantRole" and is not in the list of users
|
||||
for rel in AgentParticipantRelation.objects.filter(
|
||||
|
|
@ -310,67 +349,4 @@ class CourseSessionObjectType(DjangoObjectType):
|
|||
]:
|
||||
_add_course_session_user(rel.participant)
|
||||
|
||||
# workaround for supervisor
|
||||
# add supervisor to the list of users (as expert)
|
||||
course_session_id = self.id # noqa
|
||||
user = info.context.user # noqa
|
||||
|
||||
if CourseSessionGroup.objects.filter(
|
||||
course_session=course_session_id, supervisor=user
|
||||
).exists():
|
||||
if course_session := CourseSession.objects.filter(
|
||||
id=course_session_id
|
||||
).first():
|
||||
circles = (
|
||||
course_session.course.get_learning_path()
|
||||
.get_descendants()
|
||||
.live()
|
||||
.specific()
|
||||
.exact_type(Circle)
|
||||
)
|
||||
|
||||
course_session_users_resolved.append(
|
||||
CourseSessionUserObjectsType(
|
||||
id=f"{user.id}-as-ephemeral-supervisor", # noqa
|
||||
user_id=user.id, # noqa
|
||||
first_name=user.first_name, # noqa
|
||||
last_name=user.last_name, # noqa
|
||||
email=user.email, # noqa
|
||||
avatar_url=user.avatar_url, # noqa
|
||||
role=CourseSessionUser.Role.EXPERT, # noqa
|
||||
circles=[ # noqa
|
||||
CourseSessionUserExpertCircleType( # noqa
|
||||
id=circle.id, # noqa
|
||||
title=circle.title, # noqa
|
||||
slug=circle.slug, # noqa
|
||||
)
|
||||
for circle in circles
|
||||
],
|
||||
)
|
||||
)
|
||||
|
||||
return course_session_users_resolved
|
||||
|
||||
def _add_course_session_user(
|
||||
self, course_session_user, course_session_users_resolved
|
||||
):
|
||||
course_session_users_resolved.append(
|
||||
CourseSessionUserObjectsType(
|
||||
id=course_session_user.id, # noqa
|
||||
user_id=course_session_user.user.id, # noqa
|
||||
first_name=course_session_user.user.first_name, # noqa
|
||||
last_name=course_session_user.user.last_name, # noqa
|
||||
email=course_session_user.user.email, # noqa
|
||||
avatar_url=course_session_user.user.avatar_url, # noqa
|
||||
role=course_session_user.role, # noqa
|
||||
circles=[ # noqa
|
||||
CourseSessionUserExpertCircleType( # noqa
|
||||
id=circle.id, # noqa
|
||||
title=circle.title, # noqa
|
||||
slug=circle.slug, # noqa
|
||||
)
|
||||
for circle in course_session_user.expert.all() # noqa
|
||||
],
|
||||
optional_attendance=course_session_user.optional_attendance, # noqa
|
||||
)
|
||||
)
|
||||
|
|
|
|||
Loading…
Reference in New Issue