Esempio n. 1
0
def destroy(request):
    schema = AccountDestroySchema()
    button1 = Button('submit', _('Yes, I am sure. Destroy my account'))
    button1.css_class = 'btn-danger'
    button2 = Button('cancel', _('Cancel'))
    button2.css_class = ''

    form = Form(schema, buttons=(button1, button2))

    passwords_manager = PasswordsManager(request.db)
    context = {
        'passwords': passwords_manager.retrieve(request.user).count(),
        }

    if 'submit' in request.POST:

        controls = request.POST.items()
        try:
            appstruct = form.validate(controls)
        except ValidationFailure as e:
            context['form'] = e.render()
            return context

        reason = appstruct['reason']
        admin_emails = request.registry.settings['admin_emails']
        if admin_emails:
            notify_admins_of_account_removal(request, request.user,
                                             reason, admin_emails)

        passwords_manager.delete(request.user)
        # TODO: remove user's applications
        delete_user(request.db, request.user)

        request.session.flash(
            _('Your account has been removed. Have a nice day!'),
            'success',
            )
        return logout(request)

    elif 'cancel' in request.POST:
        request.session.flash(
            _('Thanks for reconsidering removing your account!'),
            'info',
            )
        return HTTPFound(location=request.route_path('user_information'))

    context['form'] = form.render()
    return context
 def test_delete_user(self):
     user_id = self.db.users.insert({"screen_name": "John Doe", "first_name": "John", "last_name": ""}, safe=True)
     user = self.db.users.find_one({"_id": user_id}, safe=True)
     n_users = self.db.users.count()
     self.assertTrue(delete_user(self.db, user))
     refreshed_user = self.db.users.find_one({"_id": user_id}, safe=True)
     self.assertEqual(None, refreshed_user)
     self.assertEqual(n_users - 1, self.db.users.count())
 def test_delete_user(self):
     user_id = self.db.users.insert({
             'screen_name': 'John Doe',
             'first_name': 'John',
             'last_name': '',
             }, safe=True)
     user = self.db.users.find_one({'_id': user_id}, safe=True)
     n_users = self.db.users.count()
     self.assertTrue(delete_user(self.db, user))
     refreshed_user = self.db.users.find_one({'_id': user_id}, safe=True)
     self.assertEqual(None, refreshed_user)
     self.assertEqual(n_users - 1, self.db.users.count())