Ejemplo n.º 1
0
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)
Ejemplo n.º 2
0
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
Ejemplo n.º 4
0
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,
        )
Ejemplo n.º 5
0
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,
        )