From 19e8b5b243e4109dedf24adbe73d14e1f8913ffa Mon Sep 17 00:00:00 2001 From: Simon Schampijer Date: Wed, 10 Feb 2010 15:35:07 +0000 Subject: Merge branch 'master' of gitorious@git.sugarlabs.org:sugar/mainline --- diff --git a/src/jarabe/journal/model.py b/src/jarabe/journal/model.py index 85b4f46..4183deb 100644 --- a/src/jarabe/journal/model.py +++ b/src/jarabe/journal/model.py @@ -49,34 +49,24 @@ class _Cache(object): def __init__(self, entries=None): self._array = [] - self._dict = {} if entries is not None: self.append_all(entries) def prepend_all(self, entries): - for entry in entries[::-1]: - self._array.insert(0, entry) - self._dict[entry['uid']] = entry + self._array[0:0] = entries def append_all(self, entries): - for entry in entries: - self._array.append(entry) - self._dict[entry['uid']] = entry - - def remove_all(self, entries): - for uid in [entry['uid'] for entry in entries]: - obj = self._dict[uid] - self._array.remove(obj) - del self._dict[uid] + self._array += entries def __len__(self): return len(self._array) def __getitem__(self, key): - if isinstance(key, basestring): - return self._dict[key] - else: - return self._array[key] + return self._array[key] + + def __delitem__(self, key): + del self._array[key] + class BaseResultSet(object): """Encapsulates the result of a query @@ -148,7 +138,7 @@ class BaseResultSet(object): query['offset'] = offset entries, self._total_count = self.find(query) - self._cache.remove_all(self._cache) + del self._cache[:] self._cache.append_all(entries) self._offset = offset @@ -170,7 +160,7 @@ class BaseResultSet(object): objects_excess = len(self._cache) - cache_limit if objects_excess > 0: self._offset += objects_excess - self._cache.remove_all(self._cache[:objects_excess]) + del self._cache[:objects_excess] elif remaining_forward_entries > 0 and \ remaining_backwards_entries <= 0 and self._offset > 0: @@ -193,7 +183,7 @@ class BaseResultSet(object): cache_limit = self._page_size * MAX_PAGES_TO_CACHE objects_excess = len(self._cache) - cache_limit if objects_excess > 0: - self._cache.remove_all(self._cache[-objects_excess:]) + del self._cache[-objects_excess:] else: logging.debug('cache hit and no need to grow the cache') -- cgit v0.9.1