diff --git a/app/dashboard/templates/dashboard/setting.html b/app/dashboard/templates/dashboard/setting.html index 16322884..233915c6 100644 --- a/app/dashboard/templates/dashboard/setting.html +++ b/app/dashboard/templates/dashboard/setting.html @@ -247,6 +247,22 @@ + +
Select the default suffix generator for aliases.
+
+ + + +
+ diff --git a/app/dashboard/views/custom_alias.py b/app/dashboard/views/custom_alias.py index 5a080a19..d96b7f05 100644 --- a/app/dashboard/views/custom_alias.py +++ b/app/dashboard/views/custom_alias.py @@ -23,6 +23,7 @@ from app.models import ( User, AliasMailbox, DomainDeletedAlias, + AliasSuffixEnum, ) from app.utils import random_word, word_exist, random_string @@ -259,7 +260,7 @@ def get_suffix(user: User) -> str: Returns: str: the random suffix generated """ - if user.random_alias_suffix: + if user.random_alias_suffix == AliasSuffixEnum.rnd_string.value: return random_string(ALIAS_RAND_SUFFIX_LENGTH, include_digits = True) return random_word() diff --git a/app/dashboard/views/setting.py b/app/dashboard/views/setting.py index b4b837d8..3c1f906a 100644 --- a/app/dashboard/views/setting.py +++ b/app/dashboard/views/setting.py @@ -15,7 +15,7 @@ from wtforms import StringField, validators from wtforms.fields.html5 import EmailField from app import s3, email_utils -from app.config import URL, FIRST_ALIAS_DOMAIN, JOB_DELETE_ACCOUNT +from app.config import URL, FIRST_ALIAS_DOMAIN, JOB_DELETE_ACCOUNT, ALIAS_RAND_SUFFIX_LENGTH from app.dashboard.base import dashboard_bp from app.email_utils import ( email_can_be_used_as_mailbox, @@ -32,6 +32,7 @@ from app.models import ( Alias, CustomDomain, AliasGeneratorEnum, + AliasSuffixEnum, ManualSubscription, SenderFormatEnum, SLDomain, @@ -240,6 +241,14 @@ def setting(): flash("Your preference has been updated", "success") return redirect(url_for("dashboard.setting")) + elif request.form.get("form-name") == "random-alias-suffix": + scheme = int(request.form.get("random-alias-suffix-generator")) + if AliasSuffixEnum.has_value(scheme): + current_user.random_alias_suffix = scheme + db.session.commit() + flash("Your preference has been updated", "success") + return redirect(url_for("dashboard.setting")) + elif request.form.get("form-name") == "change-sender-format": sender_format = int(request.form.get("sender-format")) if SenderFormatEnum.has_value(sender_format): @@ -292,6 +301,7 @@ def setting(): apple_sub=apple_sub, coinbase_sub=coinbase_sub, FIRST_ALIAS_DOMAIN=FIRST_ALIAS_DOMAIN, + ALIAS_RAND_SUFFIX_LENGTH=ALIAS_RAND_SUFFIX_LENGTH, ) diff --git a/app/models.py b/app/models.py index 6ef39f94..d1fb71f5 100644 --- a/app/models.py +++ b/app/models.py @@ -161,6 +161,9 @@ class AliasGeneratorEnum(EnumE): word = 1 # aliases are generated based on random words uuid = 2 # aliases are generated based on uuid +class AliasSuffixEnum(EnumE): + word = 0 # Random word from dictionary file + rnd_string = 1 # Completely random string class Fido(db.Model, ModelMixin): __tablename__ = "fido" @@ -288,8 +291,12 @@ class User(db.Model, ModelMixin, UserMixin): ) # whether to use random string or random word as suffix + # Random word from dictionary file -> 0 + # Completely random string -> 1 random_alias_suffix = db.Column( - db.Boolean, default=True, nullable=False, server_default="1" + db.Integer, nullable=False, + default=AliasSuffixEnum.rnd_string.value, + server_default=str(AliasSuffixEnum.rnd_string.value), ) @classmethod