btcpay working! added bitpay client code to source tree to fix a bug

fixed a stripe race condition

added account balance warning to account balance page
This commit is contained in:
2020-05-15 18:18:19 -05:00
parent 67120e9461
commit e9dcf80f6c
17 changed files with 438 additions and 139 deletions

View File

@ -1,6 +1,6 @@
import re
import sys
from datetime import datetime
from datetime import datetime, timedelta
from flask import Blueprint
from flask import flash
from flask import current_app
@ -15,6 +15,7 @@ from nanoid import generate
from capsulflask.metrics import durations as metric_durations
from capsulflask.auth import account_required
from capsulflask.db import get_model, my_exec_info_message
from capsulflask import cli
bp = Blueprint("console", __name__, url_prefix="/console")
@ -74,18 +75,18 @@ def detail(id):
return abort(404, f"{id} doesn't exist.")
if vm['deleted']:
return render_template("capsul-detail.html", vm=vm, delete=True, are_you_sure=True)
return render_template("capsul-detail.html", vm=vm, delete=True, deleted=True)
if request.method == "POST":
if 'are_you_sure' not in request.form or not request.form['are_you_sure']:
return render_template("capsul-detail.html", vm=vm, delete=True, are_you_sure=False)
return render_template("capsul-detail.html", vm=vm, delete=True, deleted=False)
else:
print(f"deleting {vm['id']} per user request ({session['account']})")
current_app.config["VIRTUALIZATION_MODEL"].destroy(email=session['account'], id=id)
get_model().delete_vm(email=session['account'], id=id)
return render_template("capsul-detail.html", vm=vm, delete=True, are_you_sure=True)
return render_template("capsul-detail.html", vm=vm, delete=True, deleted=True)
else:
vm["ipv4"] = double_check_capsul_address(vm["id"], vm["ipv4"])
@ -277,7 +278,22 @@ def get_account_balance(vms, payments, as_of):
@account_required
def account_balance():
payments = get_payments()
account_balance = get_account_balance(get_vms(), payments, datetime.utcnow())
vms = get_vms()
balance_1w = get_account_balance(vms, payments, datetime.utcnow() + timedelta(days=7))
balance_1d = get_account_balance(vms, payments, datetime.utcnow() + timedelta(days=1))
balance_now = get_account_balance(vms, payments, datetime.utcnow())
warning_index = -1
warning_text = ""
warnings = cli.get_warnings_list()
for i in range(0, len(warnings)):
if warnings[i]['get_active'](balance_1w, balance_1d, balance_now):
warning_index = i
if warning_index > -1:
pluralize_capsul = "s" if len(vms) > 1 else ""
warning_id = warnings[warning_index]['id']
warning_text = cli.get_warning_headline(warning_id, pluralize_capsul)
vms_billed = list()
@ -299,6 +315,7 @@ def account_balance():
"account-balance.html",
has_vms=len(vms_billed)>0,
vms_billed=vms_billed,
warning_text=warning_text,
payments=list(map(
lambda x: dict(
dollars=x["dollars"],
@ -308,5 +325,5 @@ def account_balance():
payments
)),
has_payments=len(payments)>0,
account_balance=format(account_balance, '.2f')
account_balance=format(balance_now, '.2f')
)