Changes after code review
This commit is contained in:
parent
dfefdb52ca
commit
5b3da272ce
|
|
@ -173,7 +173,7 @@ def update_assignment_completion(
|
|||
acl.completion_data[key].update(task_data)
|
||||
acl.save()
|
||||
|
||||
if completion_status == "SUBMITTED":
|
||||
if completion_status == AssignmentCompletionStatus.SUBMITTED:
|
||||
learning_content = assignment.learningcontentassignment_set.first()
|
||||
if learning_content:
|
||||
mark_course_completion(
|
||||
|
|
|
|||
|
|
@ -9,7 +9,12 @@ from vbv_lernwelt.course_session.models import (
|
|||
@admin.register(CourseSessionAttendanceCourse)
|
||||
class CourseSessionAttendanceCourseAdmin(admin.ModelAdmin):
|
||||
# Inline fields are not possible for the DueDate model, because it is not a ForeignKey relatoion.
|
||||
readonly_fields = ["course_session", "learning_content", "due_date"]
|
||||
readonly_fields = [
|
||||
"course_session",
|
||||
"learning_content",
|
||||
"due_date",
|
||||
"attendance_user_list",
|
||||
]
|
||||
list_display = [
|
||||
"course_session",
|
||||
"learning_content",
|
||||
|
|
|
|||
|
|
@ -1,5 +1,6 @@
|
|||
from django.db import models
|
||||
from django.utils.translation import gettext_lazy as _
|
||||
from django_jsonform.models.fields import JSONField as JSONSchemaField
|
||||
|
||||
from vbv_lernwelt.assignment.models import AssignmentType
|
||||
from vbv_lernwelt.duedate.models import DueDate
|
||||
|
|
@ -32,7 +33,24 @@ class CourseSessionAttendanceCourse(models.Model):
|
|||
# because the attendance list is more of a snapshot of the current state
|
||||
# we will store the attendance list as a JSONField
|
||||
# the important field of the list type is "user_id"
|
||||
attendance_user_list = models.JSONField(default=list)
|
||||
ATTENDANCE_USER_LIST_SCHEMA = {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"user_id": {
|
||||
"type": "number",
|
||||
"required": True,
|
||||
},
|
||||
"email": {"type": "string"},
|
||||
"first_name": {"type": "string"},
|
||||
"last_name": {"type": "string"},
|
||||
},
|
||||
},
|
||||
}
|
||||
attendance_user_list = JSONSchemaField(
|
||||
default=list, schema=ATTENDANCE_USER_LIST_SCHEMA
|
||||
)
|
||||
|
||||
def save(self, *args, **kwargs):
|
||||
if not self.pk:
|
||||
|
|
|
|||
|
|
@ -20,7 +20,9 @@ def update_attendance_list(
|
|||
attendance_course: CourseSessionAttendanceCourse,
|
||||
attendance_user_list: List[AttendanceUser],
|
||||
):
|
||||
user_id_list_before = [u["user_id"] for u in attendance_course.attendance_user_list]
|
||||
user_id_set_before = set(
|
||||
[u["user_id"] for u in attendance_course.attendance_user_list]
|
||||
)
|
||||
|
||||
result_user_list = []
|
||||
for attendance_user in attendance_user_list:
|
||||
|
|
@ -52,14 +54,13 @@ def update_attendance_list(
|
|||
attendance_course.attendance_user_list = result_user_list
|
||||
attendance_course.save()
|
||||
|
||||
user_id_list_after = [u["user_id"] for u in attendance_course.attendance_user_list]
|
||||
user_id_set_after = set(
|
||||
[u["user_id"] for u in attendance_course.attendance_user_list]
|
||||
)
|
||||
|
||||
user_id_list_removed = [
|
||||
user_id for user_id in user_id_list_before if user_id not in user_id_list_after
|
||||
]
|
||||
user_id_set_removed = user_id_set_before - user_id_set_after
|
||||
|
||||
for user_id in user_id_list_removed:
|
||||
# FIXME: create completion for every user in attendance_user_list
|
||||
for user_id in user_id_set_removed:
|
||||
u = User.objects.filter(id=user_id).first()
|
||||
if u is not None:
|
||||
mark_course_completion(
|
||||
|
|
|
|||
Loading…
Reference in New Issue