Add view for course session members
This commit is contained in:
parent
00d2527b29
commit
205cb3c1d4
|
|
@ -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,
|
||||
|
|
|
|||
|
|
@ -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):
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
|
|
|
|||
Loading…
Reference in New Issue