From 6c07d1dd1b69b9bc2f59c8c929b50fbb5b06c0b4 Mon Sep 17 00:00:00 2001 From: darta Date: Tue, 28 Dec 2021 22:34:14 +0100 Subject: [PATCH] refactor(api): black --- docker/api/src/api/__init__.py | 58 ++++++--------- docker/api/src/api/lib/avatars.py | 61 ++++++++-------- docker/api/src/api/lib/load_config.py | 13 ++-- docker/api/src/api/lib/menu.py | 90 +++++++++++++++--------- docker/api/src/api/views/AvatarsViews.py | 31 +++++--- docker/api/src/api/views/MenuViews.py | 44 +++++++----- docker/api/src/start.py | 4 +- docker/keycloak-client/kcli.py | 26 ++++--- 8 files changed, 185 insertions(+), 142 deletions(-) diff --git a/docker/api/src/api/__init__.py b/docker/api/src/api/__init__.py index 2117ef3..8284551 100644 --- a/docker/api/src/api/__init__.py +++ b/docker/api/src/api/__init__.py @@ -1,65 +1,53 @@ #!flask/bin/python # coding=utf-8 -import os import logging as log +import os -from flask import Flask, send_from_directory, render_template -app = Flask(__name__, static_url_path='') -app = Flask(__name__, template_folder='static/templates') +from flask import Flask, render_template, send_from_directory + +app = Flask(__name__, static_url_path="") +app = Flask(__name__, template_folder="static/templates") app.url_map.strict_slashes = False -''' +""" App secret key for encrypting cookies You can generate one with: import os os.urandom(24) And paste it here. -''' +""" app.secret_key = "Change this key!//\xf7\x83\xbe\x17\xfa\xa3zT\n\\]m\xa6\x8bF\xdd\r\xf7\x9e\x1d\x1f\x14'" -print('Starting isard-sso api...') +print("Starting isard-sso api...") from api.lib.load_config import loadConfig + try: loadConfig(app) except: - print('Could not get environment variables...') + print("Could not get environment variables...") - -''' +""" Debug should be removed on production! -''' +""" if app.debug: - log.warning('Debug mode: {}'.format(app.debug)) + log.warning("Debug mode: {}".format(app.debug)) else: - log.info('Debug mode: {}'.format(app.debug)) + log.info("Debug mode: {}".format(app.debug)) -''' +""" Serve static files -''' -@app.route('/templates/') +""" + + +@app.route("/templates/") def send_templates(path): - return send_from_directory(os.path.join(app.root_path, 'static/templates'), path) + return send_from_directory(os.path.join(app.root_path, "static/templates"), path) -# @app.route('/static/') -# def send_static_js(path): -# return send_from_directory(os.path.join(app.root_path, 'static'), path) -# @app.errorhandler(404) -# def not_found_error(error): -# return render_template('page_404.html'), 404 - -# @app.errorhandler(500) -# def internal_error(error): -# return render_template('page_500.html'), 500 - -''' +""" Import all views -''' -from .views import MenuViews -from .views import AvatarsViews - - - +""" +from .views import AvatarsViews, MenuViews diff --git a/docker/api/src/api/lib/avatars.py b/docker/api/src/api/lib/avatars.py index 1ba9f96..b0e2d9d 100644 --- a/docker/api/src/api/lib/avatars.py +++ b/docker/api/src/api/lib/avatars.py @@ -1,51 +1,52 @@ #!/usr/bin/env python # coding=utf-8 -import time -from api import app as application -from datetime import datetime, timedelta -import pprint - +import json import logging -import traceback -import yaml, json - import os +import pprint +import time +import traceback +from datetime import datetime, timedelta + +import yaml from keycloak import KeycloakAdmin +from api import app as application -class Avatars(): - def __init__(self, - url="http://isard-sso-keycloak:8080/auth/", - username=os.environ['KEYCLOAK_USER'], - password=os.environ['KEYCLOAK_PASSWORD'], - realm='master', - verify=True): - self.url=url - self.username=username - self.password=password - self.realm=realm - self.verify=verify +class Avatars: + def __init__( + self, + url="http://isard-sso-keycloak:8080/auth/", + username=os.environ["KEYCLOAK_USER"], + password=os.environ["KEYCLOAK_PASSWORD"], + realm="master", + verify=True, + ): + self.url = url + self.username = username + self.password = password + self.realm = realm + self.verify = verify def connect(self): - self.keycloak_admin = KeycloakAdmin(server_url=self.url, - username=self.username, - password=self.password, - realm_name=self.realm, - verify=self.verify) + self.keycloak_admin = KeycloakAdmin( + server_url=self.url, + username=self.username, + password=self.password, + realm_name=self.realm, + verify=self.verify, + ) - def get_user_avatar(self,username): + def get_user_avatar(self, username): self.connect() return self.keycloak_admin.get_user_id(username) - - - # # Add user # new_user = keycloak_admin.create_user({"email": "example@example.com", # "username": "example@example.com", # "enabled": True, # "firstName": "Example", # "lastName": "Example"}) -# print(new_user) \ No newline at end of file +# print(new_user) diff --git a/docker/api/src/api/lib/load_config.py b/docker/api/src/api/lib/load_config.py index a3f2640..42f0dee 100644 --- a/docker/api/src/api/lib/load_config.py +++ b/docker/api/src/api/lib/load_config.py @@ -1,17 +1,18 @@ #!/usr/bin/env python # coding=utf-8 -from api import app - -import os, sys import logging as log +import os +import sys import traceback -class loadConfig(): +from api import app - def __init__(self, app=None): + +class loadConfig: + def __init__(self, app=None): try: - app.config.setdefault('DOMAIN', os.environ['DOMAIN']) + app.config.setdefault("DOMAIN", os.environ["DOMAIN"]) except Exception as e: log.error(traceback.format_exc()) diff --git a/docker/api/src/api/lib/menu.py b/docker/api/src/api/lib/menu.py index 68f4bce..69e7122 100644 --- a/docker/api/src/api/lib/menu.py +++ b/docker/api/src/api/lib/menu.py @@ -4,22 +4,23 @@ # Josep Maria ViƱolas Auquer # Alberto Larraz Dalmases # License: AGPLv3 -import time -from api import app as application -from datetime import datetime, timedelta -import pprint - +import json import logging +import pprint +import time import traceback -import yaml, json +from datetime import datetime, timedelta +import yaml from jinja2 import Environment, FileSystemLoader +from api import app as application + def write_css(): - env = Environment(loader=FileSystemLoader('api/static/_templates')) - css_template = env.get_template('dd.css') - with open('menu/custom.yaml', 'r') as menu_custom_file: + env = Environment(loader=FileSystemLoader("api/static/_templates")) + css_template = env.get_template("dd.css") + with open("menu/custom.yaml", "r") as menu_custom_file: menu_custom_yaml = menu_custom_file.read() menu_custom = yaml.full_load(menu_custom_yaml) css = css_template.render(data=menu_custom) @@ -27,51 +28,74 @@ def write_css(): css_file.write(css) -class Menu(): +class Menu: def __init__(self): # self.user_menudict=self.gen_user_menu() # pprint.pprint(self.user_menudict) # self.write_user_menu() - self.menudict=self.gen_header() + self.menudict = self.gen_header() pprint.pprint(self.menudict) self.write_headers() write_css() - ''' HEADER & APP MENU ''' + """ HEADER & APP MENU """ + def gen_header(self): - with open(r'menu/system.yaml') as yml: - system=yaml.load(yml, Loader=yaml.FullLoader) + with open(r"menu/system.yaml") as yml: + system = yaml.load(yml, Loader=yaml.FullLoader) user_menu = [] - for item in system['user_menu']: - item['href']='https://'+item['subdomain']+'.'+application.config['DOMAIN']+item['href'] - del item['subdomain'] + for item in system["user_menu"]: + item["href"] = ( + "https://" + + item["subdomain"] + + "." + + application.config["DOMAIN"] + + item["href"] + ) + del item["subdomain"] user_menu.append(item) - user_menu_dict={'user_menu':user_menu, - 'user_avatar':'https://sso.'+application.config['DOMAIN']+'/auth/realms/master/avatar-provider'} + user_menu_dict = { + "user_menu": user_menu, + "user_avatar": "https://sso." + + application.config["DOMAIN"] + + "/auth/realms/master/avatar-provider", + } apps_internal = [] - for app in system['apps_internal']: - app['href']='https://'+app['subdomain']+'.'+application.config['DOMAIN']+app['href'] - del app['subdomain'] + for app in system["apps_internal"]: + app["href"] = ( + "https://" + + app["subdomain"] + + "." + + application.config["DOMAIN"] + + app["href"] + ) + del app["subdomain"] apps_internal.append(app) - with open(r'menu/custom.yaml') as yml: - custom=yaml.load(yml, Loader=yaml.FullLoader) - custom['background_login']='https://api.'+application.config['DOMAIN']+custom['background_login'] - custom['logo']='https://api.'+application.config['DOMAIN']+custom['logo'] + with open(r"menu/custom.yaml") as yml: + custom = yaml.load(yml, Loader=yaml.FullLoader) + custom["background_login"] = ( + "https://api." + application.config["DOMAIN"] + custom["background_login"] + ) + custom["logo"] = "https://api." + application.config["DOMAIN"] + custom["logo"] - menudict={**custom,**{'apps_internal':apps_internal,**user_menu_dict}} - menudict['user']={} - menudict['user']['account']='https://sso.'+application.config['DOMAIN']+system['user']['account'] - menudict['user']['avatar']='https://sso.'+application.config['DOMAIN']+system['user']['avatar'] + menudict = {**custom, **{"apps_internal": apps_internal, **user_menu_dict}} + menudict["user"] = {} + menudict["user"]["account"] = ( + "https://sso." + application.config["DOMAIN"] + system["user"]["account"] + ) + menudict["user"]["avatar"] = ( + "https://sso." + application.config["DOMAIN"] + system["user"]["avatar"] + ) return menudict def write_headers(self): - env = Environment(loader=FileSystemLoader('api/static/_templates')) + env = Environment(loader=FileSystemLoader("api/static/_templates")) - template = env.get_template('user_menu.html') + template = env.get_template("user_menu.html") output_from_parsed_template = template.render(data=self.menudict) print(output_from_parsed_template) with open("api/static/templates/user_menu_header.html", "w") as fh: @@ -80,7 +104,7 @@ class Menu(): # with open("api/static/templates/user_menu_header.json", "w") as fh: # fh.write(json.dumps(self.menudict)) - template = env.get_template('apps_menu.html') + template = env.get_template("apps_menu.html") output_from_parsed_template = template.render(data=self.menudict) print(output_from_parsed_template) with open("api/static/templates/header.html", "w") as fh: diff --git a/docker/api/src/api/views/AvatarsViews.py b/docker/api/src/api/views/AvatarsViews.py index 59df1fe..9815754 100644 --- a/docker/api/src/api/views/AvatarsViews.py +++ b/docker/api/src/api/views/AvatarsViews.py @@ -1,19 +1,34 @@ #!flask/bin/python # coding=utf-8 -from api import app +import json import logging as log +import os +import sys +import time import traceback - from uuid import uuid4 -import time,json -import sys,os -from flask import render_template, Response, request, redirect, url_for, jsonify, send_from_directory + +from flask import ( + Response, + jsonify, + redirect, + render_template, + request, + send_from_directory, + url_for, +) + +from api import app from ..lib.avatars import Avatars + avatars = Avatars() + @app.route("/avatar/", methods=["GET"]) def avatar(username): - print(app.root_path) - log.error(app.root_path) - return send_from_directory(os.path.join(app.root_path, '../avatars/master-avatars/'), avatars.get_user_avatar(username), mimetype='image/jpg') + return send_from_directory( + os.path.join(app.root_path, "../avatars/master-avatars/"), + avatars.get_user_avatar(username), + mimetype="image/jpg", + ) diff --git a/docker/api/src/api/views/MenuViews.py b/docker/api/src/api/views/MenuViews.py index e650241..c1b2c96 100644 --- a/docker/api/src/api/views/MenuViews.py +++ b/docker/api/src/api/views/MenuViews.py @@ -1,31 +1,41 @@ #!flask/bin/python # coding=utf-8 -from api import app +import json import logging as log +import os +import sys +import time import traceback - from uuid import uuid4 -import time,json -import sys,os -from flask import render_template, Response, request, redirect, url_for, jsonify + +from flask import Response, jsonify, redirect, render_template, request, url_for + +from api import app from ..lib.menu import Menu + menu = Menu() -@app.route('/header/', methods=['GET']) -@app.route('/header//', methods=['GET']) -def api_v2_header(format,application=False): + +@app.route("/header/", methods=["GET"]) +@app.route("/header//", methods=["GET"]) +def api_v2_header(format, application=False): if application == False: - if format == 'json': + if format == "json": if application == False: - return json.dumps(menu.get_header()), 200, {'Content-Type': 'application/json'} - if format == 'html': + return ( + json.dumps(menu.get_header()), + 200, + {"Content-Type": "application/json"}, + ) + if format == "html": if application == False: - return render_template('header.html') - if application == 'nextcloud': - return render_template('header_nextcloud.html') - if application == 'wordpress': - return render_template('header_wordpress.html') + return render_template("header.html") + if application == "nextcloud": + return render_template("header_nextcloud.html") + if application == "wordpress": + return render_template("header_wordpress.html") + # @app.route('/user_menu/', methods=['GET']) # @app.route('/user_menu//', methods=['GET']) @@ -33,4 +43,4 @@ def api_v2_header(format,application=False): # if application == False: # if format == 'json': # if application == False: -# return json.dumps(menu.get_user_nenu()), 200, {'Content-Type': 'application/json'} \ No newline at end of file +# return json.dumps(menu.get_user_nenu()), 200, {'Content-Type': 'application/json'} diff --git a/docker/api/src/start.py b/docker/api/src/start.py index da28c0d..342f90e 100644 --- a/docker/api/src/start.py +++ b/docker/api/src/start.py @@ -18,6 +18,4 @@ if __name__ == "__main__": engineio_logger = logging.getLogger("engineio") engineio_logger.setLevel("ERROR") - socketio.run( - app, host="0.0.0.0", port=7039, debug=False - ) + socketio.run(app, host="0.0.0.0", port=7039, debug=False) diff --git a/docker/keycloak-client/kcli.py b/docker/keycloak-client/kcli.py index 032beb7..bc55826 100644 --- a/docker/keycloak-client/kcli.py +++ b/docker/keycloak-client/kcli.py @@ -3,23 +3,29 @@ from pprint import pprint from keycloak import KeycloakAdmin + def keycloak_connect(): - keycloak_admin = KeycloakAdmin(server_url="http://isard-sso-keycloak:8080/auth/", - username='admin', - password='keycloakkeycloak', - realm_name="master", - user_realm_name="only_if_other_realm_than_master", - client_secret_key="client-secret", - verify=True) + keycloak_admin = KeycloakAdmin( + server_url="http://isard-sso-keycloak:8080/auth/", + username="admin", + password="keycloakkeycloak", + realm_name="master", + user_realm_name="only_if_other_realm_than_master", + client_secret_key="client-secret", + verify=True, + ) + def keycloak_dumps(): - print('Dumping keycloak config...') + print("Dumping keycloak config...") + def Keycloak_imports(): - with open('saml_client.json') as json_file: + with open("saml_client.json") as json_file: data = json.load(json_file) + if __name__ == "__main__": keycloak_connect() - if sys.argv[1]=='dump': + if sys.argv[1] == "dump": keycloak_dumps()