53 lines
1.8 KiB
Python
53 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)
|