from mailu import app import sys import tabulate # Known endpoints without permissions known_missing_permissions = [ "index", "static", "bootstrap.static", "admin.static", "admin.login" ] # Compute the permission table missing_permissions = [] permissions = {} for endpoint, function in app.view_functions.items(): audit = function.__dict__.get("_audit_permissions") if audit: handler, args = audit if args: model = args[0].__name__ key = args[1] else: model = key = None permissions[endpoint] = [endpoint, handler.__name__, model, key] elif endpoint not in known_missing_permissions: missing_permissions.append(endpoint) # Fail if any endpoint is missing a permission check if missing_permissions: print("The following endpoints are missing permission checks:") print(missing_permissions.join(",")) sys.exit(1) # Display the permissions table print(tabulate.tabulate([ [route, *permissions[route.endpoint]] for route in app.url_map.iter_rules() if route.endpoint in permissions ]))