Cache user roles during WorkRequestContext lifetime

This speeds up building the tool module by a factor of 5.
This commit is contained in:
mvdbeek
2017-09-03 16:27:05 +02:00
parent 471707bd7d
commit d1a2007275
+7
View File
@@ -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.")