From acef9b683ec2baeb9624c2d7c4f6810822d74f3e Mon Sep 17 00:00:00 2001 From: Helmut Merz Date: Thu, 24 Mar 2016 17:11:52 +0100 Subject: [PATCH] gracefully keep favorites on top that have been promoted manually --- organize/personal/README.txt | 2 +- organize/personal/favorite.py | 10 +++++++--- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/organize/personal/README.txt b/organize/personal/README.txt index d058355..5a3b655 100644 --- a/organize/personal/README.txt +++ b/organize/personal/README.txt @@ -75,7 +75,7 @@ So we are now ready to query the favorites. >>> favs = list(favorites.query(userName=johnCId)) >>> favs - [] + [] >>> list(favAdapted.list(johnC)) ['27'] diff --git a/organize/personal/favorite.py b/organize/personal/favorite.py index f0a7daa..e545d4d 100644 --- a/organize/personal/favorite.py +++ b/organize/personal/favorite.py @@ -50,7 +50,7 @@ class Favorites(object): return personUid = util.getUidForObject(person) if sortKey is None: - sortKey = lambda x: (x.data.get('order', 0), -x.timeStamp) + sortKey = lambda x: (x.data.get('order', 100), -x.timeStamp) for item in sorted(self.context.query(userName=personUid), key=sortKey): if type is not None: if item.type != type: @@ -63,7 +63,7 @@ class Favorites(object): uid = util.getUidForObject(obj) personUid = util.getUidForObject(person) if data is None: - data = {'type': 'favorite'} + data = {'type': 'favorite', 'order': 100} for track in self.context.query(userName=personUid, taskId=uid): if track.type == data['type']: # already present return False @@ -82,11 +82,15 @@ class Favorites(object): return changed def reorder(self, uids): + offset = 0 for idx, uid in enumerate(uids): track = util.getObjectForUid(uid) if track is not None: data = track.data - data['order'] = idx + order = data.get('order', 100) + if order < idx or (order >= 100 and order < idx + 100): + offset = 100 + data['order'] = idx + offset track.data = data