feat: vv user profile

This commit is contained in:
Reto Aebersold 2024-01-23 09:05:42 +01:00
parent 0e487cd7d0
commit 55d418602f
4 changed files with 21 additions and 28 deletions

View File

@ -27,9 +27,12 @@ const { summary } = useMentorCockpit(courseSession.value.id);
{{ participant.email }} {{ participant.email }}
</div> </div>
</div> </div>
<!-- <router-link :to="{name: 'cockpitUserProfile', params: {userId: participant.id}}" class="underline">--> <router-link
<!-- {{ $t("a.Profil anzeigen") }}--> :to="{ name: 'cockpitUserProfile', params: { userId: participant.id } }"
<!-- </router-link>--> class="underline"
>
{{ $t("cockpit.profileLink") }}
</router-link>
</div> </div>
</div> </div>
</template> </template>

View File

@ -23,6 +23,7 @@ from vbv_lernwelt.iam.permissions import (
has_course_access_by_page_request, has_course_access_by_page_request,
is_circle_expert, is_circle_expert,
is_course_session_expert, is_course_session_expert,
is_user_mentor,
) )
from vbv_lernwelt.learning_mentor.models import LearningMentor from vbv_lernwelt.learning_mentor.models import LearningMentor
@ -76,8 +77,14 @@ def request_course_completion(request, course_session_id):
@api_view(["GET"]) @api_view(["GET"])
def request_course_completion_for_user(request, course_session_id, user_id): def request_course_completion_for_user(request, course_session_id, user_id):
if request.user.id == user_id or is_course_session_expert( if (
request.user, course_session_id request.user.id == user_id
or is_course_session_expert(request.user, course_session_id)
or is_user_mentor(
mentor=request.user,
participant_user_id=user_id,
course_session_id=course_session_id,
)
): ):
return _request_course_completion(course_session_id, user_id) return _request_course_completion(course_session_id, user_id)
raise PermissionDenied() raise PermissionDenied()

View File

@ -64,12 +64,7 @@ def is_course_session_expert(user, course_session_id: int):
role=CourseSessionUser.Role.EXPERT, role=CourseSessionUser.Role.EXPERT,
).exists() ).exists()
is_learning_mentor = LearningMentor.objects.filter( return is_supervisor or is_expert
mentor=user,
course=course_session.course,
).exists()
return is_supervisor or is_expert or is_learning_mentor
def is_course_session_member(user, course_session_id: int | None = None): def is_course_session_member(user, course_session_id: int | None = None):
@ -190,7 +185,11 @@ def can_view_profile(user: User, profile_user: CourseSessionUser) -> bool:
if user == profile_user.user: if user == profile_user.user:
return True return True
if is_course_session_expert(user, profile_user.course_session_id): if is_course_session_expert(user, profile_user.course_session.id) or is_user_mentor(
mentor=user,
participant_user_id=profile_user.user.id,
course_session_id=profile_user.course_session.id,
):
return True return True
return False return False

View File

@ -8,7 +8,6 @@ from vbv_lernwelt.course.creators.test_utils import (
from vbv_lernwelt.course.models import CourseSessionUser from vbv_lernwelt.course.models import CourseSessionUser
from vbv_lernwelt.course_session_group.models import CourseSessionGroup from vbv_lernwelt.course_session_group.models import CourseSessionGroup
from vbv_lernwelt.iam.permissions import is_course_session_expert from vbv_lernwelt.iam.permissions import is_course_session_expert
from vbv_lernwelt.learning_mentor.models import LearningMentor
class ExpertTestCase(TestCase): class ExpertTestCase(TestCase):
@ -50,21 +49,6 @@ class ExpertTestCase(TestCase):
# THEN # THEN
self.assertTrue(is_expert) self.assertTrue(is_expert)
def test_learning_mentor(self):
# GIVEN
lm = LearningMentor.objects.create(
mentor=self.user,
course=self.course,
)
# WHEN
is_expert = is_course_session_expert(
user=lm.mentor, course_session_id=self.course_session.id
)
# THEN
self.assertTrue(is_expert)
def test_expert(self): def test_expert(self):
# GIVEN # GIVEN
csu = CourseSessionUser.objects.create( csu = CourseSessionUser.objects.create(