From 4c8b257bbbfccd9ebdd0d13557a84802305c57f3 Mon Sep 17 00:00:00 2001 From: Tyler Hallada Date: Wed, 25 Oct 2017 15:56:28 -0400 Subject: [PATCH] Add OrgDynamicUpgradeDeadlineConfiguration model --- lms/djangoapps/courseware/admin.py | 1 + ..._orgdynamicupgradedeadlineconfiguration.py | 29 +++++++++++++++++++ lms/djangoapps/courseware/models.py | 23 +++++++++++++++ 3 files changed, 53 insertions(+) create mode 100644 lms/djangoapps/courseware/migrations/0005_orgdynamicupgradedeadlineconfiguration.py diff --git a/lms/djangoapps/courseware/admin.py b/lms/djangoapps/courseware/admin.py index 5219448274..c13d4f0ffb 100644 --- a/lms/djangoapps/courseware/admin.py +++ b/lms/djangoapps/courseware/admin.py @@ -8,4 +8,5 @@ admin.site.register(models.DynamicUpgradeDeadlineConfiguration, ConfigurationMod admin.site.register(models.OfflineComputedGrade) admin.site.register(models.OfflineComputedGradeLog) admin.site.register(models.CourseDynamicUpgradeDeadlineConfiguration, KeyedConfigurationModelAdmin) +admin.site.register(models.OrgDynamicUpgradeDeadlineConfiguration, KeyedConfigurationModelAdmin) admin.site.register(models.StudentModule) diff --git a/lms/djangoapps/courseware/migrations/0005_orgdynamicupgradedeadlineconfiguration.py b/lms/djangoapps/courseware/migrations/0005_orgdynamicupgradedeadlineconfiguration.py new file mode 100644 index 0000000000..4c34fd1080 --- /dev/null +++ b/lms/djangoapps/courseware/migrations/0005_orgdynamicupgradedeadlineconfiguration.py @@ -0,0 +1,29 @@ +# -*- coding: utf-8 -*- +from __future__ import unicode_literals + +from django.db import migrations, models +import django.db.models.deletion +from django.conf import settings + + +class Migration(migrations.Migration): + + dependencies = [ + migrations.swappable_dependency(settings.AUTH_USER_MODEL), + ('courseware', '0004_auto_20171010_1639'), + ] + + operations = [ + migrations.CreateModel( + name='OrgDynamicUpgradeDeadlineConfiguration', + fields=[ + ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)), + ('change_date', models.DateTimeField(auto_now_add=True, verbose_name='Change date')), + ('enabled', models.BooleanField(default=False, verbose_name='Enabled')), + ('org_id', models.CharField(max_length=255, db_index=True)), + ('deadline_days', models.PositiveSmallIntegerField(default=21, help_text='Number of days a learner has to upgrade after content is made available')), + ('opt_out', models.BooleanField(default=False, help_text='Disable the dynamic upgrade deadline for this organization.')), + ('changed_by', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, editable=False, to=settings.AUTH_USER_MODEL, null=True, verbose_name='Changed by')), + ], + ), + ] diff --git a/lms/djangoapps/courseware/models.py b/lms/djangoapps/courseware/models.py index 00b58c82d8..d1eba09d08 100644 --- a/lms/djangoapps/courseware/models.py +++ b/lms/djangoapps/courseware/models.py @@ -400,3 +400,26 @@ class CourseDynamicUpgradeDeadlineConfiguration(ConfigurationModel): default=False, help_text=_('Disable the dynamic upgrade deadline for this course run.') ) + + +class OrgDynamicUpgradeDeadlineConfiguration(ConfigurationModel): + """ + Per-org configuration for dynamic upgrade deadlines. + + This model controls dynamic upgrade deadlines on a per-org level, allowing organizations to + have different deadlines or opt out of the functionality altogether. + """ + class Meta(object): + app_label = 'courseware' + + KEY_FIELDS = ('org_id',) + + org_id = models.CharField(max_length=255, db_index=True) + deadline_days = models.PositiveSmallIntegerField( + default=21, + help_text=_('Number of days a learner has to upgrade after content is made available') + ) + opt_out = models.BooleanField( + default=False, + help_text=_('Disable the dynamic upgrade deadline for this organization.') + )