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
682d06bc
Commit
682d06bc
authored
May 09, 2013
by
Vik Paruchuri
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Fix a lot of pep8 violations
parent
f72659fa
Show whitespace changes
Inline
Side-by-side
Showing
8 changed files
with
59 additions
and
41 deletions
+59
-41
common/lib/xmodule/xmodule/combined_open_ended_module.py
+6
-3
common/lib/xmodule/xmodule/open_ended_grading_classes/combined_open_ended_modulev1.py
+4
-6
common/lib/xmodule/xmodule/open_ended_grading_classes/grading_service_module.py
+1
-2
common/lib/xmodule/xmodule/open_ended_grading_classes/open_ended_module.py
+43
-23
common/lib/xmodule/xmodule/open_ended_grading_classes/openendedchild.py
+3
-2
common/lib/xmodule/xmodule/peer_grading_module.py
+0
-1
common/lib/xmodule/xmodule/tests/test_combined_open_ended.py
+1
-3
common/lib/xmodule/xmodule/tests/test_util_open_ended.py
+1
-1
No files found.
common/lib/xmodule/xmodule/combined_open_ended_module.py
View file @
682d06bc
...
@@ -104,11 +104,14 @@ class CombinedOpenEndedModule(CombinedOpenEndedFields, XModule):
...
@@ -104,11 +104,14 @@ class CombinedOpenEndedModule(CombinedOpenEndedFields, XModule):
icon_class
=
'problem'
icon_class
=
'problem'
js
=
{
'coffee'
:
js
=
{
[
resource_string
(
__name__
,
'js/src/combinedopenended/display.coffee'
),
'coffee'
:
[
resource_string
(
__name__
,
'js/src/combinedopenended/display.coffee'
),
resource_string
(
__name__
,
'js/src/collapsible.coffee'
),
resource_string
(
__name__
,
'js/src/collapsible.coffee'
),
resource_string
(
__name__
,
'js/src/javascript_loader.coffee'
),
resource_string
(
__name__
,
'js/src/javascript_loader.coffee'
),
]}
]
}
js_module_name
=
"CombinedOpenEnded"
js_module_name
=
"CombinedOpenEnded"
css
=
{
'scss'
:
[
resource_string
(
__name__
,
'css/combinedopenended/display.scss'
)]}
css
=
{
'scss'
:
[
resource_string
(
__name__
,
'css/combinedopenended/display.scss'
)]}
...
...
common/lib/xmodule/xmodule/open_ended_grading_classes/combined_open_ended_modulev1.py
View file @
682d06bc
...
@@ -294,7 +294,6 @@ class CombinedOpenEndedV1Module():
...
@@ -294,7 +294,6 @@ class CombinedOpenEndedV1Module():
if
self
.
current_task_number
>
0
:
if
self
.
current_task_number
>
0
:
last_response_data
=
self
.
get_last_response
(
self
.
current_task_number
-
1
)
last_response_data
=
self
.
get_last_response
(
self
.
current_task_number
-
1
)
current_response_data
=
self
.
get_current_attributes
(
self
.
current_task_number
)
current_response_data
=
self
.
get_current_attributes
(
self
.
current_task_number
)
if
(
current_response_data
[
'min_score_to_attempt'
]
>
last_response_data
[
'score'
]
if
(
current_response_data
[
'min_score_to_attempt'
]
>
last_response_data
[
'score'
]
or
current_response_data
[
'max_score_to_attempt'
]
<
last_response_data
[
'score'
]):
or
current_response_data
[
'max_score_to_attempt'
]
<
last_response_data
[
'score'
]):
self
.
state
=
self
.
DONE
self
.
state
=
self
.
DONE
...
@@ -662,9 +661,10 @@ class CombinedOpenEndedV1Module():
...
@@ -662,9 +661,10 @@ class CombinedOpenEndedV1Module():
return
{
return
{
'success'
:
False
,
'success'
:
False
,
#This is a student_facing_error
#This is a student_facing_error
'error'
:
(
'You have attempted this question {0} times. '
'error'
:
(
'You are only allowed to attempt it {1} times.'
)
.
format
(
'You have attempted this question {0} times. '
self
.
student_attempts
,
self
.
attempts
)
'You are only allowed to attempt it {1} times.'
)
.
format
(
self
.
student_attempts
,
self
.
attempts
)
}
}
self
.
state
=
self
.
INITIAL
self
.
state
=
self
.
INITIAL
self
.
ready_to_reset
=
False
self
.
ready_to_reset
=
False
...
@@ -815,7 +815,6 @@ class CombinedOpenEndedV1Module():
...
@@ -815,7 +815,6 @@ class CombinedOpenEndedV1Module():
'error'
:
'The problem state got out-of-sync. Please try reloading the page.'
}
'error'
:
'The problem state got out-of-sync. Please try reloading the page.'
}
class
CombinedOpenEndedV1Descriptor
():
class
CombinedOpenEndedV1Descriptor
():
"""
"""
Module for adding combined open ended questions
Module for adding combined open ended questions
...
@@ -861,7 +860,6 @@ class CombinedOpenEndedV1Descriptor():
...
@@ -861,7 +860,6 @@ class CombinedOpenEndedV1Descriptor():
return
{
'task_xml'
:
parse_task
(
'task'
),
'prompt'
:
parse
(
'prompt'
),
'rubric'
:
parse
(
'rubric'
)}
return
{
'task_xml'
:
parse_task
(
'task'
),
'prompt'
:
parse
(
'prompt'
),
'rubric'
:
parse
(
'rubric'
)}
def
definition_to_xml
(
self
,
resource_fs
):
def
definition_to_xml
(
self
,
resource_fs
):
'''Return an xml element representing this definition.'''
'''Return an xml element representing this definition.'''
elt
=
etree
.
Element
(
'combinedopenended'
)
elt
=
etree
.
Element
(
'combinedopenended'
)
...
...
common/lib/xmodule/xmodule/open_ended_grading_classes/grading_service_module.py
View file @
682d06bc
...
@@ -76,7 +76,6 @@ class GradingService(object):
...
@@ -76,7 +76,6 @@ class GradingService(object):
return
r
.
text
return
r
.
text
def
_try_with_login
(
self
,
operation
):
def
_try_with_login
(
self
,
operation
):
"""
"""
Call operation(), which should return a requests response object. If
Call operation(), which should return a requests response object. If
...
@@ -87,7 +86,7 @@ class GradingService(object):
...
@@ -87,7 +86,7 @@ class GradingService(object):
"""
"""
response
=
operation
()
response
=
operation
()
if
(
response
.
json
if
(
response
.
json
and
response
.
json
.
get
(
'success'
)
==
False
and
response
.
json
.
get
(
'success'
)
is
False
and
response
.
json
.
get
(
'error'
)
==
'login_required'
):
and
response
.
json
.
get
(
'error'
)
==
'login_required'
):
# apparrently we aren't logged in. Try to fix that.
# apparrently we aren't logged in. Try to fix that.
r
=
self
.
_login
()
r
=
self
.
_login
()
...
...
common/lib/xmodule/xmodule/open_ended_grading_classes/open_ended_module.py
View file @
682d06bc
...
@@ -72,7 +72,7 @@ class OpenEndedModule(openendedchild.OpenEndedChild):
...
@@ -72,7 +72,7 @@ class OpenEndedModule(openendedchild.OpenEndedChild):
self
.
_parse
(
oeparam
,
self
.
child_prompt
,
self
.
child_rubric
,
system
)
self
.
_parse
(
oeparam
,
self
.
child_prompt
,
self
.
child_rubric
,
system
)
if
self
.
child_created
==
True
and
self
.
child_state
==
self
.
ASSESSING
:
if
self
.
child_created
is
True
and
self
.
child_state
==
self
.
ASSESSING
:
self
.
child_created
=
False
self
.
child_created
=
False
self
.
send_to_grader
(
self
.
latest_answer
(),
system
)
self
.
send_to_grader
(
self
.
latest_answer
(),
system
)
self
.
child_created
=
False
self
.
child_created
=
False
...
@@ -159,9 +159,11 @@ class OpenEndedModule(openendedchild.OpenEndedChild):
...
@@ -159,9 +159,11 @@ class OpenEndedModule(openendedchild.OpenEndedChild):
score
=
int
(
survey_responses
[
'score'
])
score
=
int
(
survey_responses
[
'score'
])
except
:
except
:
#This is a dev_facing_error
#This is a dev_facing_error
error_message
=
(
"Could not parse submission id, grader id, "
error_message
=
(
"or feedback from message_post ajax call. Here is the message data: {0}"
.
format
(
"Could not parse submission id, grader id, "
survey_responses
))
"or feedback from message_post ajax call. "
"Here is the message data: {0}"
.
format
(
survey_responses
)
)
log
.
exception
(
error_message
)
log
.
exception
(
error_message
)
#This is a student_facing_error
#This is a student_facing_error
return
{
'success'
:
False
,
'msg'
:
"There was an error saving your feedback. Please contact course staff."
}
return
{
'success'
:
False
,
'msg'
:
"There was an error saving your feedback. Please contact course staff."
}
...
@@ -179,7 +181,8 @@ class OpenEndedModule(openendedchild.OpenEndedChild):
...
@@ -179,7 +181,8 @@ class OpenEndedModule(openendedchild.OpenEndedChild):
queue_name
=
self
.
message_queue_name
queue_name
=
self
.
message_queue_name
)
)
student_info
=
{
'anonymous_student_id'
:
anonymous_student_id
,
student_info
=
{
'anonymous_student_id'
:
anonymous_student_id
,
'submission_time'
:
qtime
,
'submission_time'
:
qtime
,
}
}
contents
=
{
contents
=
{
...
@@ -190,8 +193,10 @@ class OpenEndedModule(openendedchild.OpenEndedChild):
...
@@ -190,8 +193,10 @@ class OpenEndedModule(openendedchild.OpenEndedChild):
'student_info'
:
json
.
dumps
(
student_info
),
'student_info'
:
json
.
dumps
(
student_info
),
}
}
(
error
,
msg
)
=
qinterface
.
send_to_queue
(
header
=
xheader
,
(
error
,
msg
)
=
qinterface
.
send_to_queue
(
body
=
json
.
dumps
(
contents
))
header
=
xheader
,
body
=
json
.
dumps
(
contents
)
)
#Convert error to a success value
#Convert error to a success value
success
=
True
success
=
True
...
@@ -224,14 +229,17 @@ class OpenEndedModule(openendedchild.OpenEndedChild):
...
@@ -224,14 +229,17 @@ class OpenEndedModule(openendedchild.OpenEndedChild):
anonymous_student_id
+
anonymous_student_id
+
str
(
len
(
self
.
child_history
)))
str
(
len
(
self
.
child_history
)))
xheader
=
xqueue_interface
.
make_xheader
(
lms_callback_url
=
system
.
xqueue
[
'construct_callback'
](),
xheader
=
xqueue_interface
.
make_xheader
(
lms_callback_url
=
system
.
xqueue
[
'construct_callback'
](),
lms_key
=
queuekey
,
lms_key
=
queuekey
,
queue_name
=
self
.
queue_name
)
queue_name
=
self
.
queue_name
)
contents
=
self
.
payload
.
copy
()
contents
=
self
.
payload
.
copy
()
# Metadata related to the student submission revealed to the external grader
# Metadata related to the student submission revealed to the external grader
student_info
=
{
'anonymous_student_id'
:
anonymous_student_id
,
student_info
=
{
'anonymous_student_id'
:
anonymous_student_id
,
'submission_time'
:
qtime
,
'submission_time'
:
qtime
,
}
}
...
@@ -243,12 +251,16 @@ class OpenEndedModule(openendedchild.OpenEndedChild):
...
@@ -243,12 +251,16 @@ class OpenEndedModule(openendedchild.OpenEndedChild):
})
})
# Submit request. When successful, 'msg' is the prior length of the queue
# Submit request. When successful, 'msg' is the prior length of the queue
qinterface
.
send_to_queue
(
header
=
xheader
,
qinterface
.
send_to_queue
(
body
=
json
.
dumps
(
contents
))
header
=
xheader
,
body
=
json
.
dumps
(
contents
)
)
# State associated with the queueing request
# State associated with the queueing request
queuestate
=
{
'key'
:
queuekey
,
queuestate
=
{
'time'
:
qtime
,
}
'key'
:
queuekey
,
'time'
:
qtime
,
}
return
True
return
True
def
_update_score
(
self
,
score_msg
,
queuekey
,
system
):
def
_update_score
(
self
,
score_msg
,
queuekey
,
system
):
...
@@ -302,11 +314,13 @@ class OpenEndedModule(openendedchild.OpenEndedChild):
...
@@ -302,11 +314,13 @@ class OpenEndedModule(openendedchild.OpenEndedChild):
# We want to display available feedback in a particular order.
# We want to display available feedback in a particular order.
# This dictionary specifies which goes first--lower first.
# This dictionary specifies which goes first--lower first.
priorities
=
{
# These go at the start of the feedback
priorities
=
{
# These go at the start of the feedback
'spelling'
:
0
,
'spelling'
:
0
,
'grammar'
:
1
,
'grammar'
:
1
,
# needs to be after all the other feedback
# needs to be after all the other feedback
'markup_text'
:
3
}
'markup_text'
:
3
}
do_not_render
=
[
'topicality'
,
'prompt-overlap'
]
do_not_render
=
[
'topicality'
,
'prompt-overlap'
]
default_priority
=
2
default_priority
=
2
...
@@ -393,7 +407,7 @@ class OpenEndedModule(openendedchild.OpenEndedChild):
...
@@ -393,7 +407,7 @@ class OpenEndedModule(openendedchild.OpenEndedChild):
rubric_feedback
=
""
rubric_feedback
=
""
feedback
=
self
.
_convert_longform_feedback_to_html
(
response_items
)
feedback
=
self
.
_convert_longform_feedback_to_html
(
response_items
)
rubric_scores
=
[]
rubric_scores
=
[]
if
response_items
[
'rubric_scores_complete'
]
==
True
:
if
response_items
[
'rubric_scores_complete'
]
is
True
:
rubric_renderer
=
CombinedOpenEndedRubric
(
system
,
True
)
rubric_renderer
=
CombinedOpenEndedRubric
(
system
,
True
)
rubric_dict
=
rubric_renderer
.
render_rubric
(
response_items
[
'rubric_xml'
])
rubric_dict
=
rubric_renderer
.
render_rubric
(
response_items
[
'rubric_xml'
])
success
=
rubric_dict
[
'success'
]
success
=
rubric_dict
[
'success'
]
...
@@ -401,8 +415,10 @@ class OpenEndedModule(openendedchild.OpenEndedChild):
...
@@ -401,8 +415,10 @@ class OpenEndedModule(openendedchild.OpenEndedChild):
rubric_scores
=
rubric_dict
[
'rubric_scores'
]
rubric_scores
=
rubric_dict
[
'rubric_scores'
]
if
not
response_items
[
'success'
]:
if
not
response_items
[
'success'
]:
return
system
.
render_template
(
"{0}/open_ended_error.html"
.
format
(
self
.
TEMPLATE_DIR
),
return
system
.
render_template
(
{
'errors'
:
feedback
})
"{0}/open_ended_error.html"
.
format
(
self
.
TEMPLATE_DIR
),
{
'errors'
:
feedback
}
)
feedback_template
=
system
.
render_template
(
"{0}/open_ended_feedback.html"
.
format
(
self
.
TEMPLATE_DIR
),
{
feedback_template
=
system
.
render_template
(
"{0}/open_ended_feedback.html"
.
format
(
self
.
TEMPLATE_DIR
),
{
'grader_type'
:
response_items
[
'grader_type'
],
'grader_type'
:
response_items
[
'grader_type'
],
...
@@ -545,8 +561,11 @@ class OpenEndedModule(openendedchild.OpenEndedChild):
...
@@ -545,8 +561,11 @@ class OpenEndedModule(openendedchild.OpenEndedChild):
if
not
self
.
child_history
:
if
not
self
.
child_history
:
return
""
return
""
feedback_dict
=
self
.
_parse_score_msg
(
self
.
child_history
[
-
1
]
.
get
(
'post_assessment'
,
""
),
system
,
feedback_dict
=
self
.
_parse_score_msg
(
join_feedback
=
join_feedback
)
self
.
child_history
[
-
1
]
.
get
(
'post_assessment'
,
""
),
system
,
join_feedback
=
join_feedback
)
if
not
short_feedback
:
if
not
short_feedback
:
return
feedback_dict
[
'feedback'
]
if
feedback_dict
[
'valid'
]
else
''
return
feedback_dict
[
'feedback'
]
if
feedback_dict
[
'valid'
]
else
''
if
feedback_dict
[
'valid'
]:
if
feedback_dict
[
'valid'
]:
...
@@ -734,8 +753,9 @@ class OpenEndedDescriptor():
...
@@ -734,8 +753,9 @@ class OpenEndedDescriptor():
"""Assumes that xml_object has child k"""
"""Assumes that xml_object has child k"""
return
xml_object
.
xpath
(
k
)[
0
]
return
xml_object
.
xpath
(
k
)[
0
]
return
{
'oeparam'
:
parse
(
'openendedparam'
)}
return
{
'oeparam'
:
parse
(
'openendedparam'
)
}
def
definition_to_xml
(
self
,
resource_fs
):
def
definition_to_xml
(
self
,
resource_fs
):
'''Return an xml element representing this definition.'''
'''Return an xml element representing this definition.'''
...
...
common/lib/xmodule/xmodule/open_ended_grading_classes/openendedchild.py
View file @
682d06bc
...
@@ -101,8 +101,9 @@ class OpenEndedChild(object):
...
@@ -101,8 +101,9 @@ class OpenEndedChild(object):
# completion (doesn't matter if you self-assessed correct/incorrect).
# completion (doesn't matter if you self-assessed correct/incorrect).
if
system
.
open_ended_grading_interface
:
if
system
.
open_ended_grading_interface
:
self
.
peer_gs
=
PeerGradingService
(
system
.
open_ended_grading_interface
,
system
)
self
.
peer_gs
=
PeerGradingService
(
system
.
open_ended_grading_interface
,
system
)
self
.
controller_qs
=
controller_query_service
.
ControllerQueryService
(
system
.
open_ended_grading_interface
,
self
.
controller_qs
=
controller_query_service
.
ControllerQueryService
(
system
)
system
.
open_ended_grading_interface
,
system
)
else
:
else
:
self
.
peer_gs
=
MockPeerGradingService
()
self
.
peer_gs
=
MockPeerGradingService
()
self
.
controller_qs
=
None
self
.
controller_qs
=
None
...
...
common/lib/xmodule/xmodule/peer_grading_module.py
View file @
682d06bc
...
@@ -498,7 +498,6 @@ class PeerGradingModule(PeerGradingFields, XModule):
...
@@ -498,7 +498,6 @@ class PeerGradingModule(PeerGradingFields, XModule):
log
.
error
(
"Problem {0} does not exist in this course"
.
format
(
location
))
log
.
error
(
"Problem {0} does not exist in this course"
.
format
(
location
))
raise
raise
for
problem
in
problem_list
:
for
problem
in
problem_list
:
problem_location
=
problem
[
'location'
]
problem_location
=
problem
[
'location'
]
descriptor
=
_find_corresponding_module_for_location
(
problem_location
)
descriptor
=
_find_corresponding_module_for_location
(
problem_location
)
...
...
common/lib/xmodule/xmodule/tests/test_combined_open_ended.py
View file @
682d06bc
...
@@ -18,7 +18,7 @@ import logging
...
@@ -18,7 +18,7 @@ import logging
log
=
logging
.
getLogger
(
__name__
)
log
=
logging
.
getLogger
(
__name__
)
from
.
import
test_system
from
.
import
test_system
ORG
=
'edX'
ORG
=
'edX'
COURSE
=
'open_ended'
# name of directory with course data
COURSE
=
'open_ended'
# name of directory with course data
...
@@ -72,7 +72,6 @@ class OpenEndedChildTest(unittest.TestCase):
...
@@ -72,7 +72,6 @@ class OpenEndedChildTest(unittest.TestCase):
self
.
openendedchild
=
OpenEndedChild
(
self
.
test_system
,
self
.
location
,
self
.
openendedchild
=
OpenEndedChild
(
self
.
test_system
,
self
.
location
,
self
.
definition
,
self
.
descriptor
,
self
.
static_data
,
self
.
metadata
)
self
.
definition
,
self
.
descriptor
,
self
.
static_data
,
self
.
metadata
)
def
test_latest_answer_empty
(
self
):
def
test_latest_answer_empty
(
self
):
answer
=
self
.
openendedchild
.
latest_answer
()
answer
=
self
.
openendedchild
.
latest_answer
()
self
.
assertEqual
(
answer
,
""
)
self
.
assertEqual
(
answer
,
""
)
...
@@ -376,7 +375,6 @@ class CombinedOpenEndedModuleTest(unittest.TestCase):
...
@@ -376,7 +375,6 @@ class CombinedOpenEndedModuleTest(unittest.TestCase):
descriptor
,
descriptor
,
model_data
=
{
'data'
:
full_definition
,
'weight'
:
'1'
})
model_data
=
{
'data'
:
full_definition
,
'weight'
:
'1'
})
def
setUp
(
self
):
def
setUp
(
self
):
# TODO: this constructor call is definitely wrong, but neither branch
# TODO: this constructor call is definitely wrong, but neither branch
# of the merge matches the module constructor. Someone (Vik?) should fix this.
# of the merge matches the module constructor. Someone (Vik?) should fix this.
...
...
common/lib/xmodule/xmodule/tests/test_util_open_ended.py
View file @
682d06bc
...
@@ -18,11 +18,11 @@ S3_INTERFACE = {
...
@@ -18,11 +18,11 @@ S3_INTERFACE = {
"aws_bucket_name"
:
""
,
"aws_bucket_name"
:
""
,
}
}
class
MockQueryDict
(
dict
):
class
MockQueryDict
(
dict
):
"""
"""
Mock a query dict so that it can be used in test classes
Mock a query dict so that it can be used in test classes
"""
"""
def
getlist
(
self
,
key
,
default
=
None
):
def
getlist
(
self
,
key
,
default
=
None
):
try
:
try
:
return
super
(
MockQueryDict
,
self
)
.
__getitem__
(
key
)
return
super
(
MockQueryDict
,
self
)
.
__getitem__
(
key
)
...
...
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