feat: adds feedback_user to LearningUnit model

This commit is contained in:
Livio Bieri 2024-01-17 14:18:34 +01:00
parent 1e934c15b1
commit 780be68a58
3 changed files with 66 additions and 1 deletions

View File

@ -329,3 +329,25 @@ class CircleDocument(models.Model):
self.file.upload_finished_at = None
self.file.save()
return super().delete(*args, **kwargs)
# TODO: Model something like this:
# class LearningUnitCompletionFeedback(models.Model):
# assignment_user = models.ForeignKey(User, on_delete=models.CASCADE)
# feedback_user = models.ForeignKey(User, on_delete=models.CASCADE)
# feedback_submitted = models.BooleanField(default=False)
# learning_unit = models.ForeignKey(
# "learnpath.LearningUnit", on_delete=models.CASCADE
# )
#
#
# class CourseCompletionFeedback(models.Model):
# learning_unit_completion_feedback = models.ForeignKey(
# LearningUnitCompletionFeedback, on_delete=models.CASCADE
# )
# course_completion = models.ForeignKey(CourseCompletion, on_delete=models.CASCADE)
# feedback_status = models.CharField(
# max_length=255,
# choices=[(status, status.value) for status in CourseCompletionStatus],
# default=CourseCompletionStatus.UNKNOWN.value,
# )

View File

@ -0,0 +1,23 @@
# Generated by Django 3.2.20 on 2024-01-17 13:00
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('learnpath', '0012_auto_20231129_0827'),
]
operations = [
migrations.AddField(
model_name='learningunit',
name='feedback_user',
field=models.CharField(blank=True, choices=[('NO_FEEDBACK', 'NO_FEEDBACK'), ('MENTOR_FEEDBACK', 'MENTOR_FEEDBACK')], default='NO_FEEDBACK', max_length=255),
),
migrations.AlterField(
model_name='learningcontentassignment',
name='assignment_type',
field=models.CharField(choices=[('PRAXIS_ASSIGNMENT', 'PRAXIS_ASSIGNMENT'), ('CASEWORK', 'CASEWORK'), ('PREP_ASSIGNMENT', 'PREP_ASSIGNMENT'), ('REFLECTION', 'REFLECTION'), ('CONDITION_ACCEPTANCE', 'CONDITION_ACCEPTANCE'), ('EDONIQ_TEST', 'EDONIQ_TEST')], default='CASEWORK', max_length=50),
),
]

View File

@ -1,8 +1,9 @@
import re
from enum import Enum
from django.db import models
from django.utils.text import slugify
from wagtail.admin.panels import FieldPanel, PageChooserPanel
from wagtail.admin.panels import FieldPanel, PageChooserPanel, HelpPanel
from wagtail.fields import RichTextField, StreamField
from wagtail.models import Page
@ -117,6 +118,13 @@ class Circle(CourseBasePage):
return f"{self.title}"
class LearningUnitPerformanceFeedbackType(Enum):
"""Defines how feedback on the performance criteria (n) of a learning unit are given."""
NO_FEEDBACK = "NO_FEEDBACK"
MENTOR_FEEDBACK = "MENTOR_FEEDBACK"
class LearningSequence(CourseBasePage):
serialize_field_names = ["icon"]
@ -169,10 +177,22 @@ class LearningUnit(CourseBasePage):
"course.CourseCategory", on_delete=models.SET_NULL, null=True, blank=True
)
title_hidden = models.BooleanField(default=False)
feedback_user = models.CharField(
max_length=255,
blank=True,
choices=[(tag.name, tag.name) for tag in LearningUnitPerformanceFeedbackType],
default=LearningUnitPerformanceFeedbackType.NO_FEEDBACK.name,
)
content_panels = Page.content_panels + [
FieldPanel("course_category"),
FieldPanel("title_hidden"),
FieldPanel("feedback_user"),
HelpPanel(
content="👆 Feedback zur Selbsteinschätzung: Normalerweise <code>NO_FEEDBACK</code>, "
"ausser bei den Lerninhalten Selbsteinschätzungen, die eine Bewertung haben von einer "
"Lernbegleitung haben sollen (z.B. VV)."
),
]
class Meta: