From e24aacdd5da88f65760251d153add5c524fdd1af Mon Sep 17 00:00:00 2001 From: Christian Hoffmann Date: Mon, 28 Sep 2015 16:16:06 +0200 Subject: [PATCH] Ensure that Item.folder works in all cases. The internal attribute Item._folder should always be initialized, at least with None. If possible, _folder should be pre-populated with parent data from the outside as this should be better performing than doing a repeated lookup. Fixes #31. --- zarafa/__init__.py | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/zarafa/__init__.py b/zarafa/__init__.py index f742f52..1ce979a 100644 --- a/zarafa/__init__.py +++ b/zarafa/__init__.py @@ -1297,7 +1297,7 @@ def check_folder(folder): def item(self, entryid): """ Return :class:`Item` with given entryid; raise exception of not found """ # XXX better exception? - item = Item() # XXX copy-pasting.. + item = Item(parent=self) # XXX copy-pasting.. item.store = self item.server = self.server item.mapiobj = _openentry_raw(self.mapiobj, entryid.decode('hex'), MAPI_MODIFY) @@ -1439,7 +1439,7 @@ def container_class(self, value): def item(self, entryid): """ Return :class:`Item` with given entryid; raise exception of not found """ # XXX better exception? - item = Item() # XXX copy-pasting.. + item = Item(parent=self) # XXX copy-pasting.. item.store = self.store item.server = self.server item.mapiobj = _openentry_raw(self.store.mapiobj, entryid.decode('hex'), MAPI_MODIFY) @@ -1459,7 +1459,7 @@ def items(self): if len(rows) == 0: break for row in rows: - item = Item() + item = Item(parent=self) item.store = self.store item.server = self.server item.mapiobj = _openentry_raw(self.store.mapiobj, PpropFindProp(row, PR_ENTRYID).Value, MAPI_MODIFY) @@ -1692,6 +1692,8 @@ def __init__(self, parent=None, eml=None, ics=None, vcf=None, load=None, loads=N self.emlfile = eml if isinstance(parent, Folder): self._folder = parent + else: + self._folder = None # XXX self._architem = None