refactor and fix catch-all domain

This commit is contained in:
Son NK 2020-02-20 15:36:02 +07:00
parent e0e508012b
commit f416dc6af6
1 changed files with 20 additions and 1 deletions

View File

@ -94,6 +94,17 @@ def new_app():
def try_auto_create(alias: str) -> Optional[GenEmail]:
"""Try to auto-create the alias using directory or catch-all domain
"""
gen_email = try_auto_create_catch_all_domain(alias)
if not gen_email:
gen_email = try_auto_create_directory(alias)
return gen_email
def try_auto_create_directory(alias: str) -> Optional[GenEmail]:
"""
Try to create an alias with directory
"""
# check if alias belongs to a directory, ie having directory/anything@EMAIL_DOMAIN format
if email_belongs_to_alias_domains(alias):
# if there's no directory separator in the alias, no way to auto-create it
@ -139,12 +150,20 @@ def try_auto_create(alias: str) -> Optional[GenEmail]:
db.session.commit()
return gen_email
def try_auto_create_catch_all_domain(alias: str) -> Optional[GenEmail]:
"""Try to create an alias with catch-all domain"""
# try to create alias on-the-fly with custom-domain catch-all feature
# check if alias is custom-domain alias and if the custom-domain has catch-all enabled
alias_domain = get_email_domain_part(alias)
custom_domain = CustomDomain.get_by(domain=alias_domain)
if not custom_domain or custom_domain.catch_all:
if not custom_domain:
return None
# custom_domain exists
if not custom_domain.catch_all:
return None
# custom_domain has catch-all enabled