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
ef220715
Commit
ef220715
authored
Feb 28, 2014
by
Will Daly
Browse files
Options
Browse Files
Download
Plain Diff
Merge pull request #58 from edx/will/fix-preview-errors
Will/fix preview errors
parents
be916197
74d0e168
Hide whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
32 additions
and
18 deletions
+32
-18
apps/openassessment/xblock/openassessmentblock.py
+6
-7
apps/openassessment/xblock/static/js/src/oa_base.js
+5
-0
apps/openassessment/xblock/test/test_openassessment.py
+6
-7
apps/submissions/api.py
+7
-2
apps/submissions/tests/test_api.py
+7
-2
requirements/base.txt
+1
-0
No files found.
apps/openassessment/xblock/openassessmentblock.py
View file @
ef220715
...
@@ -3,6 +3,8 @@
...
@@ -3,6 +3,8 @@
import
datetime
import
datetime
import
pkg_resources
import
pkg_resources
import
dateutil.parser
from
django.template.context
import
Context
from
django.template.context
import
Context
from
django.template.loader
import
get_template
from
django.template.loader
import
get_template
from
webob
import
Response
from
webob
import
Response
...
@@ -155,9 +157,6 @@ DEFAULT_ASSESSMENT_MODULES = [
...
@@ -155,9 +157,6 @@ DEFAULT_ASSESSMENT_MODULES = [
DEFAULT_PEER_ASSESSMENT
,
DEFAULT_PEER_ASSESSMENT
,
]
]
# Used to parse datetime strings from the XML configuration.
TIME_PARSE_FORMAT
=
"
%
Y-
%
m-
%
dT
%
H:
%
M:
%
S"
def
load
(
path
):
def
load
(
path
):
"""Handy helper for getting resources from our kit."""
"""Handy helper for getting resources from our kit."""
...
@@ -384,11 +383,11 @@ class OpenAssessmentBlock(XBlock, SubmissionMixin, PeerAssessmentMixin, SelfAsse
...
@@ -384,11 +383,11 @@ class OpenAssessmentBlock(XBlock, SubmissionMixin, PeerAssessmentMixin, SelfAsse
context_dict
[
"xblock_trace"
]
=
self
.
get_xblock_trace
()
context_dict
[
"xblock_trace"
]
=
self
.
get_xblock_trace
()
if
self
.
start_datetime
:
if
self
.
start_datetime
:
start
=
date
time
.
datetime
.
strptime
(
self
.
start_datetime
,
TIME_PARSE_FORMAT
)
start
=
date
util
.
parser
.
parse
(
self
.
start_datetime
)
context_dict
[
"formatted_start_date"
]
=
start
.
strftime
(
"
%
A,
%
B
%
d,
%
Y"
)
context_dict
[
"formatted_start_date"
]
=
start
.
strftime
(
"
%
A,
%
B
%
d,
%
Y"
)
context_dict
[
"formatted_start_datetime"
]
=
start
.
strftime
(
"
%
A,
%
B
%
d,
%
Y
%
X"
)
context_dict
[
"formatted_start_datetime"
]
=
start
.
strftime
(
"
%
A,
%
B
%
d,
%
Y
%
X"
)
if
self
.
due_datetime
:
if
self
.
due_datetime
:
due
=
date
time
.
datetime
.
strptime
(
self
.
due_datetime
,
TIME_PARSE_FORMAT
)
due
=
date
util
.
parser
.
parse
(
self
.
due_datetime
)
context_dict
[
"formatted_due_date"
]
=
due
.
strftime
(
"
%
A,
%
B
%
d,
%
Y"
)
context_dict
[
"formatted_due_date"
]
=
due
.
strftime
(
"
%
A,
%
B
%
d,
%
Y"
)
context_dict
[
"formatted_due_datetime"
]
=
due
.
strftime
(
"
%
A,
%
B
%
d,
%
Y
%
X"
)
context_dict
[
"formatted_due_datetime"
]
=
due
.
strftime
(
"
%
A,
%
B
%
d,
%
Y
%
X"
)
...
@@ -414,11 +413,11 @@ class OpenAssessmentBlock(XBlock, SubmissionMixin, PeerAssessmentMixin, SelfAsse
...
@@ -414,11 +413,11 @@ class OpenAssessmentBlock(XBlock, SubmissionMixin, PeerAssessmentMixin, SelfAsse
"""
"""
# Is the question closed?
# Is the question closed?
if
self
.
start_datetime
:
if
self
.
start_datetime
:
start
=
date
time
.
datetime
.
strptime
(
self
.
start_datetime
,
TIME_PARSE_FORMAT
)
start
=
date
util
.
parser
.
parse
(
self
.
start_datetime
)
if
start
>
datetime
.
datetime
.
utcnow
():
if
start
>
datetime
.
datetime
.
utcnow
():
return
False
,
"start"
return
False
,
"start"
if
self
.
due_datetime
:
if
self
.
due_datetime
:
due
=
date
time
.
datetime
.
strptime
(
self
.
due_datetime
,
TIME_PARSE_FORMAT
)
due
=
date
util
.
parser
.
parse
(
self
.
due_datetime
)
if
due
<
datetime
.
datetime
.
utcnow
():
if
due
<
datetime
.
datetime
.
utcnow
():
return
False
,
"due"
return
False
,
"due"
return
True
,
None
return
True
,
None
apps/openassessment/xblock/static/js/src/oa_base.js
View file @
ef220715
...
@@ -21,6 +21,7 @@ function OpenAssessmentBlock(runtime, element) {
...
@@ -21,6 +21,7 @@ function OpenAssessmentBlock(runtime, element) {
$
.
ajax
({
$
.
ajax
({
type
:
"POST"
,
type
:
"POST"
,
url
:
renderPeerUrl
,
url
:
renderPeerUrl
,
dataType
:
"html"
,
success
:
function
(
data
)
{
success
:
function
(
data
)
{
render_peer_assessment
(
data
);
render_peer_assessment
(
data
);
}
}
...
@@ -28,6 +29,7 @@ function OpenAssessmentBlock(runtime, element) {
...
@@ -28,6 +29,7 @@ function OpenAssessmentBlock(runtime, element) {
$
.
ajax
({
$
.
ajax
({
type
:
"POST"
,
type
:
"POST"
,
url
:
renderSubmissionUrl
,
url
:
renderSubmissionUrl
,
dataType
:
"html"
,
success
:
function
(
data
)
{
success
:
function
(
data
)
{
render_submissions
(
data
);
render_submissions
(
data
);
}
}
...
@@ -69,6 +71,7 @@ function OpenAssessmentBlock(runtime, element) {
...
@@ -69,6 +71,7 @@ function OpenAssessmentBlock(runtime, element) {
$
.
ajax
({
$
.
ajax
({
type
:
"POST"
,
type
:
"POST"
,
url
:
renderSelfUrl
,
url
:
renderSelfUrl
,
dataType
:
"html"
,
success
:
function
(
data
)
{
success
:
function
(
data
)
{
$
(
'#openassessment__self-assessment'
,
element
).
replaceWith
(
data
);
$
(
'#openassessment__self-assessment'
,
element
).
replaceWith
(
data
);
}
}
...
@@ -76,6 +79,7 @@ function OpenAssessmentBlock(runtime, element) {
...
@@ -76,6 +79,7 @@ function OpenAssessmentBlock(runtime, element) {
$
.
ajax
({
$
.
ajax
({
type
:
"POST"
,
type
:
"POST"
,
url
:
renderPeerUrl
,
url
:
renderPeerUrl
,
dataType
:
"html"
,
success
:
function
(
data
)
{
success
:
function
(
data
)
{
render_peer_assessment
(
data
)
render_peer_assessment
(
data
)
}
}
...
@@ -90,6 +94,7 @@ function OpenAssessmentBlock(runtime, element) {
...
@@ -90,6 +94,7 @@ function OpenAssessmentBlock(runtime, element) {
$
.
ajax
({
$
.
ajax
({
type
:
"POST"
,
type
:
"POST"
,
url
:
renderSubmissionUrl
,
url
:
renderSubmissionUrl
,
dataType
:
"html"
,
success
:
function
(
data
)
{
success
:
function
(
data
)
{
render_submissions
(
data
);
render_submissions
(
data
);
}
}
...
...
apps/openassessment/xblock/test/test_openassessment.py
View file @
ef220715
...
@@ -8,7 +8,6 @@ from django.test import TestCase
...
@@ -8,7 +8,6 @@ from django.test import TestCase
from
mock
import
patch
from
mock
import
patch
from
workbench.runtime
import
WorkbenchRuntime
from
workbench.runtime
import
WorkbenchRuntime
import
webob
import
webob
from
openassessment.xblock.openassessmentblock
import
TIME_PARSE_FORMAT
from
openassessment.xblock.submission_mixin
import
SubmissionMixin
from
openassessment.xblock.submission_mixin
import
SubmissionMixin
from
submissions
import
api
as
sub_api
from
submissions
import
api
as
sub_api
...
@@ -154,20 +153,20 @@ class TestOpenAssessment(TestCase):
...
@@ -154,20 +153,20 @@ class TestOpenAssessment(TestCase):
past
=
now
-
datetime
.
timedelta
(
minutes
=
10
)
past
=
now
-
datetime
.
timedelta
(
minutes
=
10
)
future
=
now
+
datetime
.
timedelta
(
minutes
=
10
)
future
=
now
+
datetime
.
timedelta
(
minutes
=
10
)
way_future
=
now
+
datetime
.
timedelta
(
minutes
=
20
)
way_future
=
now
+
datetime
.
timedelta
(
minutes
=
20
)
self
.
assessment
.
start_datetime
=
past
.
strftime
(
TIME_PARSE_FORMAT
)
self
.
assessment
.
start_datetime
=
past
.
isoformat
(
)
self
.
assessment
.
due_datetime
=
past
.
strftime
(
TIME_PARSE_FORMAT
)
self
.
assessment
.
due_datetime
=
past
.
isoformat
(
)
problem_open
,
reason
=
self
.
assessment
.
is_open
()
problem_open
,
reason
=
self
.
assessment
.
is_open
()
self
.
assertFalse
(
problem_open
)
self
.
assertFalse
(
problem_open
)
self
.
assertEqual
(
"due"
,
reason
)
self
.
assertEqual
(
"due"
,
reason
)
self
.
assessment
.
start_datetime
=
past
.
strftime
(
TIME_PARSE_FORMAT
)
self
.
assessment
.
start_datetime
=
past
.
isoformat
(
)
self
.
assessment
.
due_datetime
=
future
.
strftime
(
TIME_PARSE_FORMAT
)
self
.
assessment
.
due_datetime
=
future
.
isoformat
(
)
problem_open
,
reason
=
self
.
assessment
.
is_open
()
problem_open
,
reason
=
self
.
assessment
.
is_open
()
self
.
assertTrue
(
problem_open
)
self
.
assertTrue
(
problem_open
)
self
.
assertEqual
(
None
,
reason
)
self
.
assertEqual
(
None
,
reason
)
self
.
assessment
.
start_datetime
=
future
.
strftime
(
TIME_PARSE_FORMAT
)
self
.
assessment
.
start_datetime
=
future
.
isoformat
(
)
self
.
assessment
.
due_datetime
=
way_future
.
strftime
(
TIME_PARSE_FORMAT
)
self
.
assessment
.
due_datetime
=
way_future
.
isoformat
(
)
problem_open
,
reason
=
self
.
assessment
.
is_open
()
problem_open
,
reason
=
self
.
assessment
.
is_open
()
self
.
assertFalse
(
problem_open
)
self
.
assertFalse
(
problem_open
)
self
.
assertEqual
(
"start"
,
reason
)
self
.
assertEqual
(
"start"
,
reason
)
apps/submissions/api.py
View file @
ef220715
...
@@ -252,8 +252,13 @@ def get_score(student_item):
...
@@ -252,8 +252,13 @@ def get_score(student_item):
}]
}]
"""
"""
student_item_model
=
StudentItem
.
objects
.
get
(
**
student_item
)
try
:
scores
=
Score
.
objects
.
filter
(
student_item
=
student_item_model
)
student_item_model
=
StudentItem
.
objects
.
get
(
**
student_item
)
scores
=
Score
.
objects
.
filter
(
student_item
=
student_item_model
)
except
StudentItem
.
DoesNotExist
:
return
None
return
ScoreSerializer
(
scores
,
many
=
True
)
.
data
return
ScoreSerializer
(
scores
,
many
=
True
)
.
data
...
...
apps/submissions/tests/test_api.py
View file @
ef220715
import
datetime
import
datetime
import
copy
from
ddt
import
ddt
,
file_data
from
ddt
import
ddt
,
file_data
from
django.db
import
DatabaseError
from
django.db
import
DatabaseError
...
@@ -134,6 +135,11 @@ class TestApi(TestCase):
...
@@ -134,6 +135,11 @@ class TestApi(TestCase):
scores
=
api
.
get_score
(
STUDENT_ITEM
)
scores
=
api
.
get_score
(
STUDENT_ITEM
)
self
.
_assert_score
(
scores
[
0
],
11
,
12
)
self
.
_assert_score
(
scores
[
0
],
11
,
12
)
def
test_get_score_no_student_id
(
self
):
student_item
=
copy
.
deepcopy
(
STUDENT_ITEM
)
student_item
[
'student_id'
]
=
None
self
.
assertIs
(
api
.
get_score
(
student_item
),
None
)
def
_assert_score
(
def
_assert_score
(
self
,
self
,
score
,
score
,
...
@@ -141,4 +147,4 @@ class TestApi(TestCase):
...
@@ -141,4 +147,4 @@ class TestApi(TestCase):
expected_points_possible
):
expected_points_possible
):
self
.
assertIsNotNone
(
score
)
self
.
assertIsNotNone
(
score
)
self
.
assertEqual
(
score
[
"points_earned"
],
expected_points_earned
)
self
.
assertEqual
(
score
[
"points_earned"
],
expected_points_earned
)
self
.
assertEqual
(
score
[
"points_possible"
],
expected_points_possible
)
self
.
assertEqual
(
score
[
"points_possible"
],
expected_points_possible
)
\ No newline at end of file
requirements/base.txt
View file @
ef220715
...
@@ -7,4 +7,5 @@ django==1.4.8
...
@@ -7,4 +7,5 @@ django==1.4.8
django-extensions==1.2.5
django-extensions==1.2.5
djangorestframework==2.3.5
djangorestframework==2.3.5
Mako==0.9.1
Mako==0.9.1
python-dateutil==2.1
pytz==2012h
pytz==2012h
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