Commit 6a74d0be by Stephen Sanchez

Creating a number of templates for response. Requires cleanup.

parent a2709bd9
...@@ -302,7 +302,7 @@ class OpenAssessmentBlock(XBlock, SubmissionMixin, PeerAssessmentMixin, SelfAsse ...@@ -302,7 +302,7 @@ class OpenAssessmentBlock(XBlock, SubmissionMixin, PeerAssessmentMixin, SelfAsse
return block return block
def get_grade_state(self): def get_grade_state(self):
# TODO: Determine if we want to build out grade state right now. # TODO: Placeholder for workflow state.
grade_state = { grade_state = {
"style_class": "is--incomplete", "style_class": "is--incomplete",
......
...@@ -17,12 +17,12 @@ ...@@ -17,12 +17,12 @@
<!--header class="step__header ui-toggle-visibility__control"--> <!--header class="step__header ui-toggle-visibility__control"-->
<h2 class="step__title"> <h2 class="step__title">
<span class="step__label">Your Response</span> <span class="step__label">Your Response</span>
<span class="step__deadline">due <span class="date">{{ formatted_due_datetime }}</span> <span class="step__deadline">due <span class="date">{{ formatted_due_datetime }}</span></span>
</h2> </h2>
<span class="step__status"> <span class="step__status">
<span class="step__status__label">This step's status:</span> <span class="step__status__label">This step's status:</span>
<span class="step__status__value">Incomplete</span> <span class="step__status__value">{{ step_status }}</span>
</span> </span>
<!--/header--> <!--/header-->
......
<!-- CASE: unaswered and problem closed -->
<li id="openassessment__response" class="openassessment__steps__step step--response is--unavailable ui-toggle-visibility">
<!--header class="step__header ui-toggle-visibility__control"-->
<h2 class="step__title">
<span class="step__label">Your Response</span>
<span class="step__deadline">due <span class="date">{{ formatted_due_datetime }}</span></span>
</h2>
<span class="step__status">
<span class="step__status__label">This step's status:</span>
<span class="step__status__value">{{ step_status }}</span>
</span>
<!--/header-->
<div class="step__instruction">
<p>You did not complete this portion of the problem before its due date.</p>
</div>
</li>
\ No newline at end of file
<!-- CASE: is graded -->
<li id="openassessment__response" class="openassessment__steps__step step--response is--graded is--collapsed ui-toggle-visibility">
<!--header class="step__header ui-toggle-visibility__control"-->
<h2 class="step__title">
<span class="step__title__label">Your Response</span>
<span class="step__title__deadline">due <span class="date">{{ formatted_due_datetime }}</span></span>
</h2>
<span class="step__status">
<span class="step__status__label">This step's status:</span>
<span class="step_status_value">{{ step_status }}</span>
</span>
<!--/header-->
<div class="step__content">
<!-- user's response -->
<article class="submission__answer__display">
<h3 class="submission__answer__display__title">Your Submitted Response</h3>
<div class="submission__answer__display__content">
{{ student_submission.answer }}
</div>
</article>
<!-- peer evaluations -->
<article class="submission__peer-evaluations">
<h3 class="submission__peer-evaluations__title">Peer Evaluations Of Your Response</h3>
<ol class="list submission__peer-evaluations__questions">
{% for criterion in rubric_criteria %}
<!-- individual question from rubric -->
<li class="question question--001 ui-toggle-visibility">
<h4 class="question__title ui-toggle-visibility__control">
<span class="title__copy">{{ criterion.instructions }}</span>
<span class="question__score">
<span class="label sr">Overall Question Score</span>
<span class="question__score__value">10</span>
<span class="label label--divider sr">out of</span>
<span class="question__score__potential">10</span>
</span>
</h4>
{% for assessment in peer_assessments %}
<ul class="question__answers ui-toggle-visibility__content">
<li class="answer peer-assessment--001" id="question--001__answer-001">
<h5 class="answer__title">
<span class="answer__source">
<span class="label sr">Assessor: </span>
<span class="value">Peer 1</span>
</span>
<span class="answer__value">
<span class="label sr">Peer's Assessment: </span>
<span class="value">{{ assessment }}</span>
</span>
</h5>
<span class="answer__content">
{{ assessment }}
</span>
</li>
</ul>
{% endfor %}
</li>
{% endfor %}
</ol>
</article>
<!-- peer assessment feedback -->
<form id="submission__feeedback" class="submission__feeedback ui-toggle-visibility" method="post">
<h3 class="submission__feeedback__title ui-toggle-visibility__control">Give Feedback On Peer Evaluations</h3>
<ol class="list list--fields submission__feeedback__content ui-toggle-visibility__content">
<li class="field field--textarea feedback__remarks" id="feedback__remarks">
<label for="feedback__remarks__value">Please provide any thoughts or comments on the feedback you received from your peers here. Donec sed odio dui. Vivamus sagittis lacus vel augue laoreet rutrum faucibus dolor auctor.</label>
<textarea id="feedback__remarks__value" placeholder="I feel the feedback I received was..."></textarea>
</li>
</ol>
<ul class="list list--actions">
<li class="list--actions__item">
<button type="submit" id="feedback__submit" class="action action--submit feedback__submit">Submit Feedback On Peer Evaluations</button>
</li>
</ul>
</form>
</div>
\ No newline at end of file
<!-- CASE: is submitted and due date has passed -->
<li id="openassessment__response" class="openassessment__steps__step step--response is--submitted is--unavailable ui-toggle-visibility">
<!--header class="step__header ui-toggle-visibility__control"-->
<h2 class="step__title">
<span class="step__label">Your Response</span>
<span class="step__deadline">due <span class="date">{{ formatted_due_datetime }}</span></span>
</h2>
<span class="step__status">
<span class="ico"><i class="fa fa-info-circle"></i></span>
<span class="step__status__label">This step's status:</span>
<span class="step__status__value">{{ step_status }}</span>
</span>
<!--/header-->
<div class="step__content">
<!-- user's response -->
<article class="submission__answer__display">
<h3 class="submission__answer__display__title">Your Submitted Response</h3>
<div class="submission__answer__display__content">
{{ student_submission.answer }}
</div>
</article>
</div>
</li>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8" standalone="no" ?> <?xml version="1.0" encoding="UTF-8" standalone="no" ?>
<vertical_demo> <vertical_demo>
<openassessment start="2013-02-24T13:53:50" due="2014-02-24T13:53:50"> <openassessment start="2013-02-24T13:53:50" due="2040-02-24T13:53:50">
<title> <title>
Censorship in Public Libraries Censorship in Public Libraries
</title> </title>
......
<?xml version="1.0" encoding="UTF-8" standalone="no" ?> <?xml version="1.0" encoding="UTF-8" standalone="no" ?>
<vertical_demo> <vertical_demo>
<openassessment start="2013-02-24T13:53:50" due="2014-02-24T13:53:50"> <openassessment start="2013-02-24T13:53:50" due="2040-02-24T13:53:50">
<title> <title>
Global Poverty Global Poverty
</title> </title>
......
import datetime
from xblock.core import XBlock from xblock.core import XBlock
from submissions import api from submissions import api
...@@ -48,9 +49,10 @@ class SubmissionMixin(object): ...@@ -48,9 +49,10 @@ class SubmissionMixin(object):
student_item_dict = self.get_student_item_dict() student_item_dict = self.get_student_item_dict()
prev_sub = self._get_user_submission(student_item_dict) prev_sub = self._get_user_submission(student_item_dict)
status_tag = 'ENOMULTI' # It is an error to submit multiple times for the same item if prev_sub:
if not prev_sub: # It is an error to submit multiple times for the same item
status_tag = 'ENODATA' status_tag = 'ENOMULTI'
else:
try: try:
response = api.create_submission(student_item_dict, student_sub) response = api.create_submission(student_item_dict, student_sub)
except api.SubmissionRequestError, e: except api.SubmissionRequestError, e:
...@@ -121,5 +123,39 @@ class SubmissionMixin(object): ...@@ -121,5 +123,39 @@ class SubmissionMixin(object):
Assessment XBlock. See OpenAssessmentBlock.render_assessment() for Assessment XBlock. See OpenAssessmentBlock.render_assessment() for
more information on rendering XBlock sections. more information on rendering XBlock sections.
Needs to support the following scenarios:
Unanswered and Open
Unanswered and Closed
Saved
Saved and Closed
Submitted
Submitted and Closed
Submitted, waiting assessment
Submitted and graded
""" """
return self.render_assessment('static/html/oa_response.html') # TODO Check if Saved
student_item = self.get_student_item_dict()
# Has the student submitted?
student_submission = self._get_user_submission(student_item)
# Is the question closed?
due = datetime.datetime.strptime(self.due_datetime, "%Y-%m-%dT%H:%M:%S")
# Has it been graded yet?
student_score = self._get_submission_score(student_item)
step_status = "Submitted" if student_submission else "Incomplete"
context = {
"student_submission": student_submission,
"student_score": student_score,
"step_status": step_status,
}
path = 'static/html/oa_response.html'
if due < datetime.datetime.now() and not student_submission:
path = 'static/html/oa_response_closed.html'
if student_submission:
path = 'static/html/oa_response_submitted.html'
return self.render_assessment(path, context_dict=context)
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