Put users lookup in request context

This commit is contained in:
2023-08-16 02:59:42 +03:00
parent e8060da3d6
commit 07772d9d42
5 changed files with 27 additions and 21 deletions

View File

@@ -29,7 +29,7 @@ class User:
return getattr(self, item)
def get_users():
def get_users_inner():
config.load_incluster_config()
api_instance = client.CustomObjectsApi()
ret = api_instance.list_namespaced_custom_object("codemowers.io", "v1alpha1", OIDC_USERS_NAMESPACE, "oidcgatewayusers")
@@ -42,8 +42,10 @@ def get_users():
groups.append(f"{group['prefix']}:{group['name']}")
yield User(username, display_name, slack_id, groups)
users = list(get_users())
users_lookup = {u.username : u for u in users}
def get_users():
users = list(get_users_inner())
users_lookup = {u.username : u for u in users}
return users, users_lookup
class CustomForm(FlaskForm):
# quite hacky
@@ -108,7 +110,7 @@ def build_query(base_query, fields=[], sort_fields={}):
val = request.args.get(key, type=tp)
results = db.inventory.find(base_query).distinct(attr)
if key in ("inventory_owner_username", "inventory_user_username"):
results = [{"username": u, "display_name": users_lookup.get(u, User()).display_name or u} for u in results]
results = [{"username": u, "display_name": g.users_lookup.get(u, User()).display_name or u} for u in results]
results = sorted(results, key = lambda k: k["display_name"])
elif tp != list:
results = sorted(results)