Skip to content

Commit

Permalink
fix: set default values for library v2 rendering
Browse files Browse the repository at this point in the history
  • Loading branch information
DanielVZ96 committed Feb 1, 2025
1 parent bce1829 commit c8de642
Show file tree
Hide file tree
Showing 2 changed files with 25 additions and 9 deletions.
2 changes: 1 addition & 1 deletion openassessment/xblock/openassessmentblock.py
Original file line number Diff line number Diff line change
Expand Up @@ -919,8 +919,8 @@ def parse_xml(cls, node, runtime, keys):
Inherited by XBlock core.
"""
config = parse_from_xml(node)
block = runtime.construct_xblock_from_class(cls, keys)
config = parse_from_xml(node, block)

xblock_validator = validator(block, block._, strict_post_release=False)
xblock_validator(
Expand Down
32 changes: 24 additions & 8 deletions openassessment/xblock/utils/xml.py
Original file line number Diff line number Diff line change
Expand Up @@ -276,7 +276,7 @@ def _parse_prompts_xml(root):
raise UpdateFromXmlError('Every "prompt" element must contain a "description" element.')

prompts_list.append(prompt_dict)
else:
elif root.find('rubric'):
# For backwards compatibility. Initially a single prompt element was added in
# the rubric element.
rubric_el = root.find('rubric')
Expand All @@ -290,6 +290,12 @@ def _parse_prompts_xml(root):
'description': prompt_description,
}
)
else:
prompts_list.append(
{
'description': '',
}
)

return prompts_list

Expand Down Expand Up @@ -859,7 +865,7 @@ def serialize_assessments_to_xml_str(oa_block):
return etree.tostring(assessments_root, pretty_print=True, encoding='unicode')


def parse_from_xml(root):
def parse_from_xml(root, block=None):
"""
Update the OpenAssessment XBlock's content from an XML definition.
Expand Down Expand Up @@ -942,15 +948,23 @@ def parse_from_xml(root):

# Retrieve the title
title_el = root.find('title')
if title_el is None:
title = block and block.title
if title_el is None and not title:
raise UpdateFromXmlError('Every assessment must contain a "title" element.')
title = _safe_get_text(title_el)
if title_el:
title = _safe_get_text(title_el)

# Retrieve the rubric
rubric_el = root.find('rubric')
if rubric_el is None:
rubric = block and {
'criteria': block.rubric_criteria,
'feedbackprompt': block.rubric_feedback_prompt,
'feedback_default_text': block.rubric_feedback_default_text,
}
if rubric_el is None and rubric is None:
raise UpdateFromXmlError('Every assessment must contain a "rubric" element.')
rubric = parse_rubric_xml(rubric_el)
if rubric_el:
rubric = parse_rubric_xml(rubric_el)

# Retrieve the prompts
prompts = _parse_prompts_xml(root)
Expand All @@ -977,9 +991,11 @@ def parse_from_xml(root):

# Retrieve the assessments
assessments_el = root.find('assessments')
if assessments_el is None:
assessments = block and block.valid_assessments
if assessments_el is None and block is None:
raise UpdateFromXmlError('Every assessment must contain an "assessments" element.')
assessments = parse_assessments_xml(assessments_el)
if assessments_el:
assessments = parse_assessments_xml(assessments_el)

return {
'title': title,
Expand Down

0 comments on commit c8de642

Please sign in to comment.