Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
E
edx-ora2
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
edx
edx-ora2
Commits
24a06ceb
Commit
24a06ceb
authored
May 21, 2014
by
gradyward
Committed by
Will Daly
May 22, 2014
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Added XML validation for "sample-based-assessments" (AI)
parent
44ad63d8
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
107 additions
and
3 deletions
+107
-3
apps/openassessment/xblock/test/data/serialize.json
+98
-0
apps/openassessment/xblock/xml.py
+9
-3
No files found.
apps/openassessment/xblock/test/data/serialize.json
View file @
24a06ceb
...
...
@@ -983,5 +983,103 @@
"</rubric>"
,
"</openassessment>"
]
},
"ai_peer_self"
:
{
"title"
:
"Foo"
,
"prompt"
:
"Test prompt"
,
"rubric_feedback_prompt"
:
"Test Feedback Prompt"
,
"start"
:
null
,
"due"
:
null
,
"submission_start"
:
null
,
"submission_due"
:
null
,
"criteria"
:
[
{
"order_num"
:
0
,
"name"
:
"Test criterion"
,
"prompt"
:
"Test criterion prompt"
,
"options"
:
[
{
"order_num"
:
0
,
"points"
:
0
,
"name"
:
"No"
,
"explanation"
:
"No explanation"
},
{
"order_num"
:
1
,
"points"
:
2
,
"name"
:
"Yes"
,
"explanation"
:
"Yes explanation"
}
]
}
],
"assessments"
:
[
{
"name"
:
"sample-based-assessment"
,
"algorithm_id"
:
"sample-algorithm-id"
,
"examples"
:
[
{
"answer"
:
"тєѕт αηѕωєя"
,
"options_selected"
:
[
{
"criterion"
:
"Test criterion"
,
"option"
:
"No"
}
]
},
{
"answer"
:
"тєѕт αηѕωєя TWO"
,
"options_selected"
:
[
{
"criterion"
:
"Test criterion"
,
"option"
:
"Yes"
}
]
}
]
},
{
"name"
:
"peer-assessment"
,
"start"
:
"2014-02-27T09:46:28"
,
"due"
:
"2014-03-01T00:00:00"
,
"must_grade"
:
5
,
"must_be_graded_by"
:
3
},
{
"name"
:
"self-assessment"
,
"start"
:
"2014-04-01T00:00:00"
,
"due"
:
"2014-06-01T00:00:00"
}
],
"expected_xml"
:
[
"<openassessment>"
,
"<title>Foo</title>"
,
"<assessments>"
,
"<assessment name=
\"
sample-based-assessment
\"
algorithm_id=
\"
sample-algorithm-id
\"
>"
,
"<example>"
,
"<answer>тєѕт αηѕωєя</answer>"
,
"<select criterion=
\"
Test criterion
\"
option=
\"
No
\"
/>"
,
"</example>"
,
"<example>"
,
"<answer>тєѕт αηѕωєя TWO</answer>"
,
"<select criterion=
\"
Test criterion
\"
option=
\"
Yes
\"
/>"
,
"</example>"
,
"</assessment>"
,
"<assessment name=
\"
peer-assessment
\"
start=
\"
2014-02-27T09:46:28
\"
due=
\"
2014-03-01T00:00:00
\"
must_grade=
\"
5
\"
must_be_graded_by=
\"
3
\"
/>"
,
"<assessment name=
\"
self-assessment
\"
start=
\"
2014-04-01T00:00:00
\"
due=
\"
2014-06-01T00:00:00
\"
/>"
,
"</assessments>"
,
"<rubric>"
,
"<prompt>Test prompt</prompt>"
,
"<criterion>"
,
"<name>Test criterion</name>"
,
"<prompt>Test criterion prompt</prompt>"
,
"<option points=
\"
0
\"
><name>No</name><explanation>No explanation</explanation></option>"
,
"<option points=
\"
2
\"
><name>Yes</name><explanation>Yes explanation</explanation></option>"
,
"</criterion>"
,
"<feedbackprompt>Test Feedback Prompt</feedbackprompt>"
,
"</rubric>"
,
"</openassessment>"
]
}
}
apps/openassessment/xblock/xml.py
View file @
24a06ceb
...
...
@@ -425,14 +425,17 @@ def _parse_assessments_xml(assessments_root):
# Training examples
examples
=
assessment
.
findall
(
'example'
)
# Student training should always have examples set, even if it's an empty list.
# Student training
and AI Grading
should always have examples set, even if it's an empty list.
# (Validation rules, applied later, are responsible for
# ensuring that users specify at least one example).
# Other assessment types ignore examples.
# Later, we can add AI assessment here.
# All assessments except for Student Training and AI (sample-based-assessment) types ignore examples.
if
assessment_dict
[
'name'
]
==
'student-training'
:
assessment_dict
[
'examples'
]
=
_parse_examples_xml
(
examples
)
if
assessment_dict
[
'name'
]
==
'sample-based-assessment'
:
assessment_dict
[
'examples'
]
=
_parse_examples_xml
(
examples
)
assessment_dict
[
'algorithm_id'
]
=
unicode
(
assessment
.
get
(
'algorithm_id'
))
# Update the list of assessments
assessments_list
.
append
(
assessment_dict
)
...
...
@@ -519,6 +522,9 @@ def serialize_content_to_xml(oa_block, root):
examples
=
[]
_serialize_training_examples
(
examples
,
assessment
)
if
assessment_dict
.
get
(
'algorithm_id'
)
is
not
None
:
assessment
.
set
(
'algorithm_id'
,
unicode
(
assessment_dict
[
'algorithm_id'
]))
# Rubric
rubric_root
=
etree
.
SubElement
(
root
,
'rubric'
)
_serialize_rubric
(
rubric_root
,
oa_block
)
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment