diff --git a/modoboa/admin/static/admin/js/admin.js b/modoboa/admin/static/admin/js/admin.js index 406b93784..1f55d0611 100644 --- a/modoboa/admin/static/admin/js/admin.js +++ b/modoboa/admin/static/admin/js/admin.js @@ -115,7 +115,7 @@ Domains.prototype = { $("a[name=deldomain]").confirm({ question: gettext("Delete this domain?"), - method: "DELETE", + method: "POST", warning: warnmsg, 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 28a3043e9..5cdf8b245 100644 --- a/modoboa/admin/templatetags/admin_extras.py +++ b/modoboa/admin/templatetags/admin_extras.py @@ -174,7 +174,7 @@ def domain_actions(user, domid): if user.has_perm("admin.delete_domain"): actions.append({ "name": "deldomain", - "url": reverse("modoboa.admin.views.deldomain") + "?selection=%s" % domid, + "url": reverse("modoboa.admin.views.deldomain", args=[domid]), "title": _("Delete the domain"), "img": "icon-trash" }) diff --git a/modoboa/admin/tests.py b/modoboa/admin/tests.py index 8ea10e181..53aa2d4b8 100644 --- a/modoboa/admin/tests.py +++ b/modoboa/admin/tests.py @@ -71,9 +71,7 @@ class DomainTestCase(ModoTestCase): def test_delete(self): """Test the removal of a domain """ - self.check_ajax_get(reverse("modoboa.admin.views.deldomain"), { - "selection": 1 - }) + self.check_ajax_get(reverse("modoboa.admin.views.deldomain", args=[1]), {}) with self.assertRaises(Domain.DoesNotExist): Domain.objects.get(pk=1) diff --git a/modoboa/admin/urls.py b/modoboa/admin/urls.py index cac8ae55a..048d1b859 100644 --- a/modoboa/admin/urls.py +++ b/modoboa/admin/urls.py @@ -9,7 +9,7 @@ urlpatterns = patterns( (r'^domains/flatlist/$', 'domains_list'), (r'^domains/new/', 'newdomain'), (r'^domains/(?P\d+)/edit/$', 'editdomain'), - (r'^domains/delete/$', 'deldomain'), + (r'^domains/(?P\d+)/delete/$', 'deldomain'), (r'^domains/import/$', 'import_domains'), (r'^domains/export/$', 'export_domains'), diff --git a/modoboa/admin/views.py b/modoboa/admin/views.py index a3205c825..d38aa8831 100644 --- a/modoboa/admin/views.py +++ b/modoboa/admin/views.py @@ -171,22 +171,21 @@ def editdomain(request, dom_id, tplname="admin/editdomainform.html"): @login_required @permission_required("admin.delete_domain") @transaction.commit_on_success -def deldomain(request): - selection = request.GET["selection"].split(",") - keepdir = True if request.GET.get("keepdir", "false") == "true" else False +def deldomain(request, dom_id): + keepdir = True if request.POST.get("keepdir", "false") == "true" else False try: mb = Mailbox.objects.get(user__id=request.user.id) except Mailbox.DoesNotExist: mb = None - for dom in Domain.objects.filter(id__in=selection): - if not request.user.can_access(dom): - raise PermDeniedException - if mb and mb.domain == dom: - raise AdminError(_("You can't delete your own domain")) - dom.delete(request.user, keepdir) + dom = Domain.objects.get(pk=dom_id) + if not request.user.can_access(dom): + raise PermDeniedException + if mb and mb.domain == dom: + raise AdminError(_("You can't delete your own domain")) + dom.delete(request.user, keepdir) - msg = ungettext("Domain deleted", "Domains deleted", len(selection)) + msg = ungettext("Domain deleted", "Domains deleted", 1) return ajax_simple_response({"status": "ok", "respmsg": msg})