122 lines
4.2 KiB
Python
122 lines
4.2 KiB
Python
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äsenztag Durchührung
|
|
|
|
Kann über einen Zeitraum von meheren Tagen gehen.
|
|
"""
|
|
course_session = models.ForeignKey(
|
|
"course.CourseSession",
|
|
on_delete=models.CASCADE,
|
|
)
|
|
learning_content = models.ForeignKey(
|
|
"learnpath.LearningContentAttendanceCourse",
|
|
on_delete=models.CASCADE,
|
|
)
|
|
due_date = models.OneToOneField(
|
|
"duedate.DueDate",
|
|
on_delete=models.CASCADE,
|
|
related_name="attendance_course_due_date",
|
|
)
|
|
|
|
location = models.CharField(max_length=255, blank=True, default="")
|
|
trainer = models.CharField(max_length=255, blank=True, default="")
|
|
|
|
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(
|
|
url=url,
|
|
title=f"{title}",
|
|
learning_content_description=f"{_('Präsenztag')}",
|
|
description="",
|
|
course_session=self.course_session,
|
|
page=page)
|
|
super().save(*args, **kwargs)
|
|
|
|
def __str__(self):
|
|
return f"{self.course_session} - {self.learning_content}"
|
|
|
|
|
|
class CourseSessionAssignment(models.Model):
|
|
"""
|
|
Auftrag
|
|
- Geletitete Fallarbeit ist eine speziefische ausprägung eines Auftrags (assignment_type)
|
|
|
|
"""
|
|
course_session = models.ForeignKey(
|
|
"course.CourseSession",
|
|
on_delete=models.CASCADE,
|
|
)
|
|
learning_content = models.ForeignKey(
|
|
"learnpath.LearningContentAssignment",
|
|
on_delete=models.CASCADE,
|
|
)
|
|
submission_deadline = models.OneToOneField(
|
|
"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(
|
|
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(
|
|
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):
|
|
return f"{self.course_session} - {self.learning_content}"
|