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
41d35632
Commit
41d35632
authored
Feb 07, 2013
by
Vik Paruchuri
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Working on combined rubric stuff
parent
0f81b0f8
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
59 additions
and
11 deletions
+59
-11
common/lib/xmodule/xmodule/combined_open_ended_modulev1.py
+19
-6
common/lib/xmodule/xmodule/combined_open_ended_rubric.py
+32
-4
lms/templates/open_ended_rubric.html
+8
-1
No files found.
common/lib/xmodule/xmodule/combined_open_ended_modulev1.py
View file @
41d35632
...
@@ -191,9 +191,9 @@ class CombinedOpenEndedV1Module():
...
@@ -191,9 +191,9 @@ class CombinedOpenEndedV1Module():
# completion (doesn't matter if you self-assessed correct/incorrect).
# completion (doesn't matter if you self-assessed correct/incorrect).
self
.
_max_score
=
int
(
self
.
metadata
.
get
(
'max_score'
,
MAX_SCORE
))
self
.
_max_score
=
int
(
self
.
metadata
.
get
(
'max_score'
,
MAX_SCORE
))
rubric_renderer
=
CombinedOpenEndedRubric
(
system
,
True
)
self
.
rubric_renderer
=
CombinedOpenEndedRubric
(
system
,
True
)
rubric_string
=
stringify_children
(
definition
[
'rubric'
])
rubric_string
=
stringify_children
(
definition
[
'rubric'
])
rubric_renderer
.
check_if_rubric_is_parseable
(
rubric_string
,
location
,
MAX_SCORE_ALLOWED
,
self
.
_max_score
)
self
.
rubric_renderer
.
check_if_rubric_is_parseable
(
rubric_string
,
location
,
MAX_SCORE_ALLOWED
,
self
.
_max_score
)
#Static data is passed to the child modules to render
#Static data is passed to the child modules to render
self
.
static_data
=
{
self
.
static_data
=
{
...
@@ -444,9 +444,11 @@ class CombinedOpenEndedV1Module():
...
@@ -444,9 +444,11 @@ class CombinedOpenEndedV1Module():
rubric_data
=
task
.
_parse_score_msg
(
task
.
history
[
-
1
]
.
get
(
'post_assessment'
,
""
),
self
.
system
)
rubric_data
=
task
.
_parse_score_msg
(
task
.
history
[
-
1
]
.
get
(
'post_assessment'
,
""
),
self
.
system
)
rubric_scores
=
rubric_data
[
'rubric_scores'
]
rubric_scores
=
rubric_data
[
'rubric_scores'
]
grader_types
=
rubric_data
[
'grader_types'
]
grader_types
=
rubric_data
[
'grader_types'
]
feedback_items
=
rubric_data
[
'feedback_items'
]
elif
task_type
==
"selfassessment"
:
elif
task_type
==
"selfassessment"
:
rubric_scores
=
last_post_assessment
rubric_scores
=
last_post_assessment
grader_types
=
[
'SA'
]
grader_types
=
[
'SA'
]
feedback_items
=
[]
last_post_assessment
=
""
last_post_assessment
=
""
last_correctness
=
task
.
is_last_response_correct
()
last_correctness
=
task
.
is_last_response_correct
()
max_score
=
task
.
max_score
()
max_score
=
task
.
max_score
()
...
@@ -473,6 +475,8 @@ class CombinedOpenEndedV1Module():
...
@@ -473,6 +475,8 @@ class CombinedOpenEndedV1Module():
'min_score_to_attempt'
:
min_score_to_attempt
,
'min_score_to_attempt'
:
min_score_to_attempt
,
'max_score_to_attempt'
:
max_score_to_attempt
,
'max_score_to_attempt'
:
max_score_to_attempt
,
'rubric_scores'
:
rubric_scores
,
'rubric_scores'
:
rubric_scores
,
'grader_types'
:
grader_types
,
'feedback_items'
:
feedback_items
,
}
}
return
last_response_dict
return
last_response_dict
...
@@ -509,7 +513,7 @@ class CombinedOpenEndedV1Module():
...
@@ -509,7 +513,7 @@ class CombinedOpenEndedV1Module():
pass
pass
return
return_html
return
return_html
def
get_r
ubric_score
s
(
self
,
get
):
def
get_r
esult
s
(
self
,
get
):
"""
"""
Gets the results of a given grader via ajax.
Gets the results of a given grader via ajax.
Input: AJAX get dictionary
Input: AJAX get dictionary
...
@@ -517,12 +521,21 @@ class CombinedOpenEndedV1Module():
...
@@ -517,12 +521,21 @@ class CombinedOpenEndedV1Module():
"""
"""
task_number
=
int
(
get
[
'task_number'
])
task_number
=
int
(
get
[
'task_number'
])
self
.
update_task_states
()
self
.
update_task_states
()
response_dict
=
self
.
get_last_response
(
task_number
)
all_responses
=
[]
context
=
{
'results'
:
response_dict
[
'post_assessment'
],
'task_number'
:
task_number
+
1
,
'task_name'
:
response_dict
[
'human_task'
]}
for
i
in
xrange
(
0
,
task_number
+
1
):
all_responses
.
append
(
self
.
get_last_response
(
i
))
rubric_scores
=
[
rd
[
'rubric_scores'
]
for
rd
in
all_responses
]
grader_types
=
[
rd
[
'grader_types'
]
for
rd
in
all_responses
]
feedback_items
=
[
rd
[
'feedback_items'
]
for
rd
in
all_responses
]
rubric_html
=
self
.
rubric_renderer
.
render_combined_rubric
(
self
.
static_data
[
'rubric'
],
rubric_scores
,
grader_types
,
feedback_items
)
context
=
{
'results'
:
rubric_html
,
'task_number'
:
task_number
+
1
,
'task_name'
:
response_dict
[
'human_task'
]}
html
=
self
.
system
.
render_template
(
'combined_open_ended_results.html'
,
context
)
html
=
self
.
system
.
render_template
(
'combined_open_ended_results.html'
,
context
)
return
{
'html'
:
html
,
'success'
:
True
}
return
{
'html'
:
html
,
'success'
:
True
}
def
get_results
(
self
,
get
):
def
get_results
_old
(
self
,
get
):
"""
"""
Gets the results of a given grader via ajax.
Gets the results of a given grader via ajax.
Input: AJAX get dictionary
Input: AJAX get dictionary
...
...
common/lib/xmodule/xmodule/combined_open_ended_rubric.py
View file @
41d35632
...
@@ -36,7 +36,9 @@ class CombinedOpenEndedRubric(object):
...
@@ -36,7 +36,9 @@ class CombinedOpenEndedRubric(object):
{
'categories'
:
rubric_categories
,
{
'categories'
:
rubric_categories
,
'has_score'
:
self
.
has_score
,
'has_score'
:
self
.
has_score
,
'view_only'
:
self
.
view_only
,
'view_only'
:
self
.
view_only
,
'max_score'
:
max_score
})
'max_score'
:
max_score
,
'combined_rubric'
:
False
})
success
=
True
success
=
True
except
:
except
:
error_message
=
"[render_rubric] Could not parse the rubric with xml: {0}"
.
format
(
rubric_xml
)
error_message
=
"[render_rubric] Could not parse the rubric with xml: {0}"
.
format
(
rubric_xml
)
...
@@ -154,6 +156,29 @@ class CombinedOpenEndedRubric(object):
...
@@ -154,6 +156,29 @@ class CombinedOpenEndedRubric(object):
return
{
'description'
:
description
,
'options'
:
options
,
'score'
:
score
}
return
{
'description'
:
description
,
'options'
:
options
,
'score'
:
score
}
def
render_combined_rubric
(
self
,
rubric_xml
,
scores
,
score_types
,
feedback_types
):
score_tuples
=
CombinedOpenEndedRubric
.
reformat_scores_for_rendering
(
scores
,
score_types
,
feedback_types
)
rubric_categories
=
self
.
extract_categories
(
rubric_xml
)
max_scores
=
map
((
lambda
cat
:
cat
[
'options'
][
-
1
][
'points'
]),
rubric_categories
)
max_score
=
max
(
max_scores
)
for
i
in
xrange
(
0
,
len
(
rubric_categories
)):
category
=
rubric_categories
[
i
]
rubric_categories
[
i
][
'grader_types'
]
=
[]
for
j
in
xrange
(
0
,
len
(
category
[
'options'
])):
for
tuple
in
score_tuples
:
if
tuple
[
1
]
==
i
and
tuple
[
2
]
==
j
:
for
grader_type
in
tuple
[
3
]:
rubric_categories
[
i
][
'grader_types'
]
.
append
(
grader_type
)
html
=
self
.
system
.
render_template
(
'open_ended_rubric.html'
,
{
'categories'
:
rubric_categories
,
'has_score'
:
True
,
'view_only'
:
True
,
'max_score'
:
max_score
,
'combined_rubric'
:
True
})
return
html
@staticmethod
@staticmethod
def
validate_options
(
options
):
def
validate_options
(
options
):
...
@@ -175,10 +200,10 @@ class CombinedOpenEndedRubric(object):
...
@@ -175,10 +200,10 @@ class CombinedOpenEndedRubric(object):
def
reformat_scores_for_rendering
(
scores
,
score_types
,
feedback_types
):
def
reformat_scores_for_rendering
(
scores
,
score_types
,
feedback_types
):
success
=
False
success
=
False
if
len
(
scores
)
==
0
:
if
len
(
scores
)
==
0
:
return
success
return
success
,
""
if
len
(
scores
)
!=
len
(
score_types
)
or
len
(
feedback_types
)
!=
len
(
scores
):
if
len
(
scores
)
!=
len
(
score_types
)
or
len
(
feedback_types
)
!=
len
(
scores
):
return
success
return
success
,
""
score_lists
=
[]
score_lists
=
[]
score_type_list
=
[]
score_type_list
=
[]
...
@@ -197,7 +222,7 @@ class CombinedOpenEndedRubric(object):
...
@@ -197,7 +222,7 @@ class CombinedOpenEndedRubric(object):
score_type
=
score_type_list
[
i
]
score_type
=
score_type_list
[
i
]
feedback_type
=
feedback_type_list
[
i
]
feedback_type
=
feedback_type_list
[
i
]
if
len
(
score_list
)
!=
score_list_len
or
len
(
score_type
)
!=
score_list_len
or
len
(
feedback_type
)
!=
score_list_len
:
if
len
(
score_list
)
!=
score_list_len
or
len
(
score_type
)
!=
score_list_len
or
len
(
feedback_type
)
!=
score_list_len
:
return
success
return
success
,
""
score_tuples
=
[]
score_tuples
=
[]
for
i
in
xrange
(
0
,
len
(
score_lists
)):
for
i
in
xrange
(
0
,
len
(
score_lists
)):
...
@@ -208,6 +233,9 @@ class CombinedOpenEndedRubric(object):
...
@@ -208,6 +233,9 @@ class CombinedOpenEndedRubric(object):
score_tuples
[
tup_ind
][
3
]
.
append
(
score_type_list
[
i
][
j
])
score_tuples
[
tup_ind
][
3
]
.
append
(
score_type_list
[
i
][
j
])
score_tuples
[
tup_ind
][
4
]
.
append
(
feedback_type_list
[
i
][
j
])
score_tuples
[
tup_ind
][
4
]
.
append
(
feedback_type_list
[
i
][
j
])
success
=
True
return
success
,
score_tuples
@staticmethod
@staticmethod
def
check_for_tuple_matches
(
tuples
,
tuple
):
def
check_for_tuple_matches
(
tuples
,
tuple
):
category
=
tuple
[
1
]
category
=
tuple
[
1
]
...
...
lms/templates/open_ended_rubric.html
View file @
41d35632
...
@@ -20,11 +20,18 @@
...
@@ -20,11 +20,18 @@
<li
class=
"rubric-list-item"
>
<li
class=
"rubric-list-item"
>
% endif
% endif
% if view_only:
% if view_only:
% if option['selected']:
% if option['selected']
and combined_rubric==False
:
## if this is the selected rubric block, show it highlighted
## if this is the selected rubric block, show it highlighted
<div
class=
"rubric-label"
>
<div
class=
"rubric-label"
>
${option['points']} points : ${option['text']}
${option['points']} points : ${option['text']}
</div>
</div>
% elif combined_rubric == True
<div
class=
"rubric-label"
>
%for grader_type in option['grader_types']
${grader_type}
%endfor
${option['points']} points : ${option['text']}
</div>
% endif
% endif
% else:
% else:
<label
class=
"rubric-label"
for=
"score-${i}-${j}"
>
<label
class=
"rubric-label"
for=
"score-${i}-${j}"
>
...
...
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