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 django.views import defaults as default_views
|
||||||
from grapple import urls as grapple_urls
|
from grapple import urls as grapple_urls
|
||||||
from ratelimit.exceptions import Ratelimited
|
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.middleware.auth import django_view_authentication_exempt
|
||||||
from vbv_lernwelt.core.views import (
|
from vbv_lernwelt.core.views import (
|
||||||
|
|
@ -25,10 +28,8 @@ from vbv_lernwelt.course.views import (
|
||||||
get_course_sessions,
|
get_course_sessions,
|
||||||
mark_course_completion,
|
mark_course_completion,
|
||||||
request_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):
|
def raise_example_error(request):
|
||||||
|
|
@ -62,6 +63,8 @@ urlpatterns = [
|
||||||
|
|
||||||
# course
|
# course
|
||||||
path(r"api/course/sessions/", get_course_sessions, name="get_course_sessions"),
|
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,
|
path(r"api/course/page/<slug>/", course_page_api_view,
|
||||||
name="course_page_api_view"),
|
name="course_page_api_view"),
|
||||||
path(r"api/course/completion/mark/", mark_course_completion,
|
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 CourseSerializer(serializers.ModelSerializer):
|
||||||
class Meta:
|
class Meta:
|
||||||
model = Course
|
model = Course
|
||||||
fields = ["id", "title", "category_name"]
|
fields = ["id", "title", "category_name", "slug"]
|
||||||
|
|
||||||
|
|
||||||
class CourseCategorySerializer(serializers.ModelSerializer):
|
class CourseCategorySerializer(serializers.ModelSerializer):
|
||||||
|
|
|
||||||
|
|
@ -5,7 +5,7 @@ from rest_framework.response import Response
|
||||||
from wagtail.models import Page
|
from wagtail.models import Page
|
||||||
|
|
||||||
from vbv_lernwelt.core.utils import api_page_cache_get_or_set
|
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 (
|
from vbv_lernwelt.course.permissions import (
|
||||||
course_sessions_for_user_qs,
|
course_sessions_for_user_qs,
|
||||||
has_course_access_by_page_request,
|
has_course_access_by_page_request,
|
||||||
|
|
@ -115,3 +115,30 @@ def get_course_sessions(request):
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
logger.error(e)
|
logger.error(e)
|
||||||
return Response({"error": str(e)}, status=404)
|
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