Store Discussions ID Map on CourseDiscussionSettings model when course publish signal is fired.

This commit is contained in:
Douglas Hall
2018-04-24 19:42:21 -04:00
parent 085817f487
commit 695b036282
11 changed files with 128 additions and 19 deletions

View File

@@ -0,0 +1,21 @@
# -*- coding: utf-8 -*-
# Generated by Django 1.11.12 on 2018-04-23 21:09
from __future__ import unicode_literals
from django.db import migrations
import jsonfield.fields
class Migration(migrations.Migration):
dependencies = [
('django_comment_common', '0005_coursediscussionsettings'),
]
operations = [
migrations.AddField(
model_name='coursediscussionsettings',
name='discussions_id_map',
field=jsonfield.fields.JSONField(blank=True, help_text=b'Key/value store mapping discussion IDs to discussion XBlock usage keys.', null=True),
),
]

View File

@@ -8,6 +8,7 @@ from django.db import models
from django.db.models.signals import post_save
from django.dispatch import receiver
from django.utils.translation import ugettext_noop
from jsonfield.fields import JSONField
from opaque_keys.edx.django.models import CourseKeyField
from six import text_type
@@ -180,6 +181,11 @@ class CourseDiscussionSettings(models.Model):
db_index=True,
help_text="Which course are these settings associated with?",
)
discussions_id_map = JSONField(
null=True,
blank=True,
help_text="Key/value store mapping discussion IDs to discussion XBlock usage keys.",
)
always_divide_inline_discussions = models.BooleanField(default=False)
_divided_discussions = models.TextField(db_column='divided_discussions', null=True, blank=True) # JSON list

View File

@@ -139,11 +139,18 @@ def set_course_discussion_settings(course_key, **kwargs):
divided_discussions (list): List of discussion ids.
division_scheme (str): `CourseDiscussionSettings.NONE`, `CourseDiscussionSettings.COHORT`,
or `CourseDiscussionSettings.ENROLLMENT_TRACK`
discussions_id_map (dict): Dict containing discussion IDs as keys and the associated discussion
XBlock usage keys as values.
Returns:
A CourseDiscussionSettings object.
"""
fields = {'division_scheme': basestring, 'always_divide_inline_discussions': bool, 'divided_discussions': list}
fields = {
'division_scheme': basestring,
'always_divide_inline_discussions': bool,
'divided_discussions': list,
'discussions_id_map': dict,
}
course_discussion_settings = get_course_discussion_settings(course_key)
for field, field_type in fields.items():
if field in kwargs: