diff --git a/modoboa/admin/static/admin/js/admin.js b/modoboa/admin/static/admin/js/admin.js index a478fdbe5..406b93784 100644 --- a/modoboa/admin/static/admin/js/admin.js +++ b/modoboa/admin/static/admin/js/admin.js @@ -234,14 +234,14 @@ Identities.prototype = { Admin.prototype.list_cb.call(this, data); var deloptions = {}; - if (data.handle_mailboxes) { + if (data.handle_mailboxes == "yes") { deloptions = {keepdir: gettext("Do not delete mailbox directory")}; } $("a.filter").click($.proxy(this.filter_by_tag, this)); $("a[name=delaccount]").confirm({ question: gettext("Delete this account?"), - method: "DELETE", + method: "POST", checkboxes: deloptions, success_cb: $.proxy(this.reload_listing, this) }); diff --git a/modoboa/admin/templatetags/admin_extras.py b/modoboa/admin/templatetags/admin_extras.py index ef4b92e17..28a3043e9 100644 --- a/modoboa/admin/templatetags/admin_extras.py +++ b/modoboa/admin/templatetags/admin_extras.py @@ -189,7 +189,7 @@ def identity_actions(user, ident): actions = events.raiseQueryEvent("ExtraAccountActions", ident) actions += [ {"name" : "delaccount", - "url" : reverse("modoboa.admin.views.delaccount") + "?selection=%s" % objid, + "url" : reverse("modoboa.admin.views.delaccount", args=[objid]), "img" : "icon-trash", "title" : _("Delete this account")}, ] diff --git a/modoboa/admin/tests.py b/modoboa/admin/tests.py index e1d041c21..8ea10e181 100644 --- a/modoboa/admin/tests.py +++ b/modoboa/admin/tests.py @@ -134,8 +134,7 @@ class AccountTestCase(ModoTestCase): mb = Mailbox.objects.get(pk=mb.id) self.assertEqual(mb.full_address, "pouet@test.com") - self.check_ajax_get(reverse("modoboa.admin.views.delaccount") + "?selection=%d" \ - % account.id, {}) + self.check_ajax_get(reverse("modoboa.admin.views.delaccount", args=[account.id]), {}) def test_update_password(self): """Password update @@ -305,11 +304,9 @@ class PermissionsTestCase(ModoTestCase): account = User.objects.get(username="superadmin2@test.com") self.clt.logout() self.clt.login(username="admin@test.com", password="toto") - self.check_ajax_get(reverse("modoboa.admin.views.delaccount") + "?selection=%d" \ - % account.id, {}, + self.check_ajax_get(reverse("modoboa.admin.views.delaccount", args=[account.id]), {}, status="ko", respmsg="Permission denied") - self.check_ajax_get(reverse("modoboa.admin.views.delaccount") + "?selection=%d" \ - % 4, {}, + self.check_ajax_get(reverse("modoboa.admin.views.delaccount", args=[account.id]), {}, status="ko", respmsg="Permission denied") diff --git a/modoboa/admin/urls.py b/modoboa/admin/urls.py index ce767fb8e..cac8ae55a 100644 --- a/modoboa/admin/urls.py +++ b/modoboa/admin/urls.py @@ -32,7 +32,7 @@ urlpatterns = patterns( (r'^accounts/list/$', 'accounts_list'), (r'^accounts/new/$', 'newaccount'), (r'^accounts/edit/(?P\d+)/$', 'editaccount'), - (r'^accounts/delete/$', 'delaccount'), + (r'^accounts/delete/(?P\d+)/$', 'delaccount'), (r'^distriblists/new/$', 'newdlist'), (r'^distriblists/delete/$', 'deldlist'), diff --git a/modoboa/admin/views.py b/modoboa/admin/views.py index edf8559ca..a3205c825 100644 --- a/modoboa/admin/views.py +++ b/modoboa/admin/views.py @@ -528,14 +528,12 @@ def editaccount(request, accountid, tplname="common/tabforms.html"): @login_required @permission_required("admin.delete_user") @transaction.commit_on_success -def delaccount(request): - selection = request.GET["selection"].split(",") - keepdir = True if request.GET.get("keepdir", "false") == "true" else False +def delaccount(request, accountid): + keepdir = True if request.POST.get("keepdir", "false") == "true" else False - for account in User.objects.filter(id__in=selection): - account.delete(request.user, keepdir) + User.objects.get(pk=accountid).delete(request.user, keepdir) - msg = ungettext("Account deleted", "Accounts deleted", len(selection)) + msg = ungettext("Account deleted", "Accounts deleted", 1) return ajax_simple_response({"status": "ok", "respmsg": msg}) diff --git a/modoboa/extensions/limits/tests.py b/modoboa/extensions/limits/tests.py index 437d05326..87fb27c32 100644 --- a/modoboa/extensions/limits/tests.py +++ b/modoboa/extensions/limits/tests.py @@ -21,11 +21,9 @@ class PermissionsTestCase(ExtTestCase): account = User.objects.get(username="reseller@test.com") self.clt.logout() self.clt.login(username="admin@test.com", password="toto") - self.check_ajax_get(reverse("modoboa.admin.views.delaccount") + "?selection=%d" \ - % account.id, {}, + self.check_ajax_get(reverse("modoboa.admin.views.delaccount", args=[account.id]), {}, status="ko", respmsg="Permission denied") - self.check_ajax_get(reverse("modoboa.admin.views.delaccount") + "?selection=%d" \ - % 4, {}, + self.check_ajax_get(reverse("modoboa.admin.views.delaccount", args=[4]), {}, status="ko", respmsg="Permission denied")