User can generate quickly a random alias

This commit is contained in:
Son NK 2019-12-23 15:34:02 +00:00
parent a8d112646e
commit bcbe239f60
4 changed files with 40 additions and 6 deletions

View File

@ -28,7 +28,17 @@
<div class="btn-group float-right" role="group">
<form method="post">
<input type="hidden" name="form-name" value="create-custom-email">
<button class="btn btn-primary">Create Email Alias</button>
<button data-toggle="tooltip"
title="Create a custom alias"
class="btn btn-primary mr-2">New Email Alias
</button>
</form>
<form method="post">
<input type="hidden" name="form-name" value="create-random-email">
<button data-toggle="tooltip"
title="Create a totally random alias"
class="btn btn-success">Random Alias
</button>
</form>
</div>
</div>

View File

@ -53,10 +53,18 @@ def index():
if current_user.can_create_new_alias():
return redirect(url_for("dashboard.custom_alias"))
else:
flash(
f"You need to upgrade your plan to create new custom alias.",
"warning",
)
flash(f"You need to upgrade your plan to create new alias.", "warning")
elif request.form.get("form-name") == "create-random-email":
if current_user.can_create_new_alias():
gen_email = GenEmail.create_new_random(user_id=current_user.id)
db.session.commit()
LOG.d("generate new email %s for user %s", gen_email, current_user)
flash(f"Alias {gen_email.email} has been created", "success")
session[HIGHLIGHT_GEN_EMAIL_ID] = gen_email.id
else:
flash(f"You need to upgrade your plan to create new alias.", "warning")
elif request.form.get("form-name") == "switch-email-forwarding":
gen_email_id = request.form.get("gen-email-id")
@ -85,7 +93,7 @@ def index():
DeletedAlias.create(user_id=current_user.id, email=gen_email.email)
db.session.commit()
flash(f"Email alias {email} has been deleted", "success")
flash(f"Alias {email} has been deleted", "success")
return redirect(url_for("dashboard.index", query=query))

View File

@ -407,6 +407,12 @@ class GenEmail(db.Model, ModelMixin):
return GenEmail.create(user_id=user_id, email=email)
@classmethod
def create_new_random(cls, user_id):
"""create a new random alias"""
random_email = generate_email()
return GenEmail.create(user_id=user_id, email=random_email)
def __repr__(self):
return f"<GenEmail {self.id} {self.email}>"

View File

@ -38,3 +38,13 @@ def test_suggested_emails_for_user_who_cannot_create_new_email(flask_client):
# all other emails are generated emails
for email in other_emails:
assert GenEmail.get_by(email=email)
def test_gen_email_create_random(flask_client):
user = User.create(
email="a@b.c", password="password", name="Test User", activated=True
)
db.session.commit()
alias = GenEmail.create_new_random(user.id)
assert alias.email.endswith(EMAIL_DOMAIN)