71 lines
2.2 KiB
Python
71 lines
2.2 KiB
Python
import graphene
|
|
import structlog
|
|
from rest_framework.exceptions import PermissionDenied
|
|
|
|
from vbv_lernwelt.core.models import User
|
|
from vbv_lernwelt.course.permissions import has_course_access
|
|
from vbv_lernwelt.course_session.graphql.types import (
|
|
CourseSessionAttendanceCourseType,
|
|
)
|
|
from vbv_lernwelt.course_session.models import CourseSessionAttendanceCourse
|
|
from vbv_lernwelt.course_session.services.attendance import AttendanceUserStatus
|
|
|
|
logger = structlog.get_logger(__name__)
|
|
|
|
|
|
class AttendanceUserInputType(graphene.InputObjectType):
|
|
user_id = graphene.ID(required=True)
|
|
status = graphene.Field(
|
|
graphene.Enum.from_enum(AttendanceUserStatus), required=True
|
|
)
|
|
|
|
|
|
class AttendanceCourseUserMutation(graphene.Mutation):
|
|
course_session_attendance_course = graphene.Field(CourseSessionAttendanceCourseType)
|
|
|
|
class Input:
|
|
id = graphene.ID(required=True)
|
|
attendance_user_list = graphene.List(AttendanceUserInputType, required=True)
|
|
|
|
@classmethod
|
|
def mutate(
|
|
cls,
|
|
root,
|
|
info,
|
|
id,
|
|
attendance_user_list,
|
|
):
|
|
attendance_course = CourseSessionAttendanceCourse.objects.get(id=id)
|
|
|
|
if not has_course_access(
|
|
info.context.user,
|
|
attendance_course.course_session.course_id,
|
|
):
|
|
raise PermissionDenied()
|
|
|
|
# FIXME: create completion for every user in attendance_user_list
|
|
|
|
result_user_list = []
|
|
for attendance_user in attendance_user_list:
|
|
u = User.objects.filter(id=attendance_user.user_id).first()
|
|
if u is not None:
|
|
result_user_list.append(
|
|
{
|
|
"user_id": u.id,
|
|
"email": u.email,
|
|
"first_name": u.first_name,
|
|
"last_name": u.last_name,
|
|
}
|
|
)
|
|
|
|
attendance_course.attendance_user_list = result_user_list
|
|
attendance_course.save()
|
|
|
|
return AttendanceCourseUserMutation(
|
|
course_session_attendance_course=attendance_course
|
|
)
|
|
|
|
|
|
class CourseSessionMutation:
|
|
update_course_session_attendance_course_users = AttendanceCourseUserMutation.Field()
|