From 80708e3bd1093dc180cc67a5e3a5e2419081be50 Mon Sep 17 00:00:00 2001 From: Marcin Kuzminski Date: Wed, 18 Dec 2019 12:04:40 +0100 Subject: [PATCH] auth: use single instance of auth checker to speed up execution of the permissions check by not creating new instance in each loop iteration. --- rhodecode/model/scm.py | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/rhodecode/model/scm.py b/rhodecode/model/scm.py index c1faccba..adbcea20 100644 --- a/rhodecode/model/scm.py +++ b/rhodecode/model/scm.py @@ -126,7 +126,7 @@ class _PermCheckIterator(object): self.obj_list = obj_list self.obj_attr = obj_attr self.perm_set = perm_set - self.perm_checker = perm_checker + self.perm_checker = perm_checker(*self.perm_set) self.extra_kwargs = extra_kwargs or {} def __len__(self): @@ -136,11 +136,10 @@ class _PermCheckIterator(object): return '<%s (%s)>' % (self.__class__.__name__, self.__len__()) def __iter__(self): - checker = self.perm_checker(*self.perm_set) for db_obj in self.obj_list: # check permission at this level name = getattr(db_obj, self.obj_attr, None) - if not checker(name, self.__class__.__name__, **self.extra_kwargs): + if not self.perm_checker(name, self.__class__.__name__, **self.extra_kwargs): continue yield db_obj