Commit de027211 by Victor Shnayder

Add removing students from cohorts.

parent 9e84ae14
......@@ -164,6 +164,37 @@ def add_users_to_cohort(request, course_id, cohort_id):
'present': present,
'unknown': unknown})
@ensure_csrf_cookie
def remove_user_from_cohort(request, course_id, cohort_id):
"""
Expects 'username': username in POST data.
Return json dict of:
{'success': True} or
{'success': False,
'msg': error_msg}
"""
get_course_with_access(request.user, course_id, 'staff')
if request.method != "POST":
raise Http404("Must POST to add users to cohorts")
username = request.POST.get('username')
if username is None:
return JsonHttpReponse({'success': False,
'msg': 'No username specified'})
cohort = cohorts.get_cohort_by_id(course_id, cohort_id)
try:
user = User.objects.get(username=username)
cohort.users.remove(user)
return JsonHttpReponse({'success': True})
except User.DoesNotExist:
log.debug('no user')
return JsonHttpReponse({'success': False,
'msg': "No user '{0}'".format(username)})
def debug_cohort_mgmt(request, course_id):
"""
......
......@@ -67,7 +67,8 @@ var CohortManager = (function ($) {
var detail_page_num = $$(".page_num");
var users_area = $$(".users_area");
var add_members_button = $$(".add_members");
var op_results = $$("op_results");
var op_results = $$(".op_results");
var cohort_id = null;
var cohort_title = null;
var detail_url = null;
var page = null;
......@@ -79,6 +80,7 @@ var CohortManager = (function ($) {
var el = $(this);
cohort_title = el.text();
detail_url = el.data('href');
cohort_id = el.data('id');
state = state_detail;
render();
}
......@@ -118,12 +120,31 @@ var CohortManager = (function ($) {
// *********** Detail view methods
function remove_user_from_cohort(username, cohort_id, row) {
var delete_url = detail_url + '/delete';
var data = {'username': username}
$.post(delete_url, data).done(function() {row.remove()})
.fail(function(jqXHR, status, error) {
log_error('Error removing user ' + username +
' from cohort. ' + status + ' ' + error);
});
}
function add_to_users_list(item) {
var tr = $('<tr><td class="name"></td><td class="username"></td>' +
'<td class="email"></td></tr>');
'<td class="email"></td>' +
'<td class="remove"></td></tr>');
var current_cohort_id = cohort_id;
$(".name", tr).text(item.name);
$(".username", tr).text(item.username);
$(".email", tr).text(item.email);
$(".remove", tr).html('<a href="#">remove</a>')
.click(function() {
remove_user_from_cohort(item.username, current_cohort_id, tr);
});
detail_users.append(tr);
};
......@@ -145,7 +166,12 @@ var CohortManager = (function ($) {
function adder(note, color) {
return function(item) {
var li = $('<li></li>')
li.text(note + ' ' + item.name + ', ' + item.username + ', ' + item.email);
if (typeof item === "object") {
li.text(note + ' ' + item.name + ', ' + item.username + ', ' + item.email);
} else {
// string
li.text(note + ' ' + item);
}
li.css('color', color);
op_results.append(li);
}
......@@ -153,7 +179,7 @@ var CohortManager = (function ($) {
if (response && response.success) {
response.added.forEach(adder("Added", "green"));
response.present.forEach(adder("Already present:", "black"));
response.unknown.forEach(adder("Already present:", "red"));
response.unknown.forEach(adder("Unknown user:", "red"));
} else {
log_error(response.msg || "There was an error adding users");
}
......
......@@ -29,7 +29,7 @@
<p>
Add users by username or email. One per line or comma-separated.
</p>
<textarea cols="50" row="30" class="users_area"></textarea>
<textarea cols="50" row="30" class="users_area" style="height: 200px"></textarea>
<a href="#" class="button add_members">Add cohort members</a>
<ul class="op_results">
......
......@@ -287,6 +287,9 @@ if settings.COURSEWARE_ENABLED:
url(r'^courses/(?P<course_id>[^/]+/[^/]+/[^/]+)/cohorts/(?P<cohort_id>[0-9]+)/add$',
'course_groups.views.add_users_to_cohort',
name="add_to_cohort"),
url(r'^courses/(?P<course_id>[^/]+/[^/]+/[^/]+)/cohorts/(?P<cohort_id>[0-9]+)/delete$',
'course_groups.views.remove_user_from_cohort',
name="remove_from_cohort"),
url(r'^courses/(?P<course_id>[^/]+/[^/]+/[^/]+)/cohorts/debug$',
'course_groups.views.debug_cohort_mgmt',
name="debug_cohort_mgmt"),
......
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