Commit 75c5c1ce by Piotr Mitros

Name changes work, but meta storage not tested

parent 2b173379
...@@ -383,8 +383,11 @@ def change_name_request(request): ...@@ -383,8 +383,11 @@ def change_name_request(request):
if not request.user.is_authenticated: if not request.user.is_authenticated:
raise Http404 raise Http404
pnc = PendingNameChange() try:
pnc.user = request.User pnc = PendingNameChange.objects.get(user = request.user)
except:
pnc = PendingNameChange()
pnc.user = request.user
pnc.new_name = request.POST['new_name'] pnc.new_name = request.POST['new_name']
pnc.rationale = request.POST['rationale'] pnc.rationale = request.POST['rationale']
if len(pnc.new_name)<2: if len(pnc.new_name)<2:
...@@ -395,37 +398,59 @@ def change_name_request(request): ...@@ -395,37 +398,59 @@ def change_name_request(request):
return HttpResponse(json.dumps({'success':True})) return HttpResponse(json.dumps({'success':True}))
@ensure_csrf_cookie @ensure_csrf_cookie
def change_name_list(request): def pending_name_changes(request):
print request.user.is_staff, request.user
if not request.user.is_staff: if not request.user.is_staff:
print "AAAA"
raise Http404 raise Http404
changes = list(PendingNameChange.objects.all()) changes = list(PendingNameChange.objects.all())
json = [{'new_name': c.new_name, js = {'students' : [{'new_name': c.new_name,
'rationale':c.rationale, 'rationale':c.rationale,
'old_name':UserProfile.Objects.get(username=c.user).name, 'old_name':UserProfile.objects.get(user=c.user).name,
'email':c.user.email, 'email':c.user.email,
'id':c.id} for c in changes] 'uid':c.user.id,
return render_to_response('name_changes.html', json) 'cid':c.id} for c in changes]}
return render_to_response('name_changes.html', js)
@ensure_csrf_cookie @ensure_csrf_cookie
def change_name_reject(request): def reject_name_change(request):
''' Course staff clicks 'reject' on a given name change ''' ''' Course staff clicks 'reject' on a given name change '''
if not request.user.is_staff: if not request.user.is_staff:
raise Http404 raise Http404
pnc = PendingNameChange.objects.get(id = int(request.POST['id'])) try:
pnc = PendingNameChange.objects.get(id = int(request.POST['id']))
except:
return HttpResponse(json.dumps({'success':False, 'error':'Invalid ID'}))
pnc.delete() pnc.delete()
return HttpResponse(json.dumps({'success':True})) return HttpResponse(json.dumps({'success':True}))
@ensure_csrf_cookie @ensure_csrf_cookie
def change_name_accept(request): def accept_name_change(request):
''' Course staff clicks 'accept' on a given name change ''' ''' Course staff clicks 'accept' on a given name change '''
pnc = PendingNameChange.objects.get(id = int(request.POST['id'])) if not request.user.is_staff:
raise Http404
try:
pnc = PendingNameChange.objects.get(id = int(request.POST['id']))
except:
return HttpResponse(json.dumps({'success':False, 'error':'Invalid ID'}))
u = pnc.user u = pnc.user
up = UserProfile.objects.get(user=u) up = UserProfile.objects.get(user=u)
up.name = pnc.name
# Save old name
meta = up.get_meta()
print meta
if 'old_names' not in meta:
meta['old_names'] = []
meta['old_names'].append(up.name)
up.set_meta(meta)
up.name = pnc.new_name
up.save() up.save()
pnc.delete() pnc.delete()
return HttpResponse(json.dumps({'success':True}))
return HttpResponse(json.dumps({'success':True}))
<%inherit file="main.html" /> <%inherit file="main.html" />
<%include file="navigation.html" args="active_page=''" /> <%include file="navigation.html" args="active_page=''" />
<section class="main-content"> <section class="main-content">
<script>
function name_confirm(id) {
postJSON('/accept_name_change',{"id":id},
function(data){
if(data.success){
$("#div"+id).html("Accepted");
} else {
alert('Error');
}
});
}
function name_deny(id) {
postJSON('/reject_name_change',{"id":id},
function(data){
if(data.success){
$("#div"+id).html("Rejected");
} else {
alert('Error');
}
});
}
</script>
<div class="gradebook-wrapper"> <div class="gradebook-wrapper">
<section class="gradebook-content"> <section class="gradebook-content">
<h1>Pending name changes</h1> <h1>Pending name changes</h1>
<table> <table>
% for s in students: % for s in students:
<tr><td><a href=/profile/${s.uid}/>${s.oldname}</td><td>${s.newname}</td><td onclick="update({$s.uid});">[Change]</td></tr> <tr>
<td><a href=/profile/${s['uid']}/>${s['old_name']}</td>
<td>${s['new_name']|h}</td>
<td>${s['email']|h}</td>
<td>${s['rationale']|h}</td>
<td><span id="div${s['cid']}"><span onclick="name_confirm(${s['cid']});">[Confirm]</span>
<span onclick="name_deny(${s['cid']});">[Reject]</span></span></td></tr>
% endfor % endfor
</table> </table>
</section> </section>
......
...@@ -102,13 +102,13 @@ $(function() { ...@@ -102,13 +102,13 @@ $(function() {
var new_name = $('#new_name_field').val(); var new_name = $('#new_name_field').val();
var rationale = $('#name_rationale_field').val(); var rationale = $('#name_rationale_field').val();
postJSON('/change_email',{"new_name":new_name, postJSON('/change_name',{"new_name":new_name,
"rationale":rationale}, "rationale":rationale},
function(data){ function(data){
if(data.success){ if(data.success){
$("#change_email").html("Request submitted. We'll send you an e-mail if we approve the change or need further information."); $("#apply_name_change").html("Request submitted. We'll send you an e-mail if we approve the change or need further information.");
} else { } else {
$("#change_email_error").html(data.error); $("#apply_name_change_error").html(data.error);
} }
}); });
log_event("profile", {"type":"name_change_request", log_event("profile", {"type":"name_change_request",
...@@ -190,7 +190,7 @@ $(function() { ...@@ -190,7 +190,7 @@ $(function() {
</li> </li>
<li> <li>
E-mail: <strong>${email}</strong> <a href="#change_email" rel="leanModal" class="edit-email">Edit</a> E-mail: <strong>${email}</strong> <a href="#change_email" rel="leanModal" class="edit-email">Change</a>
</li> </li>
<li> <li>
Location: <div id="location_sub">${location}</div><div id="description"></div> <a href="#" id="change_location">Edit</a> Location: <div id="location_sub">${location}</div><div id="description"></div> <a href="#" id="change_location">Edit</a>
...@@ -249,6 +249,7 @@ $(function() { ...@@ -249,6 +249,7 @@ $(function() {
<div id="change_email" class="leanModal_box"> <div id="change_email" class="leanModal_box">
<h1>Change e-mail</h1> <h1>Change e-mail</h1>
<div id="apply_name_change_error"></div>
<form id="change_email_form"> <form id="change_email_form">
<div id="change_email_error"> </div> <div id="change_email_error"> </div>
<fieldset> <fieldset>
......
...@@ -11,6 +11,10 @@ urlpatterns = ('', ...@@ -11,6 +11,10 @@ urlpatterns = ('',
url(r'^$', 'student.views.index'), # Main marketing page, or redirect to courseware url(r'^$', 'student.views.index'), # Main marketing page, or redirect to courseware
url(r'^change_email$', 'student.views.change_email_request'), url(r'^change_email$', 'student.views.change_email_request'),
url(r'^email_confirm/(?P<key>[^/]*)$', 'student.views.confirm_email_change'), url(r'^email_confirm/(?P<key>[^/]*)$', 'student.views.confirm_email_change'),
url(r'^change_name$', 'student.views.change_name_request'),
url(r'^accept_name_change$', 'student.views.accept_name_change'),
url(r'^reject_name_change$', 'student.views.reject_name_change'),
url(r'^pending_name_changes$', 'student.views.pending_name_changes'),
url(r'^gradebook$', 'courseware.views.gradebook'), url(r'^gradebook$', 'courseware.views.gradebook'),
url(r'^event$', 'track.views.user_track'), url(r'^event$', 'track.views.user_track'),
url(r'^t/(?P<template>[^/]*)$', 'static_template_view.views.index'), url(r'^t/(?P<template>[^/]*)$', 'static_template_view.views.index'),
......
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