49 lines
1.2 KiB
Python
49 lines
1.2 KiB
Python
from vbv_lernwelt.course.models import CourseSession, CourseSessionUser
|
|
from vbv_lernwelt.learnpath.models import LearningSequence
|
|
|
|
|
|
def has_course_access_by_page_request(request, obj):
|
|
return has_course_access(request.user, obj.specific.get_course())
|
|
|
|
|
|
def has_course_access(user, course):
|
|
if user.is_superuser:
|
|
return True
|
|
|
|
if CourseSessionUser.objects.filter(
|
|
course_session__course_id=course.id, user=user
|
|
).exists():
|
|
return True
|
|
|
|
return False
|
|
|
|
|
|
def course_sessions_for_user_qs(user):
|
|
if user.is_superuser:
|
|
return CourseSession.objects.all()
|
|
|
|
course_sessions = CourseSession.objects.filter(coursesessionuser__user=user)
|
|
|
|
return course_sessions
|
|
|
|
|
|
def is_circle_expert(user, learning_sequence, course) -> bool:
|
|
if user.is_superuser:
|
|
return True
|
|
|
|
try:
|
|
ls = LearningSequence.objects.get(id=learning_sequence)
|
|
except LearningSequence.DoesNotExist:
|
|
return False
|
|
|
|
if not CourseSession.objects.filter(
|
|
id=course, coursesessionuser__user=user
|
|
).exists():
|
|
return False
|
|
|
|
for expert in ls.get_parent().circle.experts.raw_data:
|
|
if expert["value"]["email"] == user.email:
|
|
return True
|
|
|
|
return False
|