Commit 17cdf6a6 by Usman Khalid

Updates to studio_mixin

TNL-708
parent 94fe8e3a
......@@ -66,7 +66,11 @@ VALID_ASSESSMENT_TYPES = [
# Schema definition for an update from the Studio JavaScript editor.
EDITOR_UPDATE_SCHEMA = Schema({
Required('prompt'): utf8_validator,
Required('prompts'): [
Schema({
Required('description'): utf8_validator,
})
],
Required('title'): utf8_validator,
Required('feedback_prompt'): utf8_validator,
Required('feedback_default_text'): utf8_validator,
......
"""
Studio editing view for OpenAssessment XBlock.
"""
import pkg_resources
import copy
import logging
import pkg_resources
from uuid import uuid4
from django.template import Context
from django.template.loader import get_template
from voluptuous import MultipleInvalid
......@@ -112,7 +114,7 @@ class StudioMixin(object):
feedback_default_text = DEFAULT_RUBRIC_FEEDBACK_TEXT
return {
'prompt': self.prompt,
'prompts': self.prompts,
'title': self.title,
'submission_due': submission_due,
'submission_start': submission_start,
......@@ -192,7 +194,7 @@ class StudioMixin(object):
xblock_validator = validator(self, self._)
success, msg = xblock_validator(
create_rubric_dict(data['prompt'], data['criteria']),
create_rubric_dict(data['prompts'], data['criteria']),
data['assessments'],
submission_start=data['submission_start'],
submission_due=data['submission_due'],
......@@ -205,7 +207,7 @@ class StudioMixin(object):
# so we can safely modify the XBlock fields.
self.title = data['title']
self.display_name = data['title']
self.prompt = data['prompt']
self.prompts = data['prompts']
self.rubric_criteria = data['criteria']
self.rubric_assessments = data['assessments']
self.editor_assessments_order = data['editor_assessments_order']
......
......@@ -214,6 +214,10 @@ def validate_rubric(rubric_dict, current_rubric, is_released, is_example_based,
# but nothing that would change the point value of a rubric.
if is_released:
# Number of prompts must be the same
if len(rubric_dict['prompts']) != len(current_rubric['prompts']):
return (False, _(u'Prompts cannot be created or deleted after a problem is released.'))
# Number of criteria must be the same
if len(rubric_dict['criteria']) != len(current_rubric['criteria']):
return (False, _(u'The number of criteria cannot be changed after a problem is released.'))
......@@ -330,7 +334,7 @@ def validator(oa_block, _, strict_post_release=True):
# Rubric
is_example_based = 'example-based-assessment' in [asmnt.get('name') for asmnt in assessments]
current_rubric = {
'prompt': oa_block.prompt,
'prompts': oa_block.prompts,
'criteria': oa_block.rubric_criteria
}
success, msg = validate_rubric(rubric_dict, current_rubric, is_released, is_example_based, _)
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment