Mercurial > libervia-backend
changeset 3253:1af840e84af7
core (memory/persistent): fixed "items", added "all" + "adel" to LazyPersistentBinaryDict:
- `items` was returning the dict with all values, it now returns a Deferred with actual dict items()
- `all` new method does return the dict with all values (in a Deferred)
- `adel` has been added to LazyPersistentBinaryDict
author | Goffi <goffi@goffi.org> |
---|---|
date | Tue, 14 Apr 2020 20:36:24 +0200 |
parents | 54934ee3f69c |
children | 6cf4bd6972c2 |
files | sat/memory/persistent.py sat/plugins/plugin_misc_email_invitation.py |
diffstat | 2 files changed, 13 insertions(+), 2 deletions(-) [+] |
line wrap: on
line diff
--- a/sat/memory/persistent.py Tue Apr 14 20:29:37 2020 +0200 +++ b/sat/memory/persistent.py Tue Apr 14 20:36:24 2020 +0200 @@ -66,7 +66,7 @@ return iter(self._cache.items()) def items(self): - return list(self._cache.items()) + return self._cache.items() def __repr__(self): return self._cache.__repr__() @@ -178,6 +178,11 @@ raise NotImplementedError def items(self): + d = self.storage.getPrivates(self.namespace, binary=self.binary, profile=self.profile) + d.addCallback(lambda data_dict: data_dict.items()) + return d + + def all(self): return self.storage.getPrivates(self.namespace, binary=self.binary, profile=self.profile) def __repr__(self): @@ -257,6 +262,12 @@ return self.storage.setPrivateValue(self.namespace, key, value, self.binary, self.profile) + def adel(self, key): + """Async del, return a Deferred fired when value is actually deleted""" + # XXX: similar as PersistentDict.adel, but doesn't use cache + return self.storage.delPrivateValue( + self.namespace, key, self.binary, self.profile) + def setdefault(self, key, default): raise NotImplementedError
--- a/sat/plugins/plugin_misc_email_invitation.py Tue Apr 14 20:29:37 2020 +0200 +++ b/sat/plugins/plugin_misc_email_invitation.py Tue Apr 14 20:36:24 2020 +0200 @@ -401,7 +401,7 @@ C.PROF_KEY_NONE: don't filter invitations @return list(unicode): invitations uids """ - invitations = yield self.invitations.items() + invitations = yield self.invitations.all() if profile != C.PROF_KEY_NONE: invitations = {id_:data for id_, data in invitations.items() if data.get('profile') == profile}