From eee86323a434a30959ad7eab72f48720a5de3115 Mon Sep 17 00:00:00 2001 From: atesker Date: Tue, 24 Sep 2019 15:57:21 -0400 Subject: [PATCH] restore model --- lms/djangoapps/grades/models.py | 56 +++++++++++++++++++++++++++++++++ 1 file changed, 56 insertions(+) diff --git a/lms/djangoapps/grades/models.py b/lms/djangoapps/grades/models.py index 6be3c50424..55efa8cff0 100644 --- a/lms/djangoapps/grades/models.py +++ b/lms/djangoapps/grades/models.py @@ -761,3 +761,59 @@ class PersistentSubsectionGradeOverride(models.Model): getattr(subsection_grade_model, field_name) ) return cleaned_data + + +class PersistentSubsectionGradeOverrideHistory(models.Model): + """ + A django model tracking persistent grades override audit records. + + .. no_pii: + """ + OVERRIDE_FEATURES = ( + (constants.GradeOverrideFeatureEnum.proctoring, 'proctoring'), + (constants.GradeOverrideFeatureEnum.gradebook, 'gradebook'), + ) + + CREATE_OR_UPDATE = 'CREATEORUPDATE' + DELETE = 'DELETE' + OVERRIDE_ACTIONS = ( + (CREATE_OR_UPDATE, 'create_or_update'), + (DELETE, 'delete') + ) + + class Meta(object): + app_label = "grades" + + override_id = models.IntegerField(db_index=True) + feature = models.CharField( + max_length=32, + choices=OVERRIDE_FEATURES, + default=constants.GradeOverrideFeatureEnum.proctoring, + ) + action = models.CharField( + max_length=32, + choices=OVERRIDE_ACTIONS, + default=CREATE_OR_UPDATE + ) + user = models.ForeignKey(User, blank=True, null=True) + comments = models.CharField(max_length=300, blank=True, null=True) + created = models.DateTimeField(auto_now_add=True, db_index=True) + + def __unicode__(self): + """ + String representation of this model. + """ + return ( + u"{} override_id: {}, user_id: {}, feature: {}, action: {}, created: {}" + ).format( + type(self).__name__, + self.override_id, + self.user, + self.feature, + self.action, + self.created + ) + + @classmethod + def get_override_history(cls, override_id): + return cls.objects.filter(override_id=override_id)