mirror of
https://github.com/jwinterm/modoboa.git
synced 2026-10-19 05:58:34 +02:00
Refactoring
This commit is contained in:
@@ -19,7 +19,6 @@ export const importExportMixin = {
|
||||
bus.$emit('notification', { msg: resp.data.message, type: 'error' })
|
||||
}
|
||||
}).catch(error => {
|
||||
console.error(error)
|
||||
bus.$emit('notification', {
|
||||
msg: this.$gettext('CSV seems to be badly formatted'),
|
||||
type: 'error'
|
||||
|
||||
@@ -543,7 +543,7 @@ class WritableAccountSerializer(v1_serializers.WritableAccountSerializer):
|
||||
self.set_permissions(user, domains)
|
||||
if aliases:
|
||||
for alias in aliases:
|
||||
models.modify_or_create_alias(
|
||||
models.alias.modify_or_create_alias(
|
||||
address="{}@{}".format(alias["localpart"], alias["domain"]),
|
||||
recipients=[user.username],
|
||||
creator=creator,
|
||||
@@ -576,8 +576,8 @@ class WritableAccountSerializer(v1_serializers.WritableAccountSerializer):
|
||||
# We create a list to keep track of alias we need to delete
|
||||
alias_recipients = instance.mailbox.alias_addresses
|
||||
for alias in aliases:
|
||||
address="{}@{}".format(alias["localpart"], alias["domain"])
|
||||
models.modify_or_create_alias(
|
||||
address = "{}@{}".format(alias["localpart"], alias["domain"])
|
||||
models.alias.modify_or_create_alias(
|
||||
address=address,
|
||||
recipients=[validated_data["username"]],
|
||||
creator=creator,
|
||||
@@ -587,9 +587,12 @@ class WritableAccountSerializer(v1_serializers.WritableAccountSerializer):
|
||||
alias_recipients.remove(address)
|
||||
except ValueError:
|
||||
continue
|
||||
for alias in alias_recipients:
|
||||
models.remove_recipient_from_alias(
|
||||
alias, validated_data["username"])
|
||||
for alias_address in alias_recipients:
|
||||
alias = models.Alias.objects.filter(
|
||||
address=alias_address, internal=False)
|
||||
if alias.exists():
|
||||
alias.first().remove_recipient_from_alias(
|
||||
validated_data["username"])
|
||||
instance.save()
|
||||
resources = validated_data.get("resources")
|
||||
if resources:
|
||||
|
||||
@@ -4,9 +4,7 @@ from .alarm import Alarm
|
||||
from .alias import (
|
||||
Alias,
|
||||
AliasRecipient,
|
||||
validate_alias_address,
|
||||
modify_or_create_alias,
|
||||
remove_recipient_from_alias)
|
||||
validate_alias_address)
|
||||
from .base import AdminObject
|
||||
from .domain import Domain
|
||||
from .domain_alias import DomainAlias
|
||||
@@ -27,6 +25,4 @@ __all__ = [
|
||||
"Quota",
|
||||
"SenderAddress",
|
||||
"validate_alias_address",
|
||||
"modify_or_create_alias",
|
||||
"remove_recipient_from_alias",
|
||||
]
|
||||
|
||||
@@ -56,39 +56,6 @@ def validate_alias_address(
|
||||
return local_part, domain
|
||||
|
||||
|
||||
def modify_or_create_alias(address, recipients, creator, domain):
|
||||
"""Add recipient if the alias already exists or create it."""
|
||||
|
||||
alias = Alias.objects.filter(address=address, internal=False)
|
||||
if alias.exists():
|
||||
alias.first().add_recipients(recipients)
|
||||
else:
|
||||
Alias.objects.create(
|
||||
creator=creator,
|
||||
domain=domain,
|
||||
address=address,
|
||||
recipients=recipients
|
||||
)
|
||||
|
||||
|
||||
def remove_recipient_from_alias(address, recipient_to_delete):
|
||||
"""Delete the selected recipient from an alias
|
||||
or delete the whole alias if only one is left."""
|
||||
alias = Alias.objects.filter(
|
||||
address=address, internal=False)
|
||||
if alias.exists():
|
||||
alias_recipients = list(alias.first().recipients)
|
||||
if recipient_to_delete in alias_recipients:
|
||||
if len(alias_recipients) == 1:
|
||||
# Only recipient, we delete the AliasExists
|
||||
alias.delete()
|
||||
else:
|
||||
alias_recipients.remove(recipient_to_delete)
|
||||
alias = alias.first()
|
||||
alias.set_recipients(alias_recipients)
|
||||
alias.save()
|
||||
|
||||
|
||||
class AliasManager(models.Manager):
|
||||
"""Custom manager for Alias."""
|
||||
|
||||
@@ -103,6 +70,20 @@ class AliasManager(models.Manager):
|
||||
alias.set_recipients(recipients)
|
||||
return alias
|
||||
|
||||
def modify_or_create_alias(self, address, recipients, creator, domain):
|
||||
"""Add recipient if the alias already exists or create it."""
|
||||
|
||||
alias = Alias.objects.filter(address=address, internal=False)
|
||||
if alias.exists():
|
||||
alias.first().add_recipients(recipients)
|
||||
else:
|
||||
self.create(
|
||||
creator=creator,
|
||||
domain=domain,
|
||||
address=address,
|
||||
recipients=recipients
|
||||
)
|
||||
|
||||
|
||||
class Alias(AdminObject):
|
||||
"""Mailbox alias."""
|
||||
@@ -227,6 +208,19 @@ class Alias(AdminObject):
|
||||
kwargs["r_mailbox"] = rcpt
|
||||
AliasRecipient(**kwargs).save()
|
||||
|
||||
def remove_recipient_from_alias(self, recipient_to_delete):
|
||||
"""Delete the selected recipient from an alias
|
||||
or delete the whole alias if only one is left."""
|
||||
alias_recipients = list(self.recipients)
|
||||
if recipient_to_delete in alias_recipients:
|
||||
if len(alias_recipients) == 1:
|
||||
# Only recipient, we delete the AliasExists
|
||||
self.delete()
|
||||
else:
|
||||
alias_recipients.remove(recipient_to_delete)
|
||||
self.set_recipients(alias_recipients)
|
||||
self.save()
|
||||
|
||||
def set_recipients(self, address_list):
|
||||
"""Set recipients for this alias."""
|
||||
|
||||
|
||||
Reference in New Issue
Block a user