make sure to set mailbox_id when creating GenEmail
This commit is contained in:
parent
faa82e7b5a
commit
a6f4059d5d
|
@ -7,7 +7,7 @@ from app.config import MAX_NB_EMAIL_FREE_PLAN
|
||||||
from app.dashboard.views.custom_alias import verify_prefix_suffix
|
from app.dashboard.views.custom_alias import verify_prefix_suffix
|
||||||
from app.extensions import db
|
from app.extensions import db
|
||||||
from app.log import LOG
|
from app.log import LOG
|
||||||
from app.models import GenEmail, AliasUsedOn
|
from app.models import GenEmail, AliasUsedOn, User
|
||||||
from app.utils import convert_to_id
|
from app.utils import convert_to_id
|
||||||
|
|
||||||
|
|
||||||
|
@ -26,7 +26,7 @@ def new_custom_alias():
|
||||||
409 if the alias already exists
|
409 if the alias already exists
|
||||||
|
|
||||||
"""
|
"""
|
||||||
user = g.user
|
user: User = g.user
|
||||||
if not user.can_create_new_alias():
|
if not user.can_create_new_alias():
|
||||||
LOG.d("user %s cannot create any custom alias", user)
|
LOG.d("user %s cannot create any custom alias", user)
|
||||||
return (
|
return (
|
||||||
|
@ -56,7 +56,9 @@ def new_custom_alias():
|
||||||
LOG.d("full alias already used %s", full_alias)
|
LOG.d("full alias already used %s", full_alias)
|
||||||
return jsonify(error=f"alias {full_alias} already exists"), 409
|
return jsonify(error=f"alias {full_alias} already exists"), 409
|
||||||
|
|
||||||
gen_email = GenEmail.create(user_id=user.id, email=full_alias)
|
gen_email = GenEmail.create(
|
||||||
|
user_id=user.id, email=full_alias, mailbox_id=user.default_mailbox_id
|
||||||
|
)
|
||||||
db.session.commit()
|
db.session.commit()
|
||||||
|
|
||||||
if hostname:
|
if hostname:
|
||||||
|
|
|
@ -40,7 +40,7 @@ def new_random_alias():
|
||||||
else:
|
else:
|
||||||
return jsonify(error=f"{mode} must be either word or alias"), 400
|
return jsonify(error=f"{mode} must be either word or alias"), 400
|
||||||
|
|
||||||
gen_email = GenEmail.create_new_random(user_id=user.id, scheme=scheme)
|
gen_email = GenEmail.create_new_random(user=user, scheme=scheme)
|
||||||
db.session.commit()
|
db.session.commit()
|
||||||
|
|
||||||
hostname = request.args.get("hostname")
|
hostname = request.args.get("hostname")
|
||||||
|
|
|
@ -69,8 +69,13 @@ def custom_alias():
|
||||||
"warning",
|
"warning",
|
||||||
)
|
)
|
||||||
else:
|
else:
|
||||||
|
mailbox = Mailbox.get_by(email=mailbox_email)
|
||||||
|
|
||||||
gen_email = GenEmail.create(
|
gen_email = GenEmail.create(
|
||||||
user_id=current_user.id, email=full_alias, note=alias_note
|
user_id=current_user.id,
|
||||||
|
email=full_alias,
|
||||||
|
note=alias_note,
|
||||||
|
mailbox_id=mailbox.id,
|
||||||
)
|
)
|
||||||
|
|
||||||
# get the custom_domain_id if alias is created with a custom domain
|
# get the custom_domain_id if alias is created with a custom domain
|
||||||
|
@ -80,11 +85,6 @@ def custom_alias():
|
||||||
LOG.d("Set alias %s domain to %s", full_alias, custom_domain)
|
LOG.d("Set alias %s domain to %s", full_alias, custom_domain)
|
||||||
gen_email.custom_domain_id = custom_domain.id
|
gen_email.custom_domain_id = custom_domain.id
|
||||||
|
|
||||||
# assign alias to a mailbox
|
|
||||||
mailbox = Mailbox.get_by(email=mailbox_email)
|
|
||||||
gen_email.mailbox_id = mailbox.id
|
|
||||||
LOG.d("Set alias %s mailbox to %s", full_alias, mailbox)
|
|
||||||
|
|
||||||
db.session.commit()
|
db.session.commit()
|
||||||
flash(f"Alias {full_alias} has been created", "success")
|
flash(f"Alias {full_alias} has been created", "success")
|
||||||
|
|
||||||
|
|
|
@ -71,9 +71,7 @@ def index():
|
||||||
)
|
)
|
||||||
if not scheme or not AliasGeneratorEnum.has_value(scheme):
|
if not scheme or not AliasGeneratorEnum.has_value(scheme):
|
||||||
scheme = current_user.alias_generator
|
scheme = current_user.alias_generator
|
||||||
gen_email = GenEmail.create_new_random(
|
gen_email = GenEmail.create_new_random(user=current_user, scheme=scheme)
|
||||||
user_id=current_user.id, scheme=scheme
|
|
||||||
)
|
|
||||||
|
|
||||||
gen_email.mailbox_id = current_user.default_mailbox_id
|
gen_email.mailbox_id = current_user.default_mailbox_id
|
||||||
|
|
||||||
|
|
|
@ -571,11 +571,13 @@ class GenEmail(db.Model, ModelMixin):
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def create_new_random(
|
def create_new_random(
|
||||||
cls, user_id, scheme: int = AliasGeneratorEnum.word.value, in_hex: bool = False
|
cls, user, scheme: int = AliasGeneratorEnum.word.value, in_hex: bool = False
|
||||||
):
|
):
|
||||||
"""create a new random alias"""
|
"""create a new random alias"""
|
||||||
random_email = generate_email(scheme=scheme, in_hex=in_hex)
|
random_email = generate_email(scheme=scheme, in_hex=in_hex)
|
||||||
return GenEmail.create(user_id=user_id, email=random_email)
|
return GenEmail.create(
|
||||||
|
user_id=user.id, email=random_email, mailbox_id=user.default_mailbox_id
|
||||||
|
)
|
||||||
|
|
||||||
def mailbox_email(self):
|
def mailbox_email(self):
|
||||||
if self.mailbox_id:
|
if self.mailbox_id:
|
||||||
|
|
|
@ -184,7 +184,9 @@ def authorize():
|
||||||
return redirect(request.url)
|
return redirect(request.url)
|
||||||
else:
|
else:
|
||||||
gen_email = GenEmail.create(
|
gen_email = GenEmail.create(
|
||||||
user_id=current_user.id, email=full_alias
|
user_id=current_user.id,
|
||||||
|
email=full_alias,
|
||||||
|
mailbox_id=current_user.default_mailbox_id,
|
||||||
)
|
)
|
||||||
|
|
||||||
# get the custom_domain_id if alias is created with a custom domain
|
# get the custom_domain_id if alias is created with a custom domain
|
||||||
|
@ -207,7 +209,9 @@ def authorize():
|
||||||
gen_email = GenEmail.get_by(email=chosen_email)
|
gen_email = GenEmail.get_by(email=chosen_email)
|
||||||
if not gen_email:
|
if not gen_email:
|
||||||
gen_email = GenEmail.create(
|
gen_email = GenEmail.create(
|
||||||
email=chosen_email, user_id=current_user.id
|
email=chosen_email,
|
||||||
|
user_id=current_user.id,
|
||||||
|
mailbox_id=current_user.default_mailbox_id,
|
||||||
)
|
)
|
||||||
db.session.flush()
|
db.session.flush()
|
||||||
|
|
||||||
|
|
|
@ -146,7 +146,10 @@ def try_auto_create_directory(alias: str) -> Optional[GenEmail]:
|
||||||
LOG.d("create alias %s for directory %s", alias, directory)
|
LOG.d("create alias %s for directory %s", alias, directory)
|
||||||
|
|
||||||
gen_email = GenEmail.create(
|
gen_email = GenEmail.create(
|
||||||
email=alias, user_id=directory.user_id, directory_id=directory.id,
|
email=alias,
|
||||||
|
user_id=directory.user_id,
|
||||||
|
directory_id=directory.id,
|
||||||
|
mailbox_id=dir_user.default_mailbox_id,
|
||||||
)
|
)
|
||||||
db.session.commit()
|
db.session.commit()
|
||||||
return gen_email
|
return gen_email
|
||||||
|
@ -191,7 +194,9 @@ def try_auto_create_catch_all_domain(alias: str) -> Optional[GenEmail]:
|
||||||
user_id=custom_domain.user_id,
|
user_id=custom_domain.user_id,
|
||||||
custom_domain_id=custom_domain.id,
|
custom_domain_id=custom_domain.id,
|
||||||
automatic_creation=True,
|
automatic_creation=True,
|
||||||
|
mailbox_id=domain_user.default_mailbox_id,
|
||||||
)
|
)
|
||||||
|
|
||||||
db.session.commit()
|
db.session.commit()
|
||||||
return gen_email
|
return gen_email
|
||||||
|
|
||||||
|
|
|
@ -38,7 +38,7 @@ def test_success_with_pagination(flask_client):
|
||||||
|
|
||||||
# create more aliases than PAGE_LIMIT
|
# create more aliases than PAGE_LIMIT
|
||||||
for _ in range(PAGE_LIMIT + 1):
|
for _ in range(PAGE_LIMIT + 1):
|
||||||
GenEmail.create_new_random(user.id)
|
GenEmail.create_new_random(user)
|
||||||
db.session.commit()
|
db.session.commit()
|
||||||
|
|
||||||
# get aliases on the 1st page, should return PAGE_LIMIT aliases
|
# get aliases on the 1st page, should return PAGE_LIMIT aliases
|
||||||
|
@ -68,7 +68,7 @@ def test_delete_alias(flask_client):
|
||||||
api_key = ApiKey.create(user.id, "for test")
|
api_key = ApiKey.create(user.id, "for test")
|
||||||
db.session.commit()
|
db.session.commit()
|
||||||
|
|
||||||
gen_email = GenEmail.create_new_random(user.id)
|
gen_email = GenEmail.create_new_random(user)
|
||||||
db.session.commit()
|
db.session.commit()
|
||||||
|
|
||||||
r = flask_client.delete(
|
r = flask_client.delete(
|
||||||
|
@ -90,7 +90,7 @@ def test_toggle_alias(flask_client):
|
||||||
api_key = ApiKey.create(user.id, "for test")
|
api_key = ApiKey.create(user.id, "for test")
|
||||||
db.session.commit()
|
db.session.commit()
|
||||||
|
|
||||||
gen_email = GenEmail.create_new_random(user.id)
|
gen_email = GenEmail.create_new_random(user)
|
||||||
db.session.commit()
|
db.session.commit()
|
||||||
|
|
||||||
r = flask_client.post(
|
r = flask_client.post(
|
||||||
|
@ -112,7 +112,7 @@ def test_alias_activities(flask_client):
|
||||||
api_key = ApiKey.create(user.id, "for test")
|
api_key = ApiKey.create(user.id, "for test")
|
||||||
db.session.commit()
|
db.session.commit()
|
||||||
|
|
||||||
gen_email = GenEmail.create_new_random(user.id)
|
gen_email = GenEmail.create_new_random(user)
|
||||||
db.session.commit()
|
db.session.commit()
|
||||||
|
|
||||||
# create some alias log
|
# create some alias log
|
||||||
|
|
|
@ -61,5 +61,5 @@ def test_gen_email_create_random(flask_client):
|
||||||
)
|
)
|
||||||
db.session.commit()
|
db.session.commit()
|
||||||
|
|
||||||
alias = GenEmail.create_new_random(user.id)
|
alias = GenEmail.create_new_random(user)
|
||||||
assert alias.email.endswith(EMAIL_DOMAIN)
|
assert alias.email.endswith(EMAIL_DOMAIN)
|
||||||
|
|
Loading…
Reference in New Issue