Commit 5f5d2daa authored by Cédric Le Ninivin's avatar Cédric Le Ninivin

ERP5UserManager: Move to transactional cache for getPersonByReference method

parent 6c1a5927
...@@ -126,7 +126,7 @@ class ERP5UserManager(BasePlugin): ...@@ -126,7 +126,7 @@ class ERP5UserManager(BasePlugin):
return person_url return person_url
else: else:
person_list = portal.portal_catalog.unrestrictedSearchResults( person_list = portal.portal_catalog.unrestrictedSearchResults(
select_list=('relative_url',), select_list=('relative_url', 'reference'),
portal_type='Person', portal_type='Person',
reference={'query': reference, 'key': 'ExactMatch'}, reference={'query': reference, 'key': 'ExactMatch'},
limit=2 limit=2
...@@ -136,11 +136,10 @@ class ERP5UserManager(BasePlugin): ...@@ -136,11 +136,10 @@ class ERP5UserManager(BasePlugin):
raise RuntimeError, 'More than one Person have login %r' % \ raise RuntimeError, 'More than one Person have login %r' % \
(reference,) (reference,)
elif l == 1: elif l == 1:
self.REQUEST.set('_person_cache', {})
self.REQUEST['_person_cache'][person_list[0]['reference']] = \
person_list[0]['relative_url']
return person_list[0]['relative_url'] return person_list[0]['relative_url']
_getPersonRelativeUrlFromReference = CachingMethod(
_getPersonRelativeUrlFromReference,
id='ERP5UserManager._getPersonRelativeUrlFromReference',
cache_factory='erp5_content_short')
person_relative_url = _getPersonRelativeUrlFromReference(reference) person_relative_url = _getPersonRelativeUrlFromReference(reference)
if person_relative_url is not None: if person_relative_url is not None:
return self.getPortalObject().unrestrictedTraverse( return self.getPortalObject().unrestrictedTraverse(
......
  • Without really knowing this code, with this becoming a request cache, then we should be able to just keep the person document in cache instead of keeping the relative url and traversing it to find the person, because this is pattern is only required when using CachingMethod.

  • @kazuhiko @cedric.leninivin : Are there any known problems that would prevent merging https://lab.nexedi.com/nexedi/erp5/commits/allow_login_change_wip to master ? ( or https://lab.nexedi.com/nexedi/erp5/commits/allow_login_change there are branches, but the _wip one has more commits )

    Can we make a merge request and discuss this in a merge request ?

    /cc @gabriel @tb

Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment