diff --git a/kitsune/sumo/static/js/ui.js b/kitsune/sumo/static/js/ui.js index f464e7e1633..a02a0cc8e5d 100644 --- a/kitsune/sumo/static/js/ui.js +++ b/kitsune/sumo/static/js/ui.js @@ -1,5 +1,5 @@ /*jshint*/ -/*global Modernizr*/ +/*global gettext, Modernizr*/ ;(function($) { "use strict"; @@ -94,6 +94,10 @@ $('body').on('click', foldingSelectors + ' header', function() { $(this).closest(foldingSelectors).toggleClass('collapsed'); }); + + $('form[data-confirm]').on('submit', function() { + return confirm($(this).data('confirm-text')); + }); }); $(window).load(function() { diff --git a/kitsune/users/models.py b/kitsune/users/models.py index b6cb3883b62..2018c9a49fb 100644 --- a/kitsune/users/models.py +++ b/kitsune/users/models.py @@ -92,6 +92,18 @@ def __unicode__(self): def get_absolute_url(self): return reverse('users.profile', args=[self.user_id]) + def clear(self): + """Clears out the users profile""" + self.name = '' + self.public_email = False + self.avatar = None + self.bio = '' + self.website = '' + self.twitter = '' + self.facebook = '' + self.irc_handle = '' + self.city = '' + class Setting(ModelBase): """User specific value per setting""" diff --git a/kitsune/users/templates/users/close_account.html b/kitsune/users/templates/users/close_account.html new file mode 100644 index 00000000000..5e20717cc12 --- /dev/null +++ b/kitsune/users/templates/users/close_account.html @@ -0,0 +1,11 @@ +{% extends 'base.html' %} + +{% set title = 'Your account was closed' %} +{% set crumbs = [(None, title)] %} + +{% block content %} +
+

{{ _('Your account was sucessfully closed!') }}

+

{{ _('We\'re sorry to see you go.') }}

+
+{% endblock %} diff --git a/kitsune/users/templates/users/edit_profile.html b/kitsune/users/templates/users/edit_profile.html index 87ef555c464..75a14a79a4d 100644 --- a/kitsune/users/templates/users/edit_profile.html +++ b/kitsune/users/templates/users/edit_profile.html @@ -63,5 +63,11 @@

{{ title }}

+
+ {{ csrf() }} +

+ +

+
{% endblock %} diff --git a/kitsune/users/urls.py b/kitsune/users/urls.py index b4c3eca4d92..6f09cf470de 100644 --- a/kitsune/users/urls.py +++ b/kitsune/users/urls.py @@ -34,6 +34,7 @@ url(r'^/register$', views.register, name='users.register'), url(r'^/registercontributor$', views.register, {'contributor': True}, name='users.registercontributor'), + url(r'^/close_account$', views.close_account, name='users.close_account'), url(r'^/activate/(?P\w+)$', views.activate, name='users.old_activate'), diff --git a/kitsune/users/views.py b/kitsune/users/views.py index f5fd4179f99..78927957a35 100644 --- a/kitsune/users/views.py +++ b/kitsune/users/views.py @@ -324,6 +324,30 @@ def profile(request, template, user_id): 'num_documents': user_num_documents(user_profile.user)}) +@login_required +@require_POST +def close_account(request): + # Clear the profile + profile = get_object_or_404(Profile, user__id=request.user.id) + profile.clear() + profile.save() + + # Deactivate the user and change key information + request.user.username = 'user%s' % request.user.id + request.user.email = '%s@example.com' % request.user.id + request.user.is_active = False + + # Remove from all groups + request.user.groups.clear() + + request.user.save() + + # Log the user out + auth.logout(request) + + return render(request, 'users/close_account.html') + + @require_POST @permission_required('users.deactivate_users') def deactivate(request):