Add DueDates to CourseSession and Course Session Assignment
This commit is contained in:
parent
1671abe512
commit
347cc37a28
|
|
@ -2,7 +2,6 @@ from django.db import models
|
|||
from django.db.models import UniqueConstraint
|
||||
from django.utils.text import slugify
|
||||
from django.utils.translation import gettext_lazy as _
|
||||
from django_jsonform.models.fields import JSONField
|
||||
from grapple.models import GraphQLString
|
||||
from wagtail.models import Page
|
||||
|
||||
|
|
@ -193,26 +192,6 @@ class CourseSession(models.Model):
|
|||
Das anhängen kann via CourseSessionUser oder "Schulklasse (TODO)" geschehen
|
||||
"""
|
||||
|
||||
# TODO: Das wird durch event modell ersetzt
|
||||
|
||||
# ATTENDANCE_COURSES_SCHEMA = {
|
||||
# "type": "array",
|
||||
# "items": {
|
||||
# "type": "object",
|
||||
# "properties": {
|
||||
# "learningContentId": {
|
||||
# "type": "number",
|
||||
# "title": "ID des Lerninhalts",
|
||||
# "required": True,
|
||||
# },
|
||||
# "start": {"type": "string", "format": "datetime"},
|
||||
# "end": {"type": "string", "format": "datetime"},
|
||||
# "location": {"type": "string"},
|
||||
# "trainer": {"type": "string"},
|
||||
# },
|
||||
# },
|
||||
# }
|
||||
|
||||
created_at = models.DateTimeField(auto_now_add=True)
|
||||
updated_at = models.DateTimeField(auto_now=True)
|
||||
|
||||
|
|
@ -228,8 +207,6 @@ class CourseSession(models.Model):
|
|||
start_date = models.DateField(null=True, blank=True)
|
||||
end_date = models.DateField(null=True, blank=True)
|
||||
|
||||
assignment_details_list = models.JSONField(default=list, blank=True)
|
||||
|
||||
additional_json_data = models.JSONField(default=dict, blank=True)
|
||||
|
||||
def __str__(self):
|
||||
|
|
|
|||
|
|
@ -1,12 +1,13 @@
|
|||
from django.db import models
|
||||
from django.utils.translation import gettext_lazy as _
|
||||
|
||||
from vbv_lernwelt.assignment.models import AssignmentType
|
||||
from vbv_lernwelt.duedate.models import DueDate
|
||||
|
||||
|
||||
class CourseSessionAttendanceCourse(models.Model):
|
||||
"""
|
||||
Präsenzkurs Durchührung
|
||||
Präsenztag Durchührung
|
||||
|
||||
Kann über einen Zeitraum von meheren Tagen gehen.
|
||||
"""
|
||||
|
|
@ -30,13 +31,18 @@ class CourseSessionAttendanceCourse(models.Model):
|
|||
def save(self, *args, **kwargs):
|
||||
if not self.pk:
|
||||
title = ""
|
||||
url = ""
|
||||
page = None
|
||||
if self.learning_content_id:
|
||||
title = self.learning_content.title
|
||||
page = self.learning_content.page_ptr
|
||||
url = self.learning_content.get_frontend_url()
|
||||
|
||||
self.due_date = DueDate.objects.create(
|
||||
title=f"{title} {_('Präsenzkurs')}",
|
||||
url=url,
|
||||
title=f"{title}",
|
||||
learning_content_description=f"{_('Präsenztag')}",
|
||||
description="",
|
||||
course_session=self.course_session,
|
||||
page=page)
|
||||
super().save(*args, **kwargs)
|
||||
|
|
@ -63,31 +69,52 @@ class CourseSessionAssignment(models.Model):
|
|||
"duedate.DueDate",
|
||||
on_delete=models.CASCADE,
|
||||
related_name="assignment_submission_deadline",
|
||||
null=True,
|
||||
)
|
||||
|
||||
evaluation_deadline = models.OneToOneField(
|
||||
"duedate.DueDate",
|
||||
on_delete=models.CASCADE,
|
||||
related_name="assignment_evaluation_deadline",
|
||||
null=True,
|
||||
)
|
||||
|
||||
def save(self, *args, **kwargs):
|
||||
if not self.pk:
|
||||
title = ""
|
||||
url = ""
|
||||
page = None
|
||||
assignment_type_description = ""
|
||||
if self.learning_content_id:
|
||||
title = self.learning_content.title
|
||||
page = self.learning_content.page_ptr
|
||||
url = self.learning_content.get_frontend_url()
|
||||
assignment_type = self.learning_content.assignment_type
|
||||
assignment_type_descriptions = {
|
||||
AssignmentType.CASEWORK.name: _("Geleitete Fallarbeit"),
|
||||
AssignmentType.PREP_ASSIGNMENT.name: _("Vorbereitungsauftrag"),
|
||||
AssignmentType.REFLECTION.name: _("Reflexion"),
|
||||
}
|
||||
assignment_type_description = assignment_type_descriptions.get(assignment_type, "")
|
||||
|
||||
if assignment_type in {AssignmentType.CASEWORK, AssignmentType.PREP_ASSIGNMENT}: # Reflexion
|
||||
self.submission_deadline = DueDate.objects.create(
|
||||
title=f"{title} {_('Submission Deadline')}",
|
||||
url=url,
|
||||
title=f"{title}",
|
||||
learning_content_description=assignment_type_description,
|
||||
description=f"{_('Abgabe Termin')}",
|
||||
course_session=self.course_session,
|
||||
page=page)
|
||||
|
||||
if assignment_type == AssignmentType.CASEWORK:
|
||||
self.evaluation_deadline = DueDate.objects.create(
|
||||
title=f"{title} {_('Evaluation Deadline')}",
|
||||
url=url,
|
||||
title=f"{title}",
|
||||
learning_content_description=assignment_type_description,
|
||||
description=f"{_('Freigabe Termin Bewertungen')}",
|
||||
course_session=self.course_session,
|
||||
page=page)
|
||||
|
||||
super().save(*args, **kwargs)
|
||||
|
||||
def __str__(self):
|
||||
|
|
|
|||
|
|
@ -13,6 +13,8 @@ class DueDate(models.Model):
|
|||
start = models.DateTimeField(null=True, db_index=True)
|
||||
end = models.DateTimeField(db_index=True, null=True)
|
||||
title = models.CharField(default=_("Termin"), max_length=1024)
|
||||
learning_content_description = models.CharField(default=_("GeleiteteFallarbeit"), max_length=1024)
|
||||
description = models.CharField(default=_("Abgabetermin"), max_length=1024)
|
||||
url = models.URLField(null=True, blank=True, max_length=1024)
|
||||
course_session = models.ForeignKey(
|
||||
"course.CourseSession",
|
||||
|
|
|
|||
Loading…
Reference in New Issue