2019-12-02 14:29:34 +00:00
|
|
|
from datetime import datetime
|
|
|
|
|
|
2022-04-06 17:05:05 +01:00
|
|
|
from flask import render_template, url_for
|
2016-05-11 09:43:55 +01:00
|
|
|
from werkzeug.utils import redirect
|
2018-02-20 11:22:17 +00:00
|
|
|
|
2022-04-06 11:56:05 +01:00
|
|
|
from app import provider_client
|
2016-05-11 09:43:55 +01:00
|
|
|
from app.main import main
|
2022-04-06 12:53:12 +01:00
|
|
|
from app.main.forms import AdminProviderRatioForm
|
2021-06-09 13:19:05 +01:00
|
|
|
from app.utils.user import user_is_platform_admin
|
2016-05-11 09:43:55 +01:00
|
|
|
|
2019-12-03 17:54:57 +00:00
|
|
|
PROVIDER_PRIORITY_MEANING_SWITCHOVER = datetime(2019, 11, 29, 11, 0).isoformat()
|
2019-12-02 14:29:34 +00:00
|
|
|
|
2016-05-11 09:43:55 +01:00
|
|
|
|
|
|
|
|
@main.route("/providers")
|
2018-02-27 16:45:20 +00:00
|
|
|
@user_is_platform_admin
|
2016-05-11 09:43:55 +01:00
|
|
|
def view_providers():
|
2023-08-25 09:12:23 -07:00
|
|
|
providers = provider_client.get_all_providers()["provider_details"]
|
2017-04-25 11:10:59 +01:00
|
|
|
domestic_email_providers, domestic_sms_providers, intl_sms_providers = [], [], []
|
|
|
|
|
for provider in providers:
|
2023-08-25 09:12:23 -07:00
|
|
|
if provider["notification_type"] == "sms":
|
2017-04-25 11:10:59 +01:00
|
|
|
domestic_sms_providers.append(provider)
|
2023-08-25 09:12:23 -07:00
|
|
|
if provider.get("supports_international", None):
|
2017-04-25 11:10:59 +01:00
|
|
|
intl_sms_providers.append(provider)
|
2023-08-25 09:12:23 -07:00
|
|
|
elif provider["notification_type"] == "email":
|
2017-04-25 11:10:59 +01:00
|
|
|
domestic_email_providers.append(provider)
|
|
|
|
|
|
2019-04-26 16:47:16 +01:00
|
|
|
add_monthly_traffic(domestic_sms_providers)
|
|
|
|
|
|
2017-01-17 15:21:05 +00:00
|
|
|
return render_template(
|
2023-08-25 09:12:23 -07:00
|
|
|
"views/providers/providers.html",
|
2017-04-25 11:10:59 +01:00
|
|
|
email_providers=domestic_email_providers,
|
|
|
|
|
domestic_sms_providers=domestic_sms_providers,
|
2023-08-25 09:12:23 -07:00
|
|
|
intl_sms_providers=intl_sms_providers,
|
2017-01-17 15:21:05 +00:00
|
|
|
)
|
2016-05-11 09:43:55 +01:00
|
|
|
|
|
|
|
|
|
2019-04-26 16:47:16 +01:00
|
|
|
def add_monthly_traffic(domestic_sms_providers):
|
2023-08-25 09:12:23 -07:00
|
|
|
total_sms_sent = sum(
|
|
|
|
|
provider["current_month_billable_sms"] for provider in domestic_sms_providers
|
|
|
|
|
)
|
2019-04-26 16:47:16 +01:00
|
|
|
|
|
|
|
|
for provider in domestic_sms_providers:
|
2023-08-25 09:12:23 -07:00
|
|
|
percentage = (
|
|
|
|
|
(provider["current_month_billable_sms"] / total_sms_sent * 100)
|
|
|
|
|
if total_sms_sent
|
|
|
|
|
else 0
|
|
|
|
|
)
|
|
|
|
|
provider["monthly_traffic"] = round(percentage)
|
2019-04-26 16:47:16 +01:00
|
|
|
|
|
|
|
|
|
2023-08-25 09:12:23 -07:00
|
|
|
@main.route("/provider/edit-sms-provider-ratio", methods=["GET", "POST"])
|
2019-12-02 14:29:34 +00:00
|
|
|
@user_is_platform_admin
|
|
|
|
|
def edit_sms_provider_ratio():
|
2022-04-06 17:07:02 +01:00
|
|
|
providers = [
|
2019-12-02 14:29:34 +00:00
|
|
|
provider
|
2023-08-25 09:12:23 -07:00
|
|
|
for provider in provider_client.get_all_providers()["provider_details"]
|
|
|
|
|
if provider["notification_type"] == "sms" and provider["active"]
|
2022-04-06 17:07:02 +01:00
|
|
|
]
|
2019-12-02 14:29:34 +00:00
|
|
|
|
2022-04-06 15:08:28 +01:00
|
|
|
form = AdminProviderRatioForm(providers)
|
2019-12-02 18:15:00 +00:00
|
|
|
|
2019-12-03 17:54:57 +00:00
|
|
|
if form.validate_on_submit():
|
2022-04-06 15:08:28 +01:00
|
|
|
for provider in providers:
|
2023-08-25 09:12:23 -07:00
|
|
|
field = getattr(form, provider["identifier"])
|
|
|
|
|
provider_client.update_provider(provider["id"], field.data)
|
|
|
|
|
return redirect(url_for(".view_providers"))
|
2019-12-03 17:54:57 +00:00
|
|
|
|
2019-12-02 14:29:34 +00:00
|
|
|
return render_template(
|
2023-08-25 09:12:23 -07:00
|
|
|
"views/providers/edit-sms-provider-ratio.html", form=form, providers=providers
|
2019-12-02 14:29:34 +00:00
|
|
|
)
|
|
|
|
|
|
|
|
|
|
|
2019-11-04 11:07:55 +00:00
|
|
|
@main.route("/provider/<uuid:provider_id>")
|
2018-02-27 16:45:20 +00:00
|
|
|
@user_is_platform_admin
|
2017-03-02 22:53:51 +00:00
|
|
|
def view_provider(provider_id):
|
|
|
|
|
versions = provider_client.get_provider_versions(provider_id)
|
2023-08-25 09:12:23 -07:00
|
|
|
return render_template(
|
|
|
|
|
"views/providers/provider.html", provider_versions=versions["data"]
|
|
|
|
|
)
|