def account_auto_created(user): from modoboa.core.models import User from modoboa.extensions.admin.lib import check_if_domain_exists from modoboa.lib.permissions import grant_access_to_object if parameters.get_admin("AUTO_CREATE_DOMAIN_AND_MAILBOX") == "no": return localpart, domname = split_mailbox(user.username) if user.group != 'SimpleUsers' and domname is None: return sadmins = User.objects.filter(is_superuser=True) try: domain = Domain.objects.get(name=domname) except Domain.DoesNotExist: label = check_if_domain_exists( domname, [(DomainAlias, _('domain alias'))]) if label is not None: return domain = Domain(name=domname, enabled=True, quota=0) domain.save(creator=sadmins[0]) for su in sadmins[1:]: grant_access_to_object(su, domain) try: mb = Mailbox.objects.get(domain=domain, address=localpart) except Mailbox.DoesNotExist: mb = Mailbox( address=localpart, domain=domain, user=user, use_domain_quota=True ) mb.set_quota(override_rules=True) mb.save(creator=sadmins[0]) for su in sadmins[1:]: grant_access_to_object(su, mb)
def account_auto_created(user): from modoboa.core.models import User from modoboa.extensions.admin.lib import check_if_domain_exists from modoboa.lib.permissions import grant_access_to_object if parameters.get_admin("AUTO_CREATE_DOMAIN_AND_MAILBOX") == "no": return localpart, domname = split_mailbox(user.username) if user.group != 'SimpleUsers' and domname is None: return sadmins = User.objects.filter(is_superuser=True) try: domain = Domain.objects.get(name=domname) except Domain.DoesNotExist: label = check_if_domain_exists(domname, [(DomainAlias, _('domain alias'))]) if label is not None: return domain = Domain(name=domname, enabled=True, quota=0) domain.save(creator=sadmins[0]) for su in sadmins[1:]: grant_access_to_object(su, domain) try: mb = Mailbox.objects.get(domain=domain, address=localpart) except Mailbox.DoesNotExist: mb = Mailbox(address=localpart, domain=domain, user=user, use_domain_quota=True) mb.set_quota(override_rules=True) mb.save(creator=sadmins[0]) for su in sadmins[1:]: grant_access_to_object(su, mb)
def clean(self): """Custom fields validation. We want to prevent duplicate names between domains and domain aliases. Extensions have the possibility to declare other objects (see *CheckDomainName* event). The validation way is not very smart... """ super(DomainFormGeneral, self).clean() if self._errors: raise forms.ValidationError(self._errors) cleaned_data = self.cleaned_data name = cleaned_data["name"] label = check_if_domain_exists(name, [(DomainAlias, _('domain alias'))]) if label is not None: self._errors["name"] = self.error_class( [_("A %s with this name already exists" % unicode(label))]) del cleaned_data["name"] for k in cleaned_data.keys(): if not k.startswith("aliases"): continue 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"))]) if label is not None: self._errors[k] = self.error_class( [_("A %s with this name already exists" % unicode(label))]) del cleaned_data[k] return cleaned_data
def clean(self): """Custom fields validation. We want to prevent duplicate names between domains and domain aliases. Extensions have the possibility to declare other objects (see *CheckDomainName* event). The validation way is not very smart... """ super(DomainFormGeneral, self).clean() if self._errors: raise forms.ValidationError(self._errors) cleaned_data = self.cleaned_data name = cleaned_data["name"] label = check_if_domain_exists(name, [(DomainAlias, _('domain alias'))]) if label is not None: self._errors["name"] = self.error_class( [_("A %s with this name already exists" % unicode(label))] ) del cleaned_data["name"] for k in cleaned_data.keys(): if not k.startswith("aliases"): continue if cleaned_data[k] == "": del cleaned_data[k] continue label = check_if_domain_exists( 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))] ) del cleaned_data[k] return cleaned_data