From e57ec4bede21e7f1de9422aba1183b2f8145b02f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sybren=20A=2E=20St=C3=BCvel?= Date: Fri, 31 May 2019 10:23:25 +0200 Subject: [PATCH] Moved `user_to_dict()` function out of pillar.web.jinja module --- pillar/auth/__init__.py | 14 ++++++++++++++ pillar/web/jinja.py | 22 ++++------------------ 2 files changed, 18 insertions(+), 18 deletions(-) diff --git a/pillar/auth/__init__.py b/pillar/auth/__init__.py index 3dad773b..41d97c48 100644 --- a/pillar/auth/__init__.py +++ b/pillar/auth/__init__.py @@ -163,6 +163,20 @@ class UserClass(flask_login.UserMixin): return bool(self._has_organizations) + def frontend_info(self) -> dict: + """Return a dictionary of user info for injecting into the page.""" + + return { + 'user_id': str(self.user_id), + 'username': self.username, + 'full_name': self.full_name, + 'gravatar': self.gravatar, + 'email': self.email, + 'capabilities': list(self.capabilities), + 'badges_html': self.badges_html, + 'is_authenticated': self.is_authenticated, + } + class AnonymousUser(flask_login.AnonymousUserMixin, UserClass): def __init__(self): diff --git a/pillar/web/jinja.py b/pillar/web/jinja.py index 1cc3533d..c2bf0ade 100644 --- a/pillar/web/jinja.py +++ b/pillar/web/jinja.py @@ -1,7 +1,6 @@ """Our custom Jinja filters and other template stuff.""" import functools -import json import logging import typing import urllib.parse @@ -212,29 +211,16 @@ def do_yesno(value, arg=None): return no -def user_to_dict(user: auth.UserClass) -> dict: - return dict( - user_id=str(user.user_id), - username=user.username, - full_name=user.full_name, - gravatar=user.gravatar, - email=user.email, - capabilities=list(user.capabilities), - badges_html=user.badges_html, - is_authenticated=user.is_authenticated - ) - - -def do_json(some_object) -> str: +def do_json(some_object: typing.Any) -> str: import pillar.auth if isinstance(some_object, LocalProxy): return do_json(some_object._get_current_object()) if isinstance(some_object, pillarsdk.Resource): some_object = some_object.to_dict() - if isinstance(some_object, auth.UserClass): - some_object = user_to_dict(some_object) - return json.dumps(some_object) + if isinstance(some_object, pillar.auth.UserClass): + some_object = some_object.frontend_info() + return pillar.api.utils.dumps(some_object) def setup_jinja_env(jinja_env, app_config: dict):