def main(rfile, wfile, env): req = request.Request(rfile, env) path = env.get('PATH_INFO', '') errors = [] # initialize current state state = upgrade_checker._getSystemState() form = { 'feed_url': state.feed_url, 'fetch_frequency': str(state.fetch_frequency), 'current_version': state.current_version, 'upgrade_info': state.upgrade_info, } log.debug('%s %s' % (path, str(state.upgrade_info))) if path == '/dismiss': upgrade_checker.set_config(dismiss=True) url = req.param('url','') if url: response.redirect(wfile, url) else: response.redirect(wfile, '/updateParent') return elif path == '/check': # 2006-04-02 23:50:26 DEBUG>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> #state.current_version = '0.1' # assume it is an older version # <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< upgrade_checker.pollUpgradeInfo(force_check=True) form['upgrade_info'] = state.upgrade_info # hack, do not redirect to /setting # we want the /check in the URL so that we can tell user no new version #response.redirect(wfile, '/upgrade/setting') elif req.method == 'POST': _freq_str = req.param('fetch_frequency',str(upgrade_checker.DEFAULT_FETCH_FREQUENCY)) if not _freq_str: _freq_str = '0' try: frequency = int(_freq_str) if frequency < 0: raise ValueError() except ValueError: form['fetch_frequency'] = _freq_str errors = ['Please enter a positive integer for check frequency.'] else: upgrade_checker.set_config(frequency=int(_freq_str)) form['fetch_frequency'] = str(state.fetch_frequency) renderer = UpgradeRenderer(wfile) renderer.setLayoutParam('MindRetrieve - Upgrade Notification Setting') renderer.output(errors, form, path)
def test_checkUpgrade(self): st = self.state today = datetime.date(2005,1,1) # version 0.0 st.current_version = '0.0' st.last_entry_date = '' st.feed_url = TEST_FEED0 uc._checkUpgrade(st, today) # got upgrade 0.4.2 self.assertEqual(st.fetch_date, today) self.assertEqual(st.next_fetch, datetime.date(2005,1,11)) self.assertEqual(st.last_entry_date, '2005-02-21T17:00:00Z') self.assert_(st.upgrade_info) uinfo = st.upgrade_info self.assertEqual(uinfo.version, '0.4.2') self.assertEqual(uinfo.title, 'Version 0.4.2') self.assertEqual(uinfo.summary, 'Maintenance release with minor enhancement (2005-02-21)') self.assertEqual(uinfo.url, 'https://developer.berlios.de/project/showfiles.php?group_id=2905&release_id=4867') uc.set_config(st, dismiss=True) # reset upgrade_info # still version 0.0 uc._checkUpgrade(st, today) # got old news self.assertEqual(st.last_entry_date, '2005-02-21T17:00:00Z') self.assert_(not st.upgrade_info) # version 0.4.2 st.current_version = '0.4.2' st.last_entry_date = '' st.feed_url = TEST_FEED0 uc._checkUpgrade(st, today) # no new version self.assertEqual(st.last_entry_date, '2005-02-21T17:00:00Z') self.assert_(not st.upgrade_info) # found latest 0.8.0 st.current_version = '0.4.0' st.last_entry_date = '' st.feed_url = TEST_FEED1 uc._checkUpgrade(st, today) # new version 0.8.0 available! self.assertEqual(st.last_entry_date, '2006-01-18T17:00:00Z') self.assert_(st.upgrade_info) uinfo = st.upgrade_info self.assertEqual(uinfo.version, '0.8.0') self.assertEqual(uinfo.title, 'Version 0.8.0') self.assertEqual(uinfo.summary, 'New features added: web library, tag based categorization, etc (2006-01-18)') self.assertEqual(uinfo.url, 'https://developer.berlios.de/project/showfiles.php?group_id=2905&release_id=8737')
def test_set_config(self): st = self.state st.upgrade_info = 'dummy' # set frequency uc.set_config(st, frequency=7) self.assertEqual(st.fetch_frequency, 7) self.assertEqual(st.next_fetch, datetime.date(2004,1,8)) self.assert_(st.upgrade_info) # dismiss uc.set_config(st, dismiss=True) self.assertEqual(st.fetch_frequency, 7) self.assert_(not st.upgrade_info)
def test_pollUpgradeInfo(self): def _date_func(y,m,d): # Helper to return a functional object # >>> date_func(2005,1,1)() # datetime.date(2005, 1, 1, 0, 0) return lambda: datetime.date(y,m,d) st = self.state st.current_version = '0.0' st.feed_url = TEST_FEED0 self._test_poll(_date_func(2004,12,31), False, '') # no fetch self._test_poll(_date_func(2005, 1, 1), True, '0.4.2') # fetch 0.4.2 self._test_poll(_date_func(2005, 1, 2), False, '0.4.2') # no fetch but still have upgrade 0.4.2 uc.set_config(st, dismiss=True) # reset upgrade_info self._test_poll(_date_func(2005, 1, 3), False, '') # dismissed, no fetch self._test_poll(_date_func(2005, 1,11), True, '') # fetch again, but nothing new st.feed_url = TEST_FEED1 self._test_poll(_date_func(2005, 1,21), True, '0.8.0') # fetch again, got 0.8.0 uc.set_config(st, frequency=0) self._test_poll(_date_func(2005, 1,31), False, '') # upgrade is off self._test_poll(_date_func(2005, 1,22), True, '0.8.0', force_check=True) # force_check uc.set_config(st, dismiss=True) # reset upgrade_info st.current_version = '9.9' self._test_poll(_date_func(2005, 1,23), True, '', force_check=True) # force_check but no new version self._test_poll(_date_func(2005, 2,10), False, '') # regular feed after force feed (still disabled) uc.set_config(st, frequency=10) self._test_poll(_date_func(2005, 2,10), True, '') # regular feed made after force feed