Add django simple history to student.ManualEnrollmentAudit (#22629)
add django simple history to student.ManualEnrollmentAudit
This commit is contained in:
@@ -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),
|
||||
),
|
||||
]
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user