Show premium subscription managed by partner (#1112)

This commit is contained in:
Carlos Quintana 2022-06-27 13:17:30 +02:00 committed by GitHub
parent de31e6d072
commit f58c4a9a50
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 28 additions and 1 deletions

View file

@ -12,7 +12,7 @@ from flask_login import login_required, current_user
from flask_wtf import FlaskForm from flask_wtf import FlaskForm
from flask_wtf.file import FileField from flask_wtf.file import FileField
from newrelic import agent from newrelic import agent
from typing import Optional from typing import Optional, Tuple
from wtforms import StringField, validators from wtforms import StringField, validators
from wtforms.fields.html5 import EmailField from wtforms.fields.html5 import EmailField
@ -48,6 +48,7 @@ from app.models import (
CoinbaseSubscription, CoinbaseSubscription,
AppleSubscription, AppleSubscription,
PartnerUser, PartnerUser,
PartnerSubscription,
) )
from app.proton.utils import is_connect_with_proton_enabled, get_proton_partner from app.proton.utils import is_connect_with_proton_enabled, get_proton_partner
from app.utils import random_string, sanitize_email from app.utils import random_string, sanitize_email
@ -84,6 +85,17 @@ def get_proton_linked_account() -> Optional[str]:
return proton_linked_account.partner_email return proton_linked_account.partner_email
def get_partner_subscription_and_name(
user_id: int,
) -> Optional[Tuple[PartnerSubscription, str]]:
partner_sub = PartnerSubscription.find_by_user_id(user_id)
if not partner_sub or not partner_sub.is_active():
return None
partner = partner_sub.partner_user.partner
return (partner_sub, partner.name)
@dashboard_bp.route("/setting", methods=["GET", "POST"]) @dashboard_bp.route("/setting", methods=["GET", "POST"])
@login_required @login_required
def setting(): def setting():
@ -358,6 +370,13 @@ def setting():
manual_sub = ManualSubscription.get_by(user_id=current_user.id) manual_sub = ManualSubscription.get_by(user_id=current_user.id)
apple_sub = AppleSubscription.get_by(user_id=current_user.id) apple_sub = AppleSubscription.get_by(user_id=current_user.id)
coinbase_sub = CoinbaseSubscription.get_by(user_id=current_user.id) coinbase_sub = CoinbaseSubscription.get_by(user_id=current_user.id)
partner_sub = None
partner_name = None
partner_sub_name = get_partner_subscription_and_name(current_user.id)
if partner_sub_name:
partner_sub, partner_name = partner_sub_name
proton_linked_account = get_proton_linked_account() proton_linked_account = get_proton_linked_account()
return render_template( return render_template(
@ -371,6 +390,8 @@ def setting():
pending_email=pending_email, pending_email=pending_email,
AliasGeneratorEnum=AliasGeneratorEnum, AliasGeneratorEnum=AliasGeneratorEnum,
manual_sub=manual_sub, manual_sub=manual_sub,
partner_sub=partner_sub,
partner_name=partner_name,
apple_sub=apple_sub, apple_sub=apple_sub,
coinbase_sub=coinbase_sub, coinbase_sub=coinbase_sub,
FIRST_ALIAS_DOMAIN=FIRST_ALIAS_DOMAIN, FIRST_ALIAS_DOMAIN=FIRST_ALIAS_DOMAIN,

View file

@ -70,6 +70,12 @@
</a> </a>
</div> </div>
{% endif %} {% endif %}
{% if partner_sub %}
<div>
Premium subscription managed by {{ partner_name }}.
</div>
{% endif %}
{% elif current_user.in_trial() %} {% elif current_user.in_trial() %}
Your Premium trial expires {{ current_user.trial_end | dt }}. Your Premium trial expires {{ current_user.trial_end | dt }}.
{% else %} {% else %}