From d1a2007275f128fea051ead55fb47d2c2686abf5 Mon Sep 17 00:00:00 2001 From: mvdbeek Date: Sun, 3 Sep 2017 13:35:33 +0200 Subject: [PATCH] Cache user roles during WorkRequestContext lifetime This speeds up building the tool module by a factor of 5. --- lib/galaxy/work/context.py | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/lib/galaxy/work/context.py b/lib/galaxy/work/context.py index 5c35315d07f..02306dbf0e8 100644 --- a/lib/galaxy/work/context.py +++ b/lib/galaxy/work/context.py @@ -22,6 +22,7 @@ class WorkRequestContext(ProvidesAppContext, ProvidesUserContext, ProvidesHistor self.app = app self.security = app.security self.__user = user + self.__user_current_roles = None self.__history = history self.api_inherit_admin = False self.workflow_building_mode = workflow_building_mode @@ -40,6 +41,12 @@ class WorkRequestContext(ProvidesAppContext, ProvidesUserContext, ProvidesHistor """Return the current user if logged in or None.""" return self.__user + def get_current_user_roles(self): + if not self.__user_current_roles: + if self.__user: + self.__user_current_roles = self.__user.all_roles() + return self.__user_current_roles + def set_user(self, user): """Set the current user.""" raise NotImplementedError("Cannot change users from a work request context.")