From 6fbdc0e679b76adb3d07f751744f43ce631602d6 Mon Sep 17 00:00:00 2001 From: Antoine Nguyen Date: Mon, 26 Jan 2015 21:46:21 +0100 Subject: [PATCH] Prevent the creation of a duplicated domain. fix #674 --- modoboa/extensions/admin/forms/domain.py | 8 +++++++- modoboa/extensions/admin/lib.py | 6 +----- 2 files changed, 8 insertions(+), 6 deletions(-) diff --git a/modoboa/extensions/admin/forms/domain.py b/modoboa/extensions/admin/forms/domain.py index e9efb0c78..84673d84f 100644 --- a/modoboa/extensions/admin/forms/domain.py +++ b/modoboa/extensions/admin/forms/domain.py @@ -94,8 +94,14 @@ class DomainFormGeneral(forms.ModelForm, DynamicForm): if cleaned_data[k] == "": del cleaned_data[k] continue + if cleaned_data[k] == name: + self._errors[k] = self.error_class( + [_("A %s with this name already exists") % _("domain")] + ) + del cleaned_data[k] + continue label = check_if_domain_exists( - cleaned_data[k], [(Domain, _('domain'))]) + cleaned_data[k], [(Domain, _("domain"))]) if label is not None: self._errors[k] = self.error_class( [_("A %s with this name already exists" % unicode(label))] diff --git a/modoboa/extensions/admin/lib.py b/modoboa/extensions/admin/lib.py index 5b68e1273..f91952fbc 100644 --- a/modoboa/extensions/admin/lib.py +++ b/modoboa/extensions/admin/lib.py @@ -109,10 +109,6 @@ def check_if_domain_exists(name, extra_checks=None): if extra_checks is not None: dtypes = extra_checks + dtypes for dtype, label in dtypes: - try: - dtype.objects.get(name=name) - except dtype.DoesNotExist: - pass - else: + if dtype.objects.filter(name=name).exists(): return label return None