@@ -38,10 +38,10 @@
${problem['student_response']}
|
-
+ Unflag
|
-
+ Ban
|
${problem['submission_id']}
diff --git a/lms/urls.py b/lms/urls.py
index f122635821..41e8e9fff1 100644
--- a/lms/urls.py
+++ b/lms/urls.py
@@ -287,6 +287,8 @@ if settings.COURSEWARE_ENABLED:
'open_ended_grading.views.student_problem_list', name='open_ended_problems'),
# Open Ended flagged problem list
+ url(r'^courses/(?P[^/]+/[^/]+/[^/]+)/open_ended_flagged_problems$',
+ 'open_ended_grading.views.flagged_problem_list', name='open_ended_flagged_problems'),
url(r'^courses/(?P[^/]+/[^/]+/[^/]+)/open_ended_flagged_problems$',
'open_ended_grading.views.flagged_problem_list', name='open_ended_flagged_problems'),
From 4c164795691c126ef3d08d5be0e7cba04cfabd0d Mon Sep 17 00:00:00 2001
From: Vik Paruchuri
Date: Wed, 30 Jan 2013 21:22:59 -0500
Subject: [PATCH 09/24] Working on frontend JS for posting
---
lms/djangoapps/open_ended_grading/views.py | 2 +-
.../coffee/src/open_ended/open_ended.coffee | 33 +++++++++++++++++++
.../open_ended_flagged_problems.html | 8 +++--
3 files changed, 40 insertions(+), 3 deletions(-)
create mode 100644 lms/static/coffee/src/open_ended/open_ended.coffee
diff --git a/lms/djangoapps/open_ended_grading/views.py b/lms/djangoapps/open_ended_grading/views.py
index aaee9f4c98..137cff7803 100644
--- a/lms/djangoapps/open_ended_grading/views.py
+++ b/lms/djangoapps/open_ended_grading/views.py
@@ -309,7 +309,7 @@ def take_action_on_flags(request, course_id):
try:
controller_qs = ControllerQueryService()
- response = controller_qs.take_action_on_flags(course_id, student_id, course_id, action_type)
+ response = controller_qs.take_action_on_flags(course_id, student_id, submission_id, action_type)
return HttpResponse(response, mimetype="application/json")
except GradingServiceError:
log.exception("Error saving calibration grade, location: {0}, submission_id: {1}, submission_key: {2}, grader_id: {3}".format(location, submission_id, submission_key, grader_id))
diff --git a/lms/static/coffee/src/open_ended/open_ended.coffee b/lms/static/coffee/src/open_ended/open_ended.coffee
new file mode 100644
index 0000000000..f45efeb8a7
--- /dev/null
+++ b/lms/static/coffee/src/open_ended/open_ended.coffee
@@ -0,0 +1,33 @@
+# This is a simple class that just hides the error container
+# and message container when they are empty
+# Can (and should be) expanded upon when our problem list
+# becomes more sophisticated
+class OpenEnded
+ constructor: (ajax_url) ->
+ @ajax_url = ajax_url
+ @error_container = $('.error-container')
+ @error_container.toggle(not @error_container.is(':empty'))
+
+ @message_container = $('.message-container')
+ @message_container.toggle(not @message_container.is(':empty'))
+
+ @problem_list = $('.problem-list')
+
+ @ban_button = $('.ban-button')
+ @unflag_button = $('.unflag-button')
+ @ban_button.click @ban
+ @unflag_button.click @unflag
+
+ unflag: (event) =>
+ event.preventDefault()
+
+ ban: (event) =>
+ event.preventDefault()
+
+ post: (cmd, data, callback) ->
+ # if this post request fails, the error callback will catch it
+ $.post(@ajax_url + cmd, data, callback)
+ .error => callback({success: false, error: "Error occured while performing this operation"})
+
+ajax_url = $('.open-ended-problems').data('ajax_url')
+$(document).ready(() -> new OpenEnded(ajax_url))
diff --git a/lms/templates/open_ended_problems/open_ended_flagged_problems.html b/lms/templates/open_ended_problems/open_ended_flagged_problems.html
index 2397e1a70e..9265ad4663 100644
--- a/lms/templates/open_ended_problems/open_ended_flagged_problems.html
+++ b/lms/templates/open_ended_problems/open_ended_flagged_problems.html
@@ -10,6 +10,10 @@
<%include file="/courseware/course_navigation.html" args="active_page='open_ended_flagged_problems'" />
+<%block name="js_extra">
+ <%static:js group='open_ended'/>
+%block>
+
${error_text}
@@ -38,10 +42,10 @@
${problem['student_response']}
|
- Unflag
+ Unflag
|
- Ban
+ Ban
|
${problem['submission_id']}
From 10c7155d4d061d51eee8572a4a5b6fd5f1da03eb Mon Sep 17 00:00:00 2001
From: Vik Paruchuri
Date: Wed, 30 Jan 2013 21:28:42 -0500
Subject: [PATCH 10/24] Add open ended to JS pipeline
---
lms/envs/common.py | 7 ++++++-
lms/static/coffee/src/open_ended/open_ended.coffee | 9 +++++++++
lms/urls.py | 4 ++--
3 files changed, 17 insertions(+), 3 deletions(-)
diff --git a/lms/envs/common.py b/lms/envs/common.py
index 16472795e0..426c29c7d0 100644
--- a/lms/envs/common.py
+++ b/lms/envs/common.py
@@ -438,6 +438,7 @@ main_vendor_js = [
discussion_js = sorted(rooted_glob(PROJECT_ROOT / 'static', 'coffee/src/discussion/**/*.coffee'))
staff_grading_js = sorted(rooted_glob(PROJECT_ROOT / 'static', 'coffee/src/staff_grading/**/*.coffee'))
peer_grading_js = sorted(rooted_glob(PROJECT_ROOT / 'static','coffee/src/peer_grading/**/*.coffee'))
+open_ended_js = sorted(rooted_glob(PROJECT_ROOT / 'static','coffee/src/open_ended/**/*.coffee'))
PIPELINE_CSS = {
'application': {
@@ -468,7 +469,7 @@ PIPELINE_JS = {
'source_filenames': sorted(
set(rooted_glob(COMMON_ROOT / 'static', 'coffee/src/**/*.coffee') +
rooted_glob(PROJECT_ROOT / 'static', 'coffee/src/**/*.coffee')) -
- set(courseware_js + discussion_js + staff_grading_js + peer_grading_js)
+ set(courseware_js + discussion_js + staff_grading_js + peer_grading_js + open_ended_js)
) + [
'js/form.ext.js',
'js/my_courses_dropdown.js',
@@ -501,6 +502,10 @@ PIPELINE_JS = {
'peer_grading' : {
'source_filenames': peer_grading_js,
'output_filename': 'js/peer_grading.js'
+ },
+ 'open_ended' : {
+ 'source_filenames': open_ended_js,
+ 'output_filename': 'js/open_ended.js'
}
}
diff --git a/lms/static/coffee/src/open_ended/open_ended.coffee b/lms/static/coffee/src/open_ended/open_ended.coffee
index f45efeb8a7..5c0f455ce7 100644
--- a/lms/static/coffee/src/open_ended/open_ended.coffee
+++ b/lms/static/coffee/src/open_ended/open_ended.coffee
@@ -20,14 +20,23 @@ class OpenEnded
unflag: (event) =>
event.preventDefault()
+ @gentle_alert "Unflag"
ban: (event) =>
event.preventDefault()
+ @gentle_alert "Ban"
post: (cmd, data, callback) ->
# if this post request fails, the error callback will catch it
$.post(@ajax_url + cmd, data, callback)
.error => callback({success: false, error: "Error occured while performing this operation"})
+ gentle_alert: (msg) =>
+ if $('.message-container').length
+ $('.message-container').remove()
+ alert_elem = " " + msg + " "
+ $('.error-container').after(alert_elem)
+ $('.message-container').css(opacity: 0).animate(opacity: 1, 700)
+
ajax_url = $('.open-ended-problems').data('ajax_url')
$(document).ready(() -> new OpenEnded(ajax_url))
diff --git a/lms/urls.py b/lms/urls.py
index 41e8e9fff1..260f55dd05 100644
--- a/lms/urls.py
+++ b/lms/urls.py
@@ -289,8 +289,8 @@ if settings.COURSEWARE_ENABLED:
# Open Ended flagged problem list
url(r'^courses/(?P[^/]+/[^/]+/[^/]+)/open_ended_flagged_problems$',
'open_ended_grading.views.flagged_problem_list', name='open_ended_flagged_problems'),
- url(r'^courses/(?P[^/]+/[^/]+/[^/]+)/open_ended_flagged_problems$',
- 'open_ended_grading.views.flagged_problem_list', name='open_ended_flagged_problems'),
+ url(r'^courses/(?P[^/]+/[^/]+/[^/]+)/open_ended_flagged_problems/take_action_on_flag$',
+ 'open_ended_grading.views.take_action_on_flags', name='open_ended_flagged_problems_take_action'),
# Cohorts management
url(r'^courses/(?P[^/]+/[^/]+/[^/]+)/cohorts$',
From 8e9ec501a777a374491db1c48b5cd5a8c461df24 Mon Sep 17 00:00:00 2001
From: Vik Paruchuri
Date: Wed, 30 Jan 2013 21:44:21 -0500
Subject: [PATCH 11/24] Implement flagging, fix urls
---
lms/djangoapps/open_ended_grading/views.py | 3 +--
lms/static/coffee/src/open_ended/open_ended.coffee | 11 ++++++++++-
lms/urls.py | 2 +-
3 files changed, 12 insertions(+), 4 deletions(-)
diff --git a/lms/djangoapps/open_ended_grading/views.py b/lms/djangoapps/open_ended_grading/views.py
index 137cff7803..a0ef8239f3 100644
--- a/lms/djangoapps/open_ended_grading/views.py
+++ b/lms/djangoapps/open_ended_grading/views.py
@@ -226,7 +226,7 @@ def flagged_problem_list(request, course_id):
error_text = "Could not get problem list"
success = False
- ajax_url = _reverse_with_slash('open_ended_problems', course_id)
+ ajax_url = _reverse_with_slash('open_ended_flagged_problems', course_id)
return render_to_response('open_ended_problems/open_ended_flagged_problems.html', {
'course': course,
@@ -308,7 +308,6 @@ def take_action_on_flags(request, course_id):
student_id = p['student_id']
try:
- controller_qs = ControllerQueryService()
response = controller_qs.take_action_on_flags(course_id, student_id, submission_id, action_type)
return HttpResponse(response, mimetype="application/json")
except GradingServiceError:
diff --git a/lms/static/coffee/src/open_ended/open_ended.coffee b/lms/static/coffee/src/open_ended/open_ended.coffee
index 5c0f455ce7..07b84c8af5 100644
--- a/lms/static/coffee/src/open_ended/open_ended.coffee
+++ b/lms/static/coffee/src/open_ended/open_ended.coffee
@@ -24,13 +24,22 @@ class OpenEnded
ban: (event) =>
event.preventDefault()
- @gentle_alert "Ban"
+ parent_tr = $(event.target).parent().parent()
+ tr_children = parent_tr.children()
+ action_type = "ban"
+ submission_id = tr_children[4].innerText
+ student_id = tr_children[5].innerText
+ @gentle_alert student_id
+ @post('take_action_on_flags', {'submission_id' : submission_id, 'student_id' : student_id, 'action_type' : action_type}, @handle_after_action)
post: (cmd, data, callback) ->
# if this post request fails, the error callback will catch it
$.post(@ajax_url + cmd, data, callback)
.error => callback({success: false, error: "Error occured while performing this operation"})
+ handle_after_action: (data) ->
+ @gentle_alert data
+
gentle_alert: (msg) =>
if $('.message-container').length
$('.message-container').remove()
diff --git a/lms/urls.py b/lms/urls.py
index 260f55dd05..e4494e0166 100644
--- a/lms/urls.py
+++ b/lms/urls.py
@@ -289,7 +289,7 @@ if settings.COURSEWARE_ENABLED:
# Open Ended flagged problem list
url(r'^courses/(?P[^/]+/[^/]+/[^/]+)/open_ended_flagged_problems$',
'open_ended_grading.views.flagged_problem_list', name='open_ended_flagged_problems'),
- url(r'^courses/(?P[^/]+/[^/]+/[^/]+)/open_ended_flagged_problems/take_action_on_flag$',
+ url(r'^courses/(?P[^/]+/[^/]+/[^/]+)/open_ended_flagged_problems/take_action_on_flags$',
'open_ended_grading.views.take_action_on_flags', name='open_ended_flagged_problems_take_action'),
# Cohorts management
From b4c80da22498f36aa6da563e96f0fef5e34dbd2d Mon Sep 17 00:00:00 2001
From: Vik Paruchuri
Date: Wed, 30 Jan 2013 21:50:24 -0500
Subject: [PATCH 12/24] Trim whitespace
---
lms/djangoapps/open_ended_grading/views.py | 6 +++++-
lms/static/coffee/src/open_ended/open_ended.coffee | 1 -
2 files changed, 5 insertions(+), 2 deletions(-)
diff --git a/lms/djangoapps/open_ended_grading/views.py b/lms/djangoapps/open_ended_grading/views.py
index a0ef8239f3..984c544d93 100644
--- a/lms/djangoapps/open_ended_grading/views.py
+++ b/lms/djangoapps/open_ended_grading/views.py
@@ -25,6 +25,8 @@ import open_ended_notifications
from xmodule.modulestore.django import modulestore
from xmodule.modulestore import search
+from django.http import HttpResponse, Http404
+
log = logging.getLogger(__name__)
template_imports = {'urllib': urllib}
@@ -306,7 +308,9 @@ def take_action_on_flags(request, course_id):
submission_id = p['submission_id']
action_type = p['action_type']
student_id = p['student_id']
-
+ student_id = student_id.strip(' \t\n\r')
+ submission_id = submission_id.strip(' \t\n\r')
+ action_type = action_type.lower().strip(' \t\n\r')
try:
response = controller_qs.take_action_on_flags(course_id, student_id, submission_id, action_type)
return HttpResponse(response, mimetype="application/json")
diff --git a/lms/static/coffee/src/open_ended/open_ended.coffee b/lms/static/coffee/src/open_ended/open_ended.coffee
index 07b84c8af5..e54198e2aa 100644
--- a/lms/static/coffee/src/open_ended/open_ended.coffee
+++ b/lms/static/coffee/src/open_ended/open_ended.coffee
@@ -29,7 +29,6 @@ class OpenEnded
action_type = "ban"
submission_id = tr_children[4].innerText
student_id = tr_children[5].innerText
- @gentle_alert student_id
@post('take_action_on_flags', {'submission_id' : submission_id, 'student_id' : student_id, 'action_type' : action_type}, @handle_after_action)
post: (cmd, data, callback) ->
From 2affd4760bef18906c858451dcaa8b80af688485 Mon Sep 17 00:00:00 2001
From: Vik Paruchuri
Date: Wed, 30 Jan 2013 21:53:33 -0500
Subject: [PATCH 13/24] Add in wiring for unflag action
---
lms/static/coffee/src/open_ended/open_ended.coffee | 7 ++++++-
1 file changed, 6 insertions(+), 1 deletion(-)
diff --git a/lms/static/coffee/src/open_ended/open_ended.coffee b/lms/static/coffee/src/open_ended/open_ended.coffee
index e54198e2aa..227cf2fd76 100644
--- a/lms/static/coffee/src/open_ended/open_ended.coffee
+++ b/lms/static/coffee/src/open_ended/open_ended.coffee
@@ -20,7 +20,12 @@ class OpenEnded
unflag: (event) =>
event.preventDefault()
- @gentle_alert "Unflag"
+ parent_tr = $(event.target).parent().parent()
+ tr_children = parent_tr.children()
+ action_type = "unflag"
+ submission_id = tr_children[4].innerText
+ student_id = tr_children[5].innerText
+ @post('take_action_on_flags', {'submission_id' : submission_id, 'student_id' : student_id, 'action_type' : action_type}, @handle_after_action)
ban: (event) =>
event.preventDefault()
From b0e46085586524caf67b7c76b8907ee23403388d Mon Sep 17 00:00:00 2001
From: Vik Paruchuri
Date: Wed, 30 Jan 2013 21:56:52 -0500
Subject: [PATCH 14/24] Fix callback alert
---
lms/static/coffee/src/open_ended/open_ended.coffee | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/lms/static/coffee/src/open_ended/open_ended.coffee b/lms/static/coffee/src/open_ended/open_ended.coffee
index 227cf2fd76..45de3a4fcc 100644
--- a/lms/static/coffee/src/open_ended/open_ended.coffee
+++ b/lms/static/coffee/src/open_ended/open_ended.coffee
@@ -42,7 +42,7 @@ class OpenEnded
.error => callback({success: false, error: "Error occured while performing this operation"})
handle_after_action: (data) ->
- @gentle_alert data
+ @gentle_alert data.data
gentle_alert: (msg) =>
if $('.message-container').length
From 78f9f63466e6ffce90df07385c80378168af74c7 Mon Sep 17 00:00:00 2001
From: Vik Paruchuri
Date: Thu, 31 Jan 2013 11:19:15 -0500
Subject: [PATCH 15/24] Add in notification type for flagged submissions
---
.../open_ended_grading/open_ended_notifications.py | 3 ++-
lms/djangoapps/open_ended_grading/views.py | 6 ++++--
2 files changed, 6 insertions(+), 3 deletions(-)
diff --git a/lms/djangoapps/open_ended_grading/open_ended_notifications.py b/lms/djangoapps/open_ended_grading/open_ended_notifications.py
index 43259f3e1b..fec893894f 100644
--- a/lms/djangoapps/open_ended_grading/open_ended_notifications.py
+++ b/lms/djangoapps/open_ended_grading/open_ended_notifications.py
@@ -19,7 +19,8 @@ KEY_PREFIX = "open_ended_"
NOTIFICATION_TYPES = (
('student_needs_to_peer_grade', 'peer_grading', 'Peer Grading'),
('staff_needs_to_grade', 'staff_grading', 'Staff Grading'),
- ('new_student_grading_to_view', 'open_ended_problems', 'Problems you have submitted')
+ ('new_student_grading_to_view', 'open_ended_problems', 'Problems you have submitted'),
+ ('flagged_submissions_exist', 'open_ended_flagged_problems', 'Flagged Submissions')
)
def staff_grading_notifications(course, user):
diff --git a/lms/djangoapps/open_ended_grading/views.py b/lms/djangoapps/open_ended_grading/views.py
index 984c544d93..1777f26e2e 100644
--- a/lms/djangoapps/open_ended_grading/views.py
+++ b/lms/djangoapps/open_ended_grading/views.py
@@ -56,12 +56,14 @@ def _reverse_without_slash(url_name, course_id):
DESCRIPTION_DICT = {
'Peer Grading': "View all problems that require peer assessment in this particular course.",
'Staff Grading': "View ungraded submissions submitted by students for the open ended problems in the course.",
- 'Problems you have submitted': "View open ended problems that you have previously submitted for grading."
+ 'Problems you have submitted': "View open ended problems that you have previously submitted for grading.",
+ 'Flagged Submissions' : "View submissions that have been flagged by students as inappropriate."
}
ALERT_DICT = {
'Peer Grading': "New submissions to grade",
'Staff Grading': "New submissions to grade",
- 'Problems you have submitted': "New grades have been returned"
+ 'Problems you have submitted': "New grades have been returned",
+ 'Flagged Submissions' : "Submissions have been flagged for review"
}
@cache_control(no_cache=True, no_store=True, must_revalidate=True)
def staff_grading(request, course_id):
From 63d4ac8c442615c45435b2186dfbaa590891037f Mon Sep 17 00:00:00 2001
From: Vik Paruchuri
Date: Thu, 31 Jan 2013 12:17:21 -0500
Subject: [PATCH 16/24] Working on some flagging coffeescript
---
.../coffee/src/open_ended/open_ended.coffee | 22 +++++++++++++------
.../open_ended_flagged_problems.html | 3 +++
2 files changed, 18 insertions(+), 7 deletions(-)
diff --git a/lms/static/coffee/src/open_ended/open_ended.coffee b/lms/static/coffee/src/open_ended/open_ended.coffee
index 45de3a4fcc..558d712c46 100644
--- a/lms/static/coffee/src/open_ended/open_ended.coffee
+++ b/lms/static/coffee/src/open_ended/open_ended.coffee
@@ -23,26 +23,34 @@ class OpenEnded
parent_tr = $(event.target).parent().parent()
tr_children = parent_tr.children()
action_type = "unflag"
- submission_id = tr_children[4].innerText
- student_id = tr_children[5].innerText
- @post('take_action_on_flags', {'submission_id' : submission_id, 'student_id' : student_id, 'action_type' : action_type}, @handle_after_action)
+ submission_id = tr_children[5].innerText
+ student_id = tr_children[6].innerText
+ callback_func = @after_action_wrapper($(event.target), action_type)
+ @post('take_action_on_flags', {'submission_id' : submission_id, 'student_id' : student_id, 'action_type' : action_type}, callback_func)
ban: (event) =>
event.preventDefault()
parent_tr = $(event.target).parent().parent()
tr_children = parent_tr.children()
action_type = "ban"
- submission_id = tr_children[4].innerText
- student_id = tr_children[5].innerText
- @post('take_action_on_flags', {'submission_id' : submission_id, 'student_id' : student_id, 'action_type' : action_type}, @handle_after_action)
+ submission_id = tr_children[5].innerText
+ student_id = tr_children[6].innerText
+ callback_func = @after_action_wrapper($(event.target), action_type)
+ @post('take_action_on_flags', {'submission_id' : submission_id, 'student_id' : student_id, 'action_type' : action_type}, callback_func)
post: (cmd, data, callback) ->
# if this post request fails, the error callback will catch it
$.post(@ajax_url + cmd, data, callback)
.error => callback({success: false, error: "Error occured while performing this operation"})
+ after_action_wrapper: (target, action_type) ->
+ return @handle_after_action
+
handle_after_action: (data) ->
- @gentle_alert data.data
+ tr_parent = target.parent().parent()
+ tr_children = tr_parent.children()
+ action_taken = tr_children[4].children()[0]
+ action_taken.replaceWith('#{action_type} done for student. ')
gentle_alert: (msg) =>
if $('.message-container').length
diff --git a/lms/templates/open_ended_problems/open_ended_flagged_problems.html b/lms/templates/open_ended_problems/open_ended_flagged_problems.html
index 9265ad4663..ec892da43c 100644
--- a/lms/templates/open_ended_problems/open_ended_flagged_problems.html
+++ b/lms/templates/open_ended_problems/open_ended_flagged_problems.html
@@ -47,6 +47,9 @@
Ban
|
+
+
+ |
${problem['submission_id']}
|
From f3f509da3b7a63b9d5a14939c02f9a9780104337 Mon Sep 17 00:00:00 2001
From: Vik Paruchuri
Date: Thu, 31 Jan 2013 12:45:48 -0500
Subject: [PATCH 17/24] Fix input area styling
---
.../xmodule/xmodule/css/combinedopenended/display.scss | 5 +++--
.../xmodule/js/src/combinedopenended/display.coffee | 2 +-
lms/static/coffee/src/open_ended/open_ended.coffee | 9 +++++----
3 files changed, 9 insertions(+), 7 deletions(-)
diff --git a/common/lib/xmodule/xmodule/css/combinedopenended/display.scss b/common/lib/xmodule/xmodule/css/combinedopenended/display.scss
index 41896e6173..38fd6ba01c 100644
--- a/common/lib/xmodule/xmodule/css/combinedopenended/display.scss
+++ b/common/lib/xmodule/xmodule/css/combinedopenended/display.scss
@@ -442,12 +442,13 @@ section.open-ended-child {
margin: 10px;
}
- span.short-form-response {
- padding: 9px;
+ div.short-form-response {
background: #F6F6F6;
border: 1px solid #ddd;
border-top: 0;
margin-bottom: 20px;
+ overflow-y: auto;
+ height: 200px;
@include clearfix;
}
diff --git a/common/lib/xmodule/xmodule/js/src/combinedopenended/display.coffee b/common/lib/xmodule/xmodule/js/src/combinedopenended/display.coffee
index 2aabd35771..89954deb23 100644
--- a/common/lib/xmodule/xmodule/js/src/combinedopenended/display.coffee
+++ b/common/lib/xmodule/xmodule/js/src/combinedopenended/display.coffee
@@ -351,5 +351,5 @@ class @CombinedOpenEnded
answer_id = @answer_area.attr('id')
answer_val = @answer_area.val()
new_text = ''
- new_text = "#{answer_val}"
+ new_text = "#{answer_val} "
@answer_area.replaceWith(new_text)
diff --git a/lms/static/coffee/src/open_ended/open_ended.coffee b/lms/static/coffee/src/open_ended/open_ended.coffee
index 558d712c46..aff1e5fc67 100644
--- a/lms/static/coffee/src/open_ended/open_ended.coffee
+++ b/lms/static/coffee/src/open_ended/open_ended.coffee
@@ -44,13 +44,14 @@ class OpenEnded
.error => callback({success: false, error: "Error occured while performing this operation"})
after_action_wrapper: (target, action_type) ->
+ tr_parent = target.parent().parent()
+ tr_children = tr_parent.children()
+ action_taken = tr_children[4].firstElementChild
+ action_taken.innerText = "#{action_type} done for student."
return @handle_after_action
handle_after_action: (data) ->
- tr_parent = target.parent().parent()
- tr_children = tr_parent.children()
- action_taken = tr_children[4].children()[0]
- action_taken.replaceWith('#{action_type} done for student. ')
+ blah = "blah"
gentle_alert: (msg) =>
if $('.message-container').length
From c991c0489c14124343b8ffc4e9e39893bdb457b5 Mon Sep 17 00:00:00 2001
From: Vik Paruchuri
Date: Mon, 4 Feb 2013 10:26:25 -0500
Subject: [PATCH 18/24] Fix open ended test with flagging
---
lms/djangoapps/open_ended_grading/tests.py | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/lms/djangoapps/open_ended_grading/tests.py b/lms/djangoapps/open_ended_grading/tests.py
index 57ea4f319c..131fe5ad9f 100644
--- a/lms/djangoapps/open_ended_grading/tests.py
+++ b/lms/djangoapps/open_ended_grading/tests.py
@@ -172,7 +172,8 @@ class TestPeerGradingService(ct.PageLoader):
'submission_key': 'fake key',
'score': '2',
'feedback': 'This is feedback',
- 'rubric_scores[]': [1, 2]}
+ 'rubric_scores[]': [1, 2],
+ 'submission_flagged' : False}
r = self.check_for_post_code(200, url, data)
d = json.loads(r.content)
self.assertTrue(d['success'])
From 8bd7b60aca4fa4ec7cde1f87fd117a8fa9b8a991 Mon Sep 17 00:00:00 2001
From: Vik Paruchuri
Date: Mon, 4 Feb 2013 10:50:07 -0500
Subject: [PATCH 19/24] Add in key to mock peer grading service
---
lms/djangoapps/open_ended_grading/peer_grading_service.py | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/lms/djangoapps/open_ended_grading/peer_grading_service.py b/lms/djangoapps/open_ended_grading/peer_grading_service.py
index 8a649d9017..23e1488d9b 100644
--- a/lms/djangoapps/open_ended_grading/peer_grading_service.py
+++ b/lms/djangoapps/open_ended_grading/peer_grading_service.py
@@ -50,7 +50,7 @@ class MockPeerGradingService(object):
'max_score': 4})
def save_grade(self, location, grader_id, submission_id,
- score, feedback, submission_key, rubric_scores):
+ score, feedback, submission_key, rubric_scores, submission_flagged):
return json.dumps({'success': True})
def is_student_calibrated(self, problem_location, grader_id):
From 7f96fbb3d1becf40b295c9c3465d4ef48b5af60e Mon Sep 17 00:00:00 2001
From: Vik Paruchuri
Date: Mon, 4 Feb 2013 17:15:07 -0500
Subject: [PATCH 20/24] Address review comments
---
lms/djangoapps/open_ended_grading/views.py | 7 ++++++-
lms/static/coffee/src/open_ended/open_ended.coffee | 8 ++++----
.../open_ended_problems/open_ended_flagged_problems.html | 8 +-------
3 files changed, 11 insertions(+), 12 deletions(-)
diff --git a/lms/djangoapps/open_ended_grading/views.py b/lms/djangoapps/open_ended_grading/views.py
index 1777f26e2e..156bdadddd 100644
--- a/lms/djangoapps/open_ended_grading/views.py
+++ b/lms/djangoapps/open_ended_grading/views.py
@@ -244,6 +244,9 @@ def flagged_problem_list(request, course_id):
@cache_control(no_cache=True, no_store=True, must_revalidate=True)
def combined_notifications(request, course_id):
+ """
+ Gets combined notifications from the grading controller and displays them
+ """
course = get_course_with_access(request.user, course_id, 'load')
user = request.user
notifications = open_ended_notifications.combined_notifications(course, user)
@@ -292,9 +295,11 @@ def combined_notifications(request, course_id):
combined_dict
)
+@cache_control(no_cache=True, no_store=True, must_revalidate=True)
def take_action_on_flags(request, course_id):
"""
-
+ Takes action on student flagged submissions.
+ Currently, only support unflag and ban actions.
"""
if request.method != 'POST':
raise Http404
diff --git a/lms/static/coffee/src/open_ended/open_ended.coffee b/lms/static/coffee/src/open_ended/open_ended.coffee
index aff1e5fc67..61e0c73dba 100644
--- a/lms/static/coffee/src/open_ended/open_ended.coffee
+++ b/lms/static/coffee/src/open_ended/open_ended.coffee
@@ -23,8 +23,8 @@ class OpenEnded
parent_tr = $(event.target).parent().parent()
tr_children = parent_tr.children()
action_type = "unflag"
- submission_id = tr_children[5].innerText
- student_id = tr_children[6].innerText
+ submission_id = parent_tr.data('submission-id')
+ student_id = parent_tr.data('student-id')
callback_func = @after_action_wrapper($(event.target), action_type)
@post('take_action_on_flags', {'submission_id' : submission_id, 'student_id' : student_id, 'action_type' : action_type}, callback_func)
@@ -33,8 +33,8 @@ class OpenEnded
parent_tr = $(event.target).parent().parent()
tr_children = parent_tr.children()
action_type = "ban"
- submission_id = tr_children[5].innerText
- student_id = tr_children[6].innerText
+ submission_id = parent_tr.data('submission-id')
+ student_id = parent_tr.data('student-id')
callback_func = @after_action_wrapper($(event.target), action_type)
@post('take_action_on_flags', {'submission_id' : submission_id, 'student_id' : student_id, 'action_type' : action_type}, callback_func)
diff --git a/lms/templates/open_ended_problems/open_ended_flagged_problems.html b/lms/templates/open_ended_problems/open_ended_flagged_problems.html
index ec892da43c..b4c6f43685 100644
--- a/lms/templates/open_ended_problems/open_ended_flagged_problems.html
+++ b/lms/templates/open_ended_problems/open_ended_flagged_problems.html
@@ -34,7 +34,7 @@
|
|
%for problem in problem_list:
-