diff --git a/c3l_membership/views.py b/c3l_membership/views.py --- a/c3l_membership/views.py +++ b/c3l_membership/views.py @@ -2,6 +2,7 @@ import re import subprocess from datetime import date +import requests from flask import Blueprint, current_app, g, render_template, request from flask_babel import gettext from flask_weasyprint import HTML, render_pdf @@ -42,7 +43,7 @@ def index(): choices.append( ( cryptocurrency_label, - " ".format((gettext("by"), options)), + " ".join((gettext("by"), cryptocurrency_label.title())), ), ) @@ -65,14 +66,15 @@ def index(): if form.starving.data: price = 1 - xml_data["status"] = "Starving" + status = "Starving" elif form.minor_member.data or form.student.data: - xml_data["status"] = "Student" + status = "Student" elif form.membership.data == "supporting": - xml_data["status"] = "Supporter" + status = "Supporter" else: - xml_data["status"] = "Regular" + status = "Regular" + xml_data["status"] = status xml_data["name"] = form.fullname.data xml_data["birthday"] = ( form.birthday.data if form.birthday.data is not None else date(9999, 12, 12) @@ -91,15 +93,20 @@ def index(): xml_data["address"] = re.sub("\s+", " ", xml_data["address"]) if form.payment.data in current_app.config["CRYPTOCURRENCIES"]: - price = subprocess.run( - [ - current_app.config["CRYPTOCURRENCIES_CONVERSION_SCRIPT"], - str(price), - form.payment.data, - ], - capture_output=True, - encoding="utf-8", - ).stdout + + current_conversion_r = requests.get( + current_app.config["CONVERSION_URL"], timeout=30 + ) + try: + current_conversion_r.raise_for_status() + except: + return 500 + else: + current_conversion = current_conversion_r.json() + commodity = current_app.config["CRYPTOCURRENCIES"][form.payment.data][ + "COMMODITY" + ] + price = current_conversion[commodity][status.upper()] elif form.payment.data == "digicash": price = price * 100