vbv/server/vbv_lernwelt/feedback/models.py

54 lines
1.8 KiB
Python

from django.core.validators import MaxValueValidator, MinValueValidator
from django.db import models
from django.utils.translation import gettext_lazy as _
class FeedbackIntegerField(models.IntegerField):
def __init__(self, **kwargs):
validators = kwargs.pop("validators", [])
nullable = kwargs.pop("null", True)
super().__init__(
validators=validators + [MinValueValidator(1), MaxValueValidator(4)],
null=nullable,
**kwargs
)
class FeedbackResponse(models.Model):
class DiscoveredChoices(models.TextChoices):
INTERNET = "I", _("Internet")
LEAFLET = "L", _("Leaflet")
NEWSPAPER = "N", _("Newspaper")
RECOMMENDATION = "R", _("Personal recommendation")
EVENT = "E", _("Public event")
OTHER = "O", _("Other")
class RatingChoices(models.IntegerChoices):
ONE = 1, "1"
TWO = 2, "2"
THREE = 3, "3"
FOUR = 4, "4"
class PercentageChoices(models.IntegerChoices):
TWENTY = 20, "20%"
FOURTY = 40, "40%"
SIXTY = 60, "60%"
EIGHTY = 80, "80%"
HUNDRED = 100, "100%"
satisfaction = FeedbackIntegerField()
goal_attainment = FeedbackIntegerField()
proficiency = models.IntegerField(null=True)
received_materials = models.BooleanField(null=True)
materials_rating = FeedbackIntegerField()
instructor_competence = FeedbackIntegerField()
instructor_respect = FeedbackIntegerField()
instructor_open_feedback = models.TextField(blank=True)
would_recommend = models.BooleanField(null=True)
course_positive_feedback = models.TextField(blank=True)
course_negative_feedback = models.TextField(blank=True)
circle = models.ForeignKey("learnpath.Circle", models.PROTECT)
course_session = models.ForeignKey("course.CourseSession", models.PROTECT)