remove trial concept

This commit is contained in:
Son NK 2019-11-21 22:44:24 +01:00
parent 8dca65678e
commit 6e71541985
4 changed files with 37 additions and 29 deletions

View File

@ -15,16 +15,18 @@
use it whenever possible, for example on untrusted websites 😎">
Alias
</h3>
<form method="post" class="col text-right">
<input type="hidden" name="form-name" value="create-random-email">
<button class="btn btn-success">Random alias</button>
</form>
{% if current_user.can_create_custom_email() %}
<a href="{{ url_for('dashboard.custom_alias') }}" class="btn btn-primary">
Custom alias
</a>
{% endif %}
<div class="btn-group" role="group">
<form method="post" style="margin-right: 10px">
<input type="hidden" name="form-name" value="create-random-email">
<button class="btn btn-success">Random alias</button>
</form>
<form method="post">
<input type="hidden" name="form-name" value="create-custom-email">
<button class="btn btn-primary">Custom alias</button>
</form>
</div>
</div>
<div class="row row-cards row-deck mt-4">
@ -57,8 +59,12 @@
<div>
Created {{ gen_email.created_at | dt }}
</div>
{% if gen_email.custom %}
<div class="text-success">Custom</div>
{% endif %}
{% if alias_info.highlight %}
<span class="text-success">New</span>
<div class="text-success">New</div>
{% endif %}
</td>

View File

@ -60,6 +60,15 @@ def index():
else:
flash(f"You need to upgrade your plan to create new email.", "warning")
elif request.form.get("form-name") == "create-custom-email":
if current_user.can_create_custom_email():
return redirect(url_for("dashboard.custom_alias"))
else:
flash(
f"You need to upgrade your plan to create new custom email.",
"warning",
)
elif request.form.get("form-name") == "switch-email-forwarding":
gen_email_id = request.form.get("gen-email-id")
gen_email: GenEmail = GenEmail.get(gen_email_id)

View File

@ -111,9 +111,6 @@ class User(db.Model, ModelMixin, UserMixin):
password = random_string(20)
user.set_password(password)
# by default new user will be trial period
user.trial_expiration = arrow.now().shift(days=+15)
db.session.flush()
# create a first alias mail to show user how to use when they login
@ -138,23 +135,23 @@ class User(db.Model, ModelMixin, UserMixin):
return False
def is_trial(self):
return self.trial_expiration is not None and self.trial_expiration > arrow.now()
def can_create_custom_email(self):
if self.is_premium():
return True
elif self.is_trial():
return True
return False
return (
GenEmail.filter_by(user_id=self.id, custom=True).count()
< MAX_NB_EMAIL_FREE_PLAN
)
def can_create_new_email(self):
if self.is_premium():
return True
elif self.is_trial():
return True
else: # free or trial expired
return GenEmail.filter_by(user_id=self.id).count() < MAX_NB_EMAIL_FREE_PLAN
else:
return (
GenEmail.filter_by(user_id=self.id, custom=False).count()
< MAX_NB_EMAIL_FREE_PLAN
)
def set_password(self, password):
salt = bcrypt.gensalt()
@ -206,9 +203,6 @@ class User(db.Model, ModelMixin, UserMixin):
return "Monthly ($2.99/month)"
else:
return "Yearly ($29.99/year)"
elif self.is_trial():
return "Trial"
else:
return "Free Plan"
@ -409,9 +403,9 @@ class GenEmail(db.Model, ModelMixin):
user = db.relationship(User)
@classmethod
def create_new_gen_email(cls, user_id):
def create_new_gen_email(cls, user_id, custom=False):
random_email = generate_email()
return GenEmail.create(user_id=user_id, email=random_email)
return GenEmail.create(user_id=user_id, email=random_email, custom=custom)
def __repr__(self):
return f"<GenEmail {self.id} {self.email}>"

View File

@ -40,7 +40,6 @@ def test_suggested_emails_for_user_who_cannot_create_new_email(flask_client):
user = User.create(
email="a@b.c", password="password", name="Test User", activated=True
)
user.trial_expiration = arrow.now().shift(days=-1)
db.session.commit()
# make sure user runs out of quota to create new email