From bf661eaa8dcb254b14c325e0c393658ba80bae3c Mon Sep 17 00:00:00 2001 From: Alex Dusenbery Date: Wed, 24 Apr 2019 12:24:09 -0400 Subject: [PATCH] Add unique constraint to ProgramEnrollment model --- .../migrations/0003_auto_20190424_1622.py | 21 +++++++++++++++++++ lms/djangoapps/program_enrollments/models.py | 6 ++++++ 2 files changed, 27 insertions(+) create mode 100644 lms/djangoapps/program_enrollments/migrations/0003_auto_20190424_1622.py diff --git a/lms/djangoapps/program_enrollments/migrations/0003_auto_20190424_1622.py b/lms/djangoapps/program_enrollments/migrations/0003_auto_20190424_1622.py new file mode 100644 index 0000000000..24eea99cb5 --- /dev/null +++ b/lms/djangoapps/program_enrollments/migrations/0003_auto_20190424_1622.py @@ -0,0 +1,21 @@ +# -*- coding: utf-8 -*- +# Generated by Django 1.11.20 on 2019-04-24 16:22 +from __future__ import unicode_literals + +from django.conf import settings +from django.db import migrations + + +class Migration(migrations.Migration): + + dependencies = [ + migrations.swappable_dependency(settings.AUTH_USER_MODEL), + ('program_enrollments', '0002_historicalprogramcourseenrollment_programcourseenrollment'), + ] + + operations = [ + migrations.AlterUniqueTogether( + name='programenrollment', + unique_together=set([('user', 'external_user_key', 'program_uuid', 'curriculum_uuid')]), + ), + ] diff --git a/lms/djangoapps/program_enrollments/models.py b/lms/djangoapps/program_enrollments/models.py index aec356b219..06d04ca659 100644 --- a/lms/djangoapps/program_enrollments/models.py +++ b/lms/djangoapps/program_enrollments/models.py @@ -30,6 +30,12 @@ class ProgramEnrollment(TimeStampedModel): # pylint: disable=model-missing-unic class Meta(object): app_label = "program_enrollments" + # A student enrolled in a given (program, curriculum) should always + # have a non-null ``user`` or ``external_user_key`` field (or both). + unique_together = ( + ('user', 'external_user_key', 'program_uuid', 'curriculum_uuid'), + ) + user = models.ForeignKey( User, null=True,