Add view for course session members

This commit is contained in:
Daniel Egger 2022-12-02 13:44:28 +01:00
parent 00d2527b29
commit 205cb3c1d4
3 changed files with 35 additions and 5 deletions

View File

@ -7,6 +7,9 @@ from django.urls import include, path, re_path
from django.views import defaults as default_views
from grapple import urls as grapple_urls
from ratelimit.exceptions import Ratelimited
from wagtail import urls as wagtail_urls
from wagtail.admin import urls as wagtailadmin_urls
from wagtail.documents import urls as wagtaildocs_urls
from vbv_lernwelt.core.middleware.auth import django_view_authentication_exempt
from vbv_lernwelt.core.views import (
@ -25,10 +28,8 @@ from vbv_lernwelt.course.views import (
get_course_sessions,
mark_course_completion,
request_course_completion,
get_course_session_users,
)
from wagtail import urls as wagtail_urls
from wagtail.admin import urls as wagtailadmin_urls
from wagtail.documents import urls as wagtaildocs_urls
def raise_example_error(request):
@ -62,6 +63,8 @@ urlpatterns = [
# course
path(r"api/course/sessions/", get_course_sessions, name="get_course_sessions"),
path(r"api/course/sessions/<course_slug>/users/", get_course_session_users,
name="get_course_session_users"),
path(r"api/course/page/<slug>/", course_page_api_view,
name="course_page_api_view"),
path(r"api/course/completion/mark/", mark_course_completion,

View File

@ -13,7 +13,7 @@ from vbv_lernwelt.learnpath.models import Circle
class CourseSerializer(serializers.ModelSerializer):
class Meta:
model = Course
fields = ["id", "title", "category_name"]
fields = ["id", "title", "category_name", "slug"]
class CourseCategorySerializer(serializers.ModelSerializer):

View File

@ -5,7 +5,7 @@ from rest_framework.response import Response
from wagtail.models import Page
from vbv_lernwelt.core.utils import api_page_cache_get_or_set
from vbv_lernwelt.course.models import CourseCompletion
from vbv_lernwelt.course.models import CourseCompletion, CourseSessionUser
from vbv_lernwelt.course.permissions import (
course_sessions_for_user_qs,
has_course_access_by_page_request,
@ -115,3 +115,30 @@ def get_course_sessions(request):
except Exception as e:
logger.error(e)
return Response({"error": str(e)}, status=404)
@api_view(["GET"])
def get_course_session_users(request, course_slug):
try:
course_sessions = course_sessions_for_user_qs(request.user).filter(
course__slug=course_slug
)
qs = CourseSessionUser.objects.filter(course_session__in=course_sessions)
data = [
{
"session_title": csu.course_session.title,
"user_id": csu.user.id,
"first_name": csu.user.first_name,
"last_name": csu.user.last_name,
"email": csu.user.email,
"avatar_url": csu.user.avatar_url,
}
for csu in qs
]
return Response(status=200, data=data)
except PermissionDenied as e:
raise e
except Exception as e:
logger.error(e)
return Response({"error": str(e)}, status=404)