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 queryRoot(wfile, req, sort): wlib = store.getWeblib() # category pane categoryList = _buildCategoryList(wlib) # upgrade_info upgrade_info = upgrade_checker.pollUpgradeInfo() # webitem pane webItems = map(WebItemNode, query_wlib.queryRoot(wlib)) renderer = WeblibRenderer(wfile) if sort: renderer.cookie['weblib_sort'] = sort renderer.setLayoutParam(None) renderer.output( '/weblib', wlib.tags, None, wlib.getDefaultTag(), categoryList, upgrade_info, sort, webItems, )
def _test_poll(self, _date_func, expect_fetched, expected_version, force_check=False): st = self.state old_date = st.fetch_date # the main test print '%s current %s fetch -->' % (st.current_version, str(_date_func())) r = uc.pollUpgradeInfo(st, _date_func, force_check=force_check) if expect_fetched: self.assertNotEqual(st.fetch_date, old_date) # expect fetched else: self.assertEqual(st.fetch_date, old_date) # expect not fetched if expected_version: self.assertEqual(r.version, expected_version) # expect has upgrade else: self.assert_(not r) # expect no upgrade
def queryTag(wfile, req, nameOrId, sort): wlib = store.getWeblib() tag = weblib.parseTag(wlib, nameOrId) tagName = tag and tag.name or '' # Note: URL is expected to have valid tag parameter. If it turns up # nothing, one possibility is user has entered an invalid URL # manually. In that case the query below should turn out empty # result. We choose not go for the alternative or redirecting user # to / or inbox because it seems even more confusing. # category pane categoryList = _buildCategoryList(wlib, tagName) # upgrade_info upgrade_info = upgrade_checker.pollUpgradeInfo() # webitem pane if tag: webItems = _query_by_tag(wlib, tag, sort) else: # TODO: HACK!!! # Create a fake tag to fill something in the result # Seems WeblibRenderer() is OK with this fakeTagNode = WebItemTagNode(nameOrId) webItems = [fakeTagNode] renderer = WeblibRenderer(wfile) if tag: renderer.cookie['weblib_tag'] = '@%s' % tag.id if sort: renderer.cookie['weblib_sort'] = sort renderer.setLayoutParam(None) renderer.output( request.tag_url(nameOrId), wlib.tags, tag, wlib.getDefaultTag(), categoryList, upgrade_info, sort, webItems, )
def queryWebLib(wfile, req, tag, sort, querytxt): go_direct = req.param('submit') == '>' if querytxt.endswith('>'): querytxt = querytxt[:-1] go_direct = True wlib = store.getWeblib() tags, _ = weblib.parseTags(wlib, tag) # query result = query_wlib.query(wlib, querytxt, tags) # quick jump? if go_direct and result: top_item = result[0][0] #top_item = wlib.visit(top_item) response.redirect(wfile, top_item.url) return # category pane categoryList = _buildCategoryList(wlib) tag = tags and wlib.getTagByName(tags[-1]) or None # upgrade_info upgrade_info = upgrade_checker.pollUpgradeInfo() # webitem pane webItems = [] if querytxt: tags_matched = query_wlib.query_tags(wlib, querytxt, tags) for tag in tags_matched: node = WebItemTagNode(tag) node.suffix = '...' webItems.append(node) # sort result? col, order = SORT.parse_token(sort) if col == SORT.TITLE or col == SORT.DATE: lst = [] for r in result: item = r[0] if col == SORT.TITLE: key = item.name.lower() else: key = item.created lst.append((key,r)) lst.sort(reverse=(order==SORT.DESC)) result = [r for _,r in lst] for item,_ in result: webItems.append(WebItemNode(item)) # reconstuct the base url qs = urllib.quote_plus(querytxt.encode('utf8')) base_url = '/weblib?query=' + qs renderer = WeblibRenderer(wfile) if sort: renderer.cookie['weblib_sort'] = sort renderer.setLayoutParam(querytxt=querytxt) renderer.output( base_url, wlib.tags, None, wlib.getDefaultTag(), categoryList, upgrade_info, sort, webItems, )