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.db.models import UniqueConstraint
|
||||||
from django.utils.text import slugify
|
from django.utils.text import slugify
|
||||||
from django.utils.translation import gettext_lazy as _
|
from django.utils.translation import gettext_lazy as _
|
||||||
from django_jsonform.models.fields import JSONField
|
|
||||||
from grapple.models import GraphQLString
|
from grapple.models import GraphQLString
|
||||||
from wagtail.models import Page
|
from wagtail.models import Page
|
||||||
|
|
||||||
|
|
@ -193,26 +192,6 @@ class CourseSession(models.Model):
|
||||||
Das anhängen kann via CourseSessionUser oder "Schulklasse (TODO)" geschehen
|
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)
|
created_at = models.DateTimeField(auto_now_add=True)
|
||||||
updated_at = models.DateTimeField(auto_now=True)
|
updated_at = models.DateTimeField(auto_now=True)
|
||||||
|
|
||||||
|
|
@ -228,8 +207,6 @@ class CourseSession(models.Model):
|
||||||
start_date = models.DateField(null=True, blank=True)
|
start_date = models.DateField(null=True, blank=True)
|
||||||
end_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)
|
additional_json_data = models.JSONField(default=dict, blank=True)
|
||||||
|
|
||||||
def __str__(self):
|
def __str__(self):
|
||||||
|
|
|
||||||
|
|
@ -1,12 +1,13 @@
|
||||||
from django.db import models
|
from django.db import models
|
||||||
from django.utils.translation import gettext_lazy as _
|
from django.utils.translation import gettext_lazy as _
|
||||||
|
|
||||||
|
from vbv_lernwelt.assignment.models import AssignmentType
|
||||||
from vbv_lernwelt.duedate.models import DueDate
|
from vbv_lernwelt.duedate.models import DueDate
|
||||||
|
|
||||||
|
|
||||||
class CourseSessionAttendanceCourse(models.Model):
|
class CourseSessionAttendanceCourse(models.Model):
|
||||||
"""
|
"""
|
||||||
Präsenzkurs Durchührung
|
Präsenztag Durchührung
|
||||||
|
|
||||||
Kann über einen Zeitraum von meheren Tagen gehen.
|
Kann über einen Zeitraum von meheren Tagen gehen.
|
||||||
"""
|
"""
|
||||||
|
|
@ -30,13 +31,18 @@ class CourseSessionAttendanceCourse(models.Model):
|
||||||
def save(self, *args, **kwargs):
|
def save(self, *args, **kwargs):
|
||||||
if not self.pk:
|
if not self.pk:
|
||||||
title = ""
|
title = ""
|
||||||
|
url = ""
|
||||||
page = None
|
page = None
|
||||||
if self.learning_content_id:
|
if self.learning_content_id:
|
||||||
title = self.learning_content.title
|
title = self.learning_content.title
|
||||||
page = self.learning_content.page_ptr
|
page = self.learning_content.page_ptr
|
||||||
|
url = self.learning_content.get_frontend_url()
|
||||||
|
|
||||||
self.due_date = DueDate.objects.create(
|
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,
|
course_session=self.course_session,
|
||||||
page=page)
|
page=page)
|
||||||
super().save(*args, **kwargs)
|
super().save(*args, **kwargs)
|
||||||
|
|
@ -63,31 +69,52 @@ class CourseSessionAssignment(models.Model):
|
||||||
"duedate.DueDate",
|
"duedate.DueDate",
|
||||||
on_delete=models.CASCADE,
|
on_delete=models.CASCADE,
|
||||||
related_name="assignment_submission_deadline",
|
related_name="assignment_submission_deadline",
|
||||||
|
null=True,
|
||||||
)
|
)
|
||||||
|
|
||||||
evaluation_deadline = models.OneToOneField(
|
evaluation_deadline = models.OneToOneField(
|
||||||
"duedate.DueDate",
|
"duedate.DueDate",
|
||||||
on_delete=models.CASCADE,
|
on_delete=models.CASCADE,
|
||||||
related_name="assignment_evaluation_deadline",
|
related_name="assignment_evaluation_deadline",
|
||||||
|
null=True,
|
||||||
)
|
)
|
||||||
|
|
||||||
def save(self, *args, **kwargs):
|
def save(self, *args, **kwargs):
|
||||||
if not self.pk:
|
if not self.pk:
|
||||||
title = ""
|
title = ""
|
||||||
|
url = ""
|
||||||
page = None
|
page = None
|
||||||
|
assignment_type_description = ""
|
||||||
if self.learning_content_id:
|
if self.learning_content_id:
|
||||||
title = self.learning_content.title
|
title = self.learning_content.title
|
||||||
page = self.learning_content.page_ptr
|
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(
|
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,
|
course_session=self.course_session,
|
||||||
page=page)
|
page=page)
|
||||||
|
|
||||||
|
if assignment_type == AssignmentType.CASEWORK:
|
||||||
self.evaluation_deadline = DueDate.objects.create(
|
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,
|
course_session=self.course_session,
|
||||||
page=page)
|
page=page)
|
||||||
|
|
||||||
super().save(*args, **kwargs)
|
super().save(*args, **kwargs)
|
||||||
|
|
||||||
def __str__(self):
|
def __str__(self):
|
||||||
|
|
|
||||||
|
|
@ -13,6 +13,8 @@ class DueDate(models.Model):
|
||||||
start = models.DateTimeField(null=True, db_index=True)
|
start = models.DateTimeField(null=True, db_index=True)
|
||||||
end = models.DateTimeField(db_index=True, null=True)
|
end = models.DateTimeField(db_index=True, null=True)
|
||||||
title = models.CharField(default=_("Termin"), max_length=1024)
|
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)
|
url = models.URLField(null=True, blank=True, max_length=1024)
|
||||||
course_session = models.ForeignKey(
|
course_session = models.ForeignKey(
|
||||||
"course.CourseSession",
|
"course.CourseSession",
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue