From dea6b122b73db0295b5b896c102d41a7e4853951 Mon Sep 17 00:00:00 2001 From: Kevin Chung Date: Thu, 25 Jun 2020 12:00:33 -0400 Subject: [PATCH] Add User and Team Jinja globals to access User/Team attrs (#1511) * Adds User and Team globals to Jinja theme files. * Closes #1234 --- CTFd/constants/teams.py | 29 +++++++++++++++++++++++++++ CTFd/constants/users.py | 29 +++++++++++++++++++++++++++ CTFd/utils/initialization/__init__.py | 4 ++++ 3 files changed, 62 insertions(+) diff --git a/CTFd/constants/teams.py b/CTFd/constants/teams.py index d9de99d1..09408c0d 100644 --- a/CTFd/constants/teams.py +++ b/CTFd/constants/teams.py @@ -18,3 +18,32 @@ TeamAttrs = namedtuple( "created", ], ) + + +class _TeamAttrsWrapper: + def __getattr__(self, attr): + from CTFd.utils.user import get_current_team_attrs + + attrs = get_current_team_attrs() + return getattr(attrs, attr, None) + + @property + def place(self): + from CTFd.utils.user import get_current_team + + team = get_current_team() + if team: + return team.place + return None + + @property + def score(self): + from CTFd.utils.user import get_current_team + + team = get_current_team() + if team: + return team.score + return None + + +Team = _TeamAttrsWrapper() diff --git a/CTFd/constants/users.py b/CTFd/constants/users.py index 8fcf8150..78c528fc 100644 --- a/CTFd/constants/users.py +++ b/CTFd/constants/users.py @@ -20,3 +20,32 @@ UserAttrs = namedtuple( "created", ], ) + + +class _UserAttrsWrapper: + def __getattr__(self, attr): + from CTFd.utils.user import get_current_user_attrs + + attrs = get_current_user_attrs() + return getattr(attrs, attr, None) + + @property + def place(self): + from CTFd.utils.user import get_current_user + + user = get_current_user() + if user: + return user.place + return None + + @property + def score(self): + from CTFd.utils.user import get_current_user + + user = get_current_user() + if user: + return user.score + return None + + +User = _UserAttrsWrapper() diff --git a/CTFd/utils/initialization/__init__.py b/CTFd/utils/initialization/__init__.py index f16fd71f..99f4ed88 100644 --- a/CTFd/utils/initialization/__init__.py +++ b/CTFd/utils/initialization/__init__.py @@ -56,6 +56,8 @@ def init_template_globals(app): from CTFd.constants.config import Configs from CTFd.constants.plugins import Plugins from CTFd.constants.sessions import Session + from CTFd.constants.users import User + from CTFd.constants.teams import Team from CTFd.forms import Forms from CTFd.utils.config.visibility import ( accounts_visible, @@ -98,6 +100,8 @@ def init_template_globals(app): app.jinja_env.globals.update(Plugins=Plugins) app.jinja_env.globals.update(Session=Session) app.jinja_env.globals.update(Forms=Forms) + app.jinja_env.globals.update(User=User) + app.jinja_env.globals.update(Team=Team) def init_logs(app):