changeset 8:9ca705d18849

made update more accurate
author Atul Varma <varmaa@toolness.com>
date Wed, 23 Dec 2009 15:05:16 -0800
parents b788a347af03
children bac306ebd2da
files bzapi.py
diffstat 1 files changed, 11 insertions(+), 5 deletions(-) [+]
line wrap: on
line diff
--- a/bzapi.py	Wed Dec 23 14:45:39 2009 -0800
+++ b/bzapi.py	Wed Dec 23 15:05:16 2009 -0800
@@ -43,22 +43,24 @@
         self._update_last_update()
 
     def _update_last_update(self):
-        bugs = self.bugs.find().sort("last_change_time",
-                                     pymongo.DESCENDING).limit(1)
+        bugs = self.bugs.find().sort("retrieved_time",
+                                     pymongo.ASCENDING).limit(1)
         if bugs.count() == 0:
             self.last_update = None
         else:
-            self.last_update = bugs[0]['last_change_time']
+            self.last_update = bugs[0]['retrieved_time']
 
     def _get_full_bugs(self, bugs):
         params = {'id': ','.join(bugs),
                   'id_mode': 'include',
                   'comments': '1',
                   'history': '1'}
-        bugs = self.api.get('/bug', **params)['data']['bugs']
+        response = self.api.get('/bug', **params)
+        bugs = response['data']['bugs']
         for bug in bugs:
             logging.debug('updating bug %s' % bug['id'])
             normalize_bug(bug)
+            bug['retrieved_time'] = response['date']
             self.bugs.save(bug)
 
     def update(self):
@@ -66,7 +68,8 @@
         params.update(self.options)
         if self.last_update:
             params['changed_after'] = self.last_update
-        bugs = self.api.get('/bug', **params)['data']['bugs']
+        response = self.api.get('/bug', **params)
+        bugs = response['data']['bugs']
         valid_bugs = []
         for bug in bugs:
             normalize_bug(bug)
@@ -74,6 +77,9 @@
             if ((old_bug is None) or
                 (bug['last_change_time'] > old_bug['last_change_time'])):
                 valid_bugs.append(bug['id'])
+            else:
+                old_bug['retrieved_time'] = response['date']
+                self.bugs.save(old_bug)
         if valid_bugs:
             self._get_full_bugs(valid_bugs)
             self._update_last_update()