app-MAIL-temp/app/dashboard/views/pricing.py

59 lines
1.8 KiB
Python
Raw Normal View History

from coinbase_commerce import Client
2019-11-14 15:05:20 +01:00
from flask import render_template, flash, redirect, url_for
from flask_login import login_required, current_user
from app.config import (
PADDLE_VENDOR_ID,
PADDLE_MONTHLY_PRODUCT_ID,
PADDLE_YEARLY_PRODUCT_ID,
URL,
COINBASE_YEARLY_PRICE,
COINBASE_API_KEY,
2019-11-14 15:05:20 +01:00
)
from app.dashboard.base import dashboard_bp
from app.log import LOG
from app.models import AppleSubscription
2019-11-14 15:05:20 +01:00
@dashboard_bp.route("/pricing", methods=["GET", "POST"])
@login_required
def pricing():
if not current_user.can_upgrade():
2019-11-14 15:05:20 +01:00
flash("You are already a premium user", "warning")
return redirect(url_for("dashboard.index"))
apple_sub: AppleSubscription = AppleSubscription.get_by(user_id=current_user.id)
if apple_sub and apple_sub.is_valid():
flash("Please make sure to cancel your subscription on Apple first", "warning")
2019-11-14 15:05:20 +01:00
return render_template(
"dashboard/pricing.html",
PADDLE_VENDOR_ID=PADDLE_VENDOR_ID,
PADDLE_MONTHLY_PRODUCT_ID=PADDLE_MONTHLY_PRODUCT_ID,
PADDLE_YEARLY_PRODUCT_ID=PADDLE_YEARLY_PRODUCT_ID,
success_url=URL + "/dashboard/subscription_success",
)
@dashboard_bp.route("/subscription_success")
@login_required
def subscription_success():
flash("Thanks so much for supporting SimpleLogin!", "success")
return redirect(url_for("dashboard.index"))
@dashboard_bp.route("/coinbase_checkout")
@login_required
def coinbase_checkout_route():
client = Client(api_key=COINBASE_API_KEY)
charge = client.charge.create(
2020-12-14 11:52:35 +01:00
name="1 Year SimpleLogin Premium Subscription",
local_price={"amount": str(COINBASE_YEARLY_PRICE), "currency": "USD"},
pricing_type="fixed_price",
metadata={"user_id": current_user.id},
)
LOG.d("Create coinbase charge %s", charge)
return redirect(charge["hosted_url"])