Add django simple history to student.ManualEnrollmentAudit (#22629)

add django simple history to student.ManualEnrollmentAudit
This commit is contained in:
Stu Young
2020-01-09 16:29:18 -05:00
committed by GitHub
parent 946cc659c2
commit 6fa7940792
2 changed files with 52 additions and 1 deletions

View File

@@ -0,0 +1,43 @@
# -*- coding: utf-8 -*-
# Generated by Django 1.11.27 on 2019-12-27 20:44
from __future__ import unicode_literals
from django.conf import settings
from django.db import migrations, models
import django.db.models.deletion
import simple_history.models
class Migration(migrations.Migration):
dependencies = [
migrations.swappable_dependency(settings.AUTH_USER_MODEL),
('student', '0027_courseenrollment_mode_callable_default'),
]
operations = [
migrations.CreateModel(
name='HistoricalManualEnrollmentAudit',
fields=[
('id', models.IntegerField(auto_created=True, blank=True, db_index=True, verbose_name='ID')),
('enrolled_email', models.CharField(db_index=True, max_length=255)),
('time_stamp', models.DateTimeField(blank=True, editable=False, null=True)),
('state_transition', models.CharField(choices=[('from unenrolled to allowed to enroll', 'from unenrolled to allowed to enroll'), ('from allowed to enroll to enrolled', 'from allowed to enroll to enrolled'), ('from enrolled to enrolled', 'from enrolled to enrolled'), ('from enrolled to unenrolled', 'from enrolled to unenrolled'), ('from unenrolled to enrolled', 'from unenrolled to enrolled'), ('from allowed to enroll to enrolled', 'from allowed to enroll to enrolled'), ('from unenrolled to unenrolled', 'from unenrolled to unenrolled'), ('N/A', 'N/A')], max_length=255)),
('reason', models.TextField(null=True)),
('role', models.CharField(blank=True, max_length=64, null=True)),
('history_id', models.AutoField(primary_key=True, serialize=False)),
('history_date', models.DateTimeField()),
('history_change_reason', models.CharField(max_length=100, null=True)),
('history_type', models.CharField(choices=[('+', 'Created'), ('~', 'Changed'), ('-', 'Deleted')], max_length=1)),
('enrolled_by', models.ForeignKey(blank=True, db_constraint=False, null=True, on_delete=django.db.models.deletion.DO_NOTHING, related_name='+', to=settings.AUTH_USER_MODEL)),
('enrollment', models.ForeignKey(blank=True, db_constraint=False, null=True, on_delete=django.db.models.deletion.DO_NOTHING, related_name='+', to='student.CourseEnrollment')),
('history_user', models.ForeignKey(null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='+', to=settings.AUTH_USER_MODEL)),
],
options={
'verbose_name': 'historical manual enrollment audit',
'ordering': ('-history_date', '-history_id'),
'get_latest_by': 'history_date',
},
bases=(simple_history.models.HistoricalChanges, models.Model),
),
]

View File

@@ -2113,6 +2113,7 @@ class ManualEnrollmentAudit(models.Model):
state_transition = models.CharField(max_length=255, choices=TRANSITION_STATES)
reason = models.TextField(null=True)
role = models.CharField(blank=True, null=True, max_length=64)
history = HistoricalRecords()
@classmethod
def create_manual_enrollment_audit(cls, user, email, state_transition, reason, enrollment=None, role=None):
@@ -2160,8 +2161,15 @@ class ManualEnrollmentAudit(models.Model):
# It is possible that this could also be bad if a user has thousands of manual
# enrollments, but currently that number tends to be very low.
manual_enrollment_ids = list(cls.objects.filter(enrollment__user=user).values_list('id', flat=True))
manual_enrollment_audits = cls.objects.filter(id__in=manual_enrollment_ids)
return cls.objects.filter(id__in=manual_enrollment_ids).update(reason="", enrolled_email=retired_email)
if not manual_enrollment_audits:
return False
for manual_enrollment_audit in manual_enrollment_audits:
manual_enrollment_audit.history.update(reason="", enrolled_email=retired_email)
manual_enrollment_audits.update(reason="", enrolled_email=retired_email)
return True
@python_2_unicode_compatible