def _update_aliases(self, user, account): """Update mailbox aliases.""" aliases = [] for name, value in self.cleaned_data.iteritems(): if not name.startswith("aliases"): continue if value == "": continue aliases.append(value.lower()) for alias in self.mb.alias_set.all(): if alias.full_address not in aliases: if len(alias.get_recipients()) >= 2: continue alias.delete() else: aliases.remove(alias.full_address) if not aliases: return events.raiseEvent( "CanCreate", user, "mailbox_aliases", len(aliases) ) for alias in aliases: local_part, domname = split_mailbox(alias) try: self.mb.alias_set.get(address=local_part, domain__name=domname) except Alias.DoesNotExist: pass else: continue al = Alias(address=local_part, enabled=account.is_active) al.domain = Domain.objects.get(name=domname) al.save(int_rcpts=[self.mb]) al.post_create(user)
def _update_aliases(self, user, account): """Update mailbox aliases.""" aliases = [] for name, value in self.cleaned_data.iteritems(): if not name.startswith("aliases"): continue if value == "": continue aliases.append(value) for alias in self.mb.alias_set.all(): if not alias.full_address in aliases: if len(alias.get_recipients()) >= 2: continue alias.delete() else: aliases.remove(alias.full_address) if not aliases: return events.raiseEvent("CanCreate", user, "mailbox_aliases", len(aliases)) for alias in aliases: local_part, domname = split_mailbox(alias) try: self.mb.alias_set.get(address=local_part, domain__name=domname) except Alias.DoesNotExist: pass else: continue al = Alias(address=local_part, enabled=account.is_active) al.domain = Domain.objects.get(name=domname) al.save(int_rcpts=[self.mb]) al.post_create(user)
def forward(request, tplname='admin/forward.html'): try: mb = request.user.mailbox_set.all()[0] except IndexError: raise ModoboaException( _("You need a mailbox in order to define a forward")) try: al = Alias.objects.get(address=mb.address, domain__name=mb.domain.name) except Alias.DoesNotExist: al = None if request.method == "POST": form = ForwardForm(request.POST) error = None if form.is_valid(): try: if al is None: al = Alias() al.address = mb.address al.domain = mb.domain al.enabled = mb.user.is_active intdests = [] if form.cleaned_data["keepcopies"]: intdests += [mb] form.parse_dest() al.save(int_rcpts=intdests, ext_rcpts=form.dests) if request.user.group != "SimpleUsers": al.post_create(request.user) return ajax_response(request, respmsg=_("Forward updated")) except BadDestination, e: error = str(e) return ajax_simple_response( dict(status="ko", errors=form.errors, respmsg=error))
def save(self, user, domain): if not self.fields: return if self.cleaned_data["create_dom_admin"] == "no": return username = "******" % (self.cleaned_data["dom_admin_username"], domain.name) try: da = User.objects.get(username=username) except User.DoesNotExist: pass else: raise Conflict(_("User '%s' already exists" % username)) events.raiseEvent("CanCreate", user, "mailboxes") da = User(username=username, email=username, is_active=True) da.set_password("password") da.save() da.set_role("DomainAdmins") da.post_create(user) mb = Mailbox(address=self.cleaned_data["dom_admin_username"], domain=domain, user=da, use_domain_quota=True) mb.set_quota(override_rules=user.has_perm("admin.change_domain")) mb.save(creator=user) if self.cleaned_data["create_aliases"] == "yes": events.raiseEvent("CanCreate", user, "mailbox_aliases") alias = Alias(address="postmaster", domain=domain, enabled=True) alias.save(int_rcpts=[mb]) alias.post_create(user) domain.add_admin(da)
def save(self, user, domain): if not self.fields: return if self.cleaned_data["create_dom_admin"] == "no": return username = "******" % ( self.cleaned_data["dom_admin_username"], domain.name) try: da = User.objects.get(username=username) except User.DoesNotExist: pass else: raise Conflict(_("User '%s' already exists" % username)) events.raiseEvent("CanCreate", user, "mailboxes") da = User(username=username, email=username, is_active=True) da.set_password("password") da.save() da.set_role("DomainAdmins") da.post_create(user) mb = Mailbox( address=self.cleaned_data["dom_admin_username"], domain=domain, user=da, use_domain_quota=True ) mb.set_quota(override_rules=user.has_perm("admin.change_domain")) mb.save(creator=user) if self.cleaned_data["create_aliases"] == "yes": events.raiseEvent("CanCreate", user, "mailbox_aliases") alias = Alias(address="postmaster", domain=domain, enabled=True) alias.save(int_rcpts=[mb]) alias.post_create(user) domain.add_admin(da)
def forward(request, tplname='admin/forward.html'): try: mb = request.user.mailbox_set.all()[0] except IndexError: raise ModoboaException( _("You need a mailbox in order to define a forward") ) try: al = Alias.objects.get(address=mb.address, domain__name=mb.domain.name) except Alias.DoesNotExist: al = None if request.method == "POST": form = ForwardForm(request.POST) error = None if form.is_valid(): try: if al is None: al = Alias() al.address = mb.address al.domain = mb.domain al.enabled = mb.user.is_active intdests = [] if form.cleaned_data["keepcopies"]: intdests += [mb] form.parse_dest() al.save(int_rcpts=intdests, ext_rcpts=form.dests) if request.user.group != "SimpleUsers": al.post_create(request.user) return ajax_response(request, respmsg=_("Forward updated")) except BadDestination, e: error = str(e) return ajax_simple_response(dict( status="ko", errors=form.errors, respmsg=error ))