Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
E
edx-platform
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-platform
Commits
248017b4
Commit
248017b4
authored
Feb 14, 2013
by
Ned Batchelder
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
No longer need to support <coderesponse> without <codeparam>, so scrap the code.
parent
a6677aa0
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
2 additions
and
61 deletions
+2
-61
common/lib/capa/capa/responsetypes.py
+2
-61
No files found.
common/lib/capa/capa/responsetypes.py
View file @
248017b4
...
...
@@ -1318,10 +1318,8 @@ class CodeResponse(LoncapaResponse):
# Check if XML uses the ExternalResponse format or the generic
# CodeResponse format
codeparam
=
self
.
xml
.
find
(
'codeparam'
)
if
codeparam
is
None
:
self
.
_parse_externalresponse_xml
()
else
:
self
.
_parse_coderesponse_xml
(
codeparam
)
assert
codeparam
is
not
None
,
"Unsupported old format! <coderesponse> without <codeparam>"
self
.
_parse_coderesponse_xml
(
codeparam
)
def
_parse_coderesponse_xml
(
self
,
codeparam
):
'''
...
...
@@ -1341,63 +1339,6 @@ class CodeResponse(LoncapaResponse):
self
.
answer
=
find_with_default
(
codeparam
,
'answer_display'
,
'No answer provided.'
)
def
_parse_externalresponse_xml
(
self
):
'''
VS[compat]: Suppport for old ExternalResponse XML format. When successful, sets:
self.initial_display
self.answer (an answer to display to the student in the LMS)
self.payload
'''
answer
=
self
.
xml
.
find
(
'answer'
)
if
answer
is
not
None
:
answer_src
=
answer
.
get
(
'src'
)
if
answer_src
is
not
None
:
code
=
self
.
system
.
filesystem
.
open
(
'src/'
+
answer_src
)
.
read
()
else
:
code
=
answer
.
text
else
:
# no <answer> stanza; get code from <script>
code
=
self
.
context
[
'script_code'
]
if
not
code
:
msg
=
'
%
s: Missing answer script code for coderesponse'
%
unicode
(
self
)
msg
+=
"
\n
See XML source line
%
s"
%
getattr
(
self
.
xml
,
'sourceline'
,
'<unavailable>'
)
raise
LoncapaProblemError
(
msg
)
tests
=
self
.
xml
.
get
(
'tests'
)
# Extract 'answer' and 'initial_display' from XML. Note that the code to be exec'ed here is:
# (1) Internal edX code, i.e. NOT student submissions, and
# (2) The code should only define the strings 'initial_display', 'answer',
# 'preamble', 'test_program'
# following the ExternalResponse XML format
penv
=
{}
penv
[
'__builtins__'
]
=
globals
()[
'__builtins__'
]
try
:
raise
Exception
(
"exec 3"
)
exec
(
code
,
penv
,
penv
)
except
Exception
as
err
:
log
.
error
(
'Error in CodeResponse
%
s: Error in problem reference code'
%
err
)
raise
Exception
(
err
)
try
:
self
.
answer
=
penv
[
'answer'
]
self
.
initial_display
=
penv
[
'initial_display'
]
except
Exception
as
err
:
log
.
error
(
"Error in CodeResponse
%
s: Problem reference code does not define"
" 'answer' and/or 'initial_display' in <answer>...</answer>"
%
err
)
raise
Exception
(
err
)
# Finally, make the ExternalResponse input XML format conform to the generic
# exteral grader interface
# The XML tagging of grader_payload is pyxserver-specific
grader_payload
=
'<pyxserver>'
grader_payload
+=
'<tests>'
+
tests
+
'</tests>
\n
'
grader_payload
+=
'<processor>'
+
code
+
'</processor>'
grader_payload
+=
'</pyxserver>'
self
.
payload
=
{
'grader_payload'
:
grader_payload
}
def
get_score
(
self
,
student_answers
):
try
:
# Note that submission can be a file
...
...
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