Mercurial > bzapi
changeset 7:b788a347af03
better update logic
author | Atul Varma <varmaa@toolness.com> |
---|---|
date | Wed, 23 Dec 2009 14:45:39 -0800 |
parents | c9a268d0fa74 |
children | 9ca705d18849 |
files | bzapi.py example.py |
diffstat | 2 files changed, 18 insertions(+), 7 deletions(-) [+] |
line wrap: on
line diff
--- a/bzapi.py Wed Dec 23 14:06:26 2009 -0800 +++ b/bzapi.py Wed Dec 23 14:45:39 2009 -0800 @@ -6,6 +6,11 @@ import pymongo import simplejson as json +def normalize_bug(bug): + for name in ['last_change_time', 'creation_time']: + bug[name] = datetime_from_iso(bug[name]) + bug['_id'] = bug['id'] + def datetime_from_rfc1123(timestamp): return datetime.strptime(timestamp, '%a, %d %b %Y %H:%M:%S GMT') @@ -52,10 +57,8 @@ 'history': '1'} bugs = self.api.get('/bug', **params)['data']['bugs'] for bug in bugs: - logging.debug('processing bug %s' % bug['id']) - for name in ['last_change_time', 'creation_time']: - bug[name] = datetime_from_iso(bug[name]) - bug['_id'] = bug['id'] + logging.debug('updating bug %s' % bug['id']) + normalize_bug(bug) self.bugs.save(bug) def update(self): @@ -64,8 +67,16 @@ if self.last_update: params['changed_after'] = self.last_update bugs = self.api.get('/bug', **params)['data']['bugs'] - self._get_full_bugs([bug['id'] for bug in bugs]) - self._update_last_update() + valid_bugs = [] + for bug in bugs: + normalize_bug(bug) + old_bug = self.bugs.find_one({'id': bug['id']}) + if ((old_bug is None) or + (bug['last_change_time'] > old_bug['last_change_time'])): + valid_bugs.append(bug['id']) + if valid_bugs: + self._get_full_bugs(valid_bugs) + self._update_last_update() class BugzillaApi(object): def __init__(self, base_url, collection, username=None, password=None):