cscenter/lms

Выделить системы оценок в отдельные классы

Closed this issue · 0 comments

class GradingSystem:
    GRADES = []

    @classmethod
    def choices(cls):
        return [c for c in GradeTypes.choices if c[0] in cls.GRADES]


class FivePointGradingSystem(GradingSystem):
    GRADES = [GradeTypes.NOT_GRADED, GradeTypes.UNSATISFACTORY,
              GradeTypes.CREDIT, GradeTypes.GOOD, GradeTypes.EXCELLENT]


class BinaryGradingSystem(GradingSystem):
    GRADES = [GradeTypes.NOT_GRADED, GradeTypes.UNSATISFACTORY, GradeTypes.CREDIT]


class TenPointGradingSystem(GradingSystem):
    GRADES = [GradeTypes.NOT_GRADED, GradeTypes.ONE, GradeTypes.TWO, GradeTypes.THREE, GradeTypes.FOUR, GradeTypes.FIVE,
              GradeTypes.SIX, GradeTypes.SEVEN, GradeTypes.EIGHT, GradeTypes.NINE, GradeTypes.TEN]


class GradingSystems(DjangoChoices):
    BASE = C(0, _("Default"), css_class="", system=FivePointGradingSystem)
    BINARY = C(1, _("Binary"), css_class="__binary", system=BinaryGradingSystem)
    TEN_POINT = C(2, _("10-point"), css_class="", system=TenPointGradingSystem)

    @staticmethod
    def get_grading_system(value):
        return GradingSystems.get_choice(value).system