Commit a3ba60ea by David Ormsbee

Merge pull request #41 from edx/jrbl/125-show-users-scored-subs

TIM-125: Pull request fixups
parents 5f6071b8 4ce087e7
...@@ -279,29 +279,26 @@ class OpenAssessmentBlock(XBlock): ...@@ -279,29 +279,26 @@ class OpenAssessmentBlock(XBlock):
trace = self._get_xblock_trace() trace = self._get_xblock_trace()
student_item_dict = self._get_student_item_dict() student_item_dict = self._get_student_item_dict()
# This user's most recent previous submission # This user's most recent previous submission
user_submission = self.__get_submission(student_item_dict) user_submission = self._get_user_submission(student_item_dict)
# This score for this user's user_submission # This score for this user's user_submission
user_score = self.__get_score(student_item_dict, user_submission) user_score = self._get_submission_score(student_item_dict, user_submission)
peer_eval = self._hack_get_eval() # HACK: Replace with proper workflow. peer_eval = self._hack_get_eval() # HACK: Replace with proper workflow.
peer_submission = self.__get_peer_submission(student_item_dict, peer_eval) peer_submission = self._get_peer_submission(student_item_dict, peer_eval)
if user_score: if user_submission and peer_submission:
# We're Done!
return self.__view_helper_show_scores(user_score, trace)
elif user_submission and peer_submission:
# We've submitted, but not finished assessing. Do assessments. # We've submitted, but not finished assessing. Do assessments.
return self._view_helper_make_assessment(peer_submission, trace) return self.show_assessment_html(peer_submission, trace)
elif user_submission: elif user_submission:
# We've submitted, but there's no assesing to do yet. # We've submitted, but there's no assesing to do yet.
return self.__view_helper_check_back() return self.show_check_back_html(user_score)
else: else:
# We haven't submitted, so do that first. # We haven't submitted, so do that first.
# XXX: In future, we'll support multiple submission and this will be wrong # XXX: In future, we'll support multiple submission and this will be wrong
return self._view_helper_make_submission(trace) return self.show_submission_html(trace)
@staticmethod @staticmethod
def __get_submission(student_item_dict): def _get_user_submission(student_item_dict):
"""Return the most recent submission, if any, by user in student_item_dict""" """Return the most recent submission, if any, by user in student_item_dict"""
submissions = [] submissions = []
try: try:
...@@ -312,7 +309,7 @@ class OpenAssessmentBlock(XBlock): ...@@ -312,7 +309,7 @@ class OpenAssessmentBlock(XBlock):
return submissions[0] if submissions else None return submissions[0] if submissions else None
@staticmethod @staticmethod
def __get_score(student_item_dict, submission=False): def _get_submission_score(student_item_dict, submission=False):
"""Return the most recent score, if any, for student item""" """Return the most recent score, if any, for student item"""
scores = False scores = False
if submission: if submission:
...@@ -320,7 +317,7 @@ class OpenAssessmentBlock(XBlock): ...@@ -320,7 +317,7 @@ class OpenAssessmentBlock(XBlock):
return scores[0] if scores else None return scores[0] if scores else None
@staticmethod @staticmethod
def __get_peer_submission(student_item_dict, peer_eval): def _get_peer_submission(student_item_dict, peer_eval):
"""Return a peer submission, if any, for user to assess""" """Return a peer submission, if any, for user to assess"""
peer_submission = None peer_submission = None
try: try:
...@@ -332,18 +329,17 @@ class OpenAssessmentBlock(XBlock): ...@@ -332,18 +329,17 @@ class OpenAssessmentBlock(XBlock):
pass pass
return peer_submission return peer_submission
def __view_helper_show_check_back(self): def show_check_back_html(self, user_score=None):
"""Return HTML saying no peer work to assess, check back later.""" """Return HTML saying no peer work to assess, check back later."""
# This looks awful on purpose; XXX: should fix as shiny lands # This looks awful on purpose; XXX: should fix as shiny lands
return Fragment(u"<div>There are no submissions to review. Check back soon.</div>") html = ""
if user_score:
def __view_helper_show_scores(self, user_score, trace=None): html = u"<div>You've received the following score: %s/%s.</div" % (user_score['points_earned'],
"""Return HTML to display users's score to them.""" user_score['points_possible'])
# This looks awful on purpose; XXX: should fix as shiny lands html += u"<div>There are no submissions to review. Check back soon.</div>"
return Fragment(u"<div>You've received the following score:" return Fragment(html)
" %s/%s.</div>" % (user_score['points_earned'], user_score['points_possible']))
def _view_helper_make_assessment(self, peer_submission, trace=None): def show_assessment_html(self, peer_submission, user_score=None, trace=None):
"""Return HTML for rubric display and assessment solicitation.""" """Return HTML for rubric display and assessment solicitation."""
# Submits to assess handler # Submits to assess handler
load = self._load load = self._load
...@@ -351,17 +347,19 @@ class OpenAssessmentBlock(XBlock): ...@@ -351,17 +347,19 @@ class OpenAssessmentBlock(XBlock):
default_filters=mako_default_filters, default_filters=mako_default_filters,
input_encoding='utf-8', input_encoding='utf-8',
) )
frag = Fragment(html.render_unicode(xblock_trace=trace, frag = Fragment(html.render_unicode(
xblock_trace=trace,
peer_submission=peer_submission, peer_submission=peer_submission,
rubric_instructions=self.rubric_instructions, rubric_instructions=self.rubric_instructions,
rubric_criteria=self.rubric_criteria, rubric_criteria=self.rubric_criteria,
user_score=user_score
)) ))
frag.add_css(load("static/css/openassessment.css")) frag.add_css(load("static/css/openassessment.css"))
frag.add_javascript(load("static/js/src/oa_assessment.js")) frag.add_javascript(load("static/js/src/oa_assessment.js"))
frag.initialize_js('OpenAssessmentBlock') frag.initialize_js('OpenAssessmentBlock')
return frag return frag
def _view_helper_make_submission(self, trace=None): def show_submission_html(self, trace=None):
"""Return HTML for the page prompting the user and soliciting submissions.""" """Return HTML for the page prompting the user and soliciting submissions."""
# Submits to submission handler # Submits to submission handler
load = self._load load = self._load
...@@ -423,7 +421,7 @@ class OpenAssessmentBlock(XBlock): ...@@ -423,7 +421,7 @@ class OpenAssessmentBlock(XBlock):
status_text = None status_text = None
student_sub = data['submission'] student_sub = data['submission']
student_item_dict = self._get_student_item_dict() student_item_dict = self._get_student_item_dict()
prev_sub = self.__get_submission(student_item_dict) prev_sub = self._get_user_submission(student_item_dict)
if prev_sub: if prev_sub:
# It is an error to submit multiple times for the same item # It is an error to submit multiple times for the same item
......
<!-- START OpenAssessmentBlock HTML --> <!-- START OpenAssessmentBlock HTML -->
% if user_score:
<div>You've received the following score: ${user_score['points_earned']}/${user_score['points_possible']}.</div>
% endif
<div class="openassessment_block" id="openassessment_block_${xblock_trace[0]}"> <div class="openassessment_block" id="openassessment_block_${xblock_trace[0]}">
<div id="peer_submission_uuid" hidden="true">${peer_submission["uuid"]}</div> <div id="peer_submission_uuid" hidden="true">${peer_submission["uuid"]}</div>
<p>${peer_submission["answer"]}</p> <p>${peer_submission["answer"]}</p>
......
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