From 0ea176f665750ee88757e8aa45c3e9110b3ea2d3 Mon Sep 17 00:00:00 2001 From: Piotr Mitros Date: Wed, 14 Mar 2012 22:56:20 -0400 Subject: [PATCH] Adding name and e-mail changes --HG-- branch : pmitros-name-change --- student/models.py | 10 ++++++++ student/views.py | 65 +++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 75 insertions(+) diff --git a/student/models.py b/student/models.py index f4498c396b..d28c111dfe 100644 --- a/student/models.py +++ b/student/models.py @@ -58,6 +58,16 @@ class Registration(models.Model): self.user.save() #self.delete() +class PendingNameChange(models.Model): + user = models.OneToOneField(User, unique=True, db_index=True, related_name='profile') + new_name = models.CharField(blank=True, max_length=255, db_index=True) + rationale = models.CharField(blank=True, max_length=1024, db_index=True) + +class PendingEmailChange(models.Model): + user = models.OneToOneField(User, unique=True, db_index=True, related_name='profile') + new_email = models.CharField(blank=True, max_length=255, db_index=True) + + #cache_relation(User.profile) #### Helper methods for use from python manage.py shell. diff --git a/student/views.py b/student/views.py index b8194b3e61..5cc3a407ad 100644 --- a/student/views.py +++ b/student/views.py @@ -252,3 +252,68 @@ def password_reset(request): else: return HttpResponse(json.dumps({'success':False, 'error': 'Invalid e-mail'})) + +@ensure_csrf_cookie +def reactivation_email(request): + ''' Send an e-mail to reactivate a deactivated account, or to + resend an activation e-mail ''' + pass + +@ensure_csrf_cookie +def change_email_request(request): + if not request.user.is_authenticated: + raise Http404 + pass + +@ensure_csrf_cookie +def change_email_confirm(request): + pass + +@ensure_csrf_cookie +def change_name_request(request): + if not request.user.is_authenticated: + raise Http404 + + pnc = PendingNameChange() + pnc.user = request.User + pnc.new_name = request.POST['new_name'] + pnc.rationale = request.POST['rationale'] + pnc.save() + return HttpResponse(json.dumps({'success':True})) + + +@ensure_csrf_cookie +def change_name_list(request): + if not request.user.is_staff: + raise Http404 + + changes = list(PendingNameChange.objects.all()) + json = [{'new_name': c.new_name, + 'rationale':c.rationale, + 'old_name':UserProfile.Objects.get(username=c.user).name, + 'email':c.user.email, + 'id':c.id} for c in changes] + return render_to_response('name_changes.html', json) + +@ensure_csrf_cookie +def change_name_reject(request): + ''' Course staff clicks 'reject' on a given name change ''' + if not request.user.is_staff: + raise Http404 + + pnc = PendingNameChange.objects.get(id = int(request.POST['id'])) + pnc.delete() + return HttpResponse(json.dumps({'success':True})) + +@ensure_csrf_cookie +def change_name_accept(request): + ''' Course staff clicks 'accept' on a given name change ''' + pnc = PendingNameChange.objects.get(id = int(request.POST['id'])) + + u = pnc.user + up = UserProfile.objects.get(user=u) + up.name = pnc.name + up.save() + pnc.delete() + return HttpResponse(json.dumps({'success':True})) +