improve notification type conversion

This commit is contained in:
lucasheld 2022-08-02 21:32:28 +02:00
parent d29d908b61
commit b92263dd47
9 changed files with 365 additions and 172 deletions

View file

@ -0,0 +1,14 @@
from uptime_kuma_api import params_map_notification_providers, notification_provider_options, params_map_notification_provider_options, convert_from_socket
for provider_sock, provider_py in params_map_notification_providers.items():
options = notification_provider_options[provider_sock]
tmp = options
params_map = params_map_notification_provider_options[provider_py]
options = convert_from_socket(params_map, options)
for option in options:
print(f'{option}:')
print(f' description: {provider_py} provider option.')
print(f' returned: if type is {provider_py}')
print(' type: str')

View file

@ -5,7 +5,7 @@ from pprint import pprint
import jinja2
from bs4 import BeautifulSoup
from uptime_kuma_api import convert_from_socket, params_map_notification_provider
from uptime_kuma_api import convert_from_socket, params_map_notification_provider_options
def deduplicate_list(l):
@ -61,7 +61,7 @@ def build_notification_provider_conditions():
param_name = re.match(r'\$parent.notification.(.*)$', v_model).group(1)
if condition:
conditions[param_name] = condition
conditions = convert_from_socket(params_map_notification_provider, conditions)
conditions = convert_from_socket(params_map_notification_provider_options, conditions)
return conditions

View file

@ -1,28 +0,0 @@
import re
import os
from uptime_kuma_api import notification_provider_options
def build_notification_provider_map():
params_map_notification_providers = {}
for notification_provider in notification_provider_options:
options = notification_provider_options[notification_provider]
provider_name = notification_provider.__dict__["_value_"].lower().replace(".", "")
for option in options:
option_orig = option
prefix = os.path.commonprefix([o.lower() for o in options] + [provider_name])
option = option[len(prefix):]
option = re.sub('([A-Z]+)', r'_\1', option).lower()
option = provider_name + "_" + option
option = option.replace("__", "_")
params_map_notification_providers[option_orig] = option
return params_map_notification_providers
notification_provider_map = build_notification_provider_map()
print("params_map_notification_provider =", notification_provider_map)

View file

@ -0,0 +1,10 @@
params_map_notification_provider_options = {
{%- for provider in notification_provider_map %}
{%- set options = notification_provider_map[provider] %}
'{{ provider }}': {
{%- for key, value in options.items() %}
'{{ key }}': '{{ value }}',
{%- endfor %}
},
{%- endfor %}
}

View file

@ -0,0 +1,40 @@
import re
import os
import jinja2
from uptime_kuma_api import params_map_notification_providers, notification_provider_options
def build_notification_provider_map():
params_map_notification_provider_options = {}
for provider_sock, provider_py in params_map_notification_providers.items():
options_sock = notification_provider_options[provider_sock]
params_map_notification_provider_options[provider_py] = {}
for option in options_sock:
option_orig = option
# for example for rocket_chat
prefix = os.path.commonprefix([o.lower() for o in options_sock] + [provider_py])
option = option[len(prefix):]
option = re.sub('([A-Z]+)', r'_\1', option).lower()
# for example for smtp
if option.startswith(provider_py):
option = option[len(provider_py):]
option = provider_py + "_" + option
option = option.replace("__", "_")
params_map_notification_provider_options[provider_py][option_orig] = option
return params_map_notification_provider_options
notification_provider_map = build_notification_provider_map()
env = jinja2.Environment(loader=jinja2.FileSystemLoader("./"))
template = env.get_template("build_params_map_notification_provider_options.j2")
rendered = template.render(notification_provider_map=notification_provider_map)
print(rendered)

View file

@ -0,0 +1,12 @@
import re
from uptime_kuma_api import notification_provider_options
params_map_notification_providers = {}
for notification_provider in notification_provider_options:
provider_name_orig = notification_provider.__dict__["_value_"]
provider_name = re.sub('([A-Z]+)', r'_\1', provider_name_orig).lower().replace(".", "_").strip("_")
params_map_notification_providers[provider_name_orig] = provider_name
print(params_map_notification_providers)