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
This commit is contained in:
Goffi 2020-04-14 20:36:24 +02:00
commit 68a4d8ea98
2 changed files with 13 additions and 2 deletions

View file

@ -66,7 +66,7 @@ class PersistentDict:
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 @@ class LazyPersistentBinaryDict(PersistentBinaryDict):
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 @@ class LazyPersistentBinaryDict(PersistentBinaryDict):
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

View file

@ -401,7 +401,7 @@ class InvitationsPlugin(object):
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}