Exemplo n.º 1
0
def _browse_folder(tree, path, config):
    """Return a rendered folder listing for folder ``path``.

    Search for FILEs having folder == path. If any matches, render the folder
    listing. Otherwise, raise NotFound.

    """
    def item_or_list(item):
        """If item is a list, return its first element.

        Otherwise, just return it.

        """
        # TODO @pelmers: remove this function when format bumps to 20
        if isinstance(item, list):
            return item[0]
        return item

    frozen = frozen_config(tree)

    plugin_headers = concat_plugin_headers(plugins_named(frozen['enabled_plugins']))
    files_and_folders = filtered_query(
        frozen['es_alias'],
        FILE,
        filter={'folder': path},
        sort=[{'is_folder': 'desc'}, 'name'],
        size=1000000,
        include=['name', 'modified', 'size', 'link', 'path', 'is_binary',
                 'is_folder'] + plugin_headers)

    if not files_and_folders:
        raise NotFound

    return render_template(
        'folder.html',
        # Common template variables:
        www_root=config.www_root,
        tree=tree,
        tree_tuples=_tree_tuples('.parallel', path=path),
        generated_date=frozen['generated_date'],
        google_analytics_key=config.google_analytics_key,
        paths_and_names=_linked_pathname(path, tree),
        plugin_headers=plugin_headers,
        filters=filter_menu_items(
            plugins_named(frozen['enabled_plugins'])),
        # Autofocus only at the root of each tree:
        should_autofocus_query=path == '',

        # Folder template variables:
        name=basename(path) or tree,
        path=path,
        files_and_folders=[
            (_icon_class_name(f),
             f['name'],
             decode_es_datetime(item_or_list(f['modified'])) if 'modified' in f else None,
             f.get('size'),
             [f.get(h, [''])[0] for h in plugin_headers],
             url_for('.browse', tree=tree, path=f.get('link', f['path'])[0]))
            for f in files_and_folders])
Exemplo n.º 2
0
def _build_common_file_template(tree, path, date, config):
    """Return a dictionary of the common required file template parameters.
    """
    return {
        # Common template variables:
        'www_root':
        config.www_root,
        'tree':
        tree,
        'tree_tuples':
        [(t['name'], url_for('.parallel', tree=t['name'],
                             path=path), t['description'])
         for t in frozen_configs()],
        'generated_date':
        date,
        'google_analytics_key':
        config.google_analytics_key,
        'filters':
        filter_menu_items(plugins_named(
            frozen_config(tree)['enabled_plugins'])),
        # File template variables
        'paths_and_names':
        _linked_pathname(path, tree),
        'icon_url':
        url_for('.static', filename='icons/mimetypes/%s.png' % icon(path)),
        'path':
        path,
        'name':
        basename(path)
    }
Exemplo n.º 3
0
def _search_html(query, tree, query_text, is_case_sensitive, offset, limit,
                 config):
    """Return the rendered template for search.html.

    """
    frozen = frozen_config(tree)

    # Try a normal search:
    template_vars = {
        'filters': filter_menu_items(plugins_named(frozen['enabled_plugins'])),
        'generated_date': frozen['generated_date'],
        'google_analytics_key': config.google_analytics_key,
        'is_case_sensitive': is_case_sensitive,
        'query': query_text,
        'search_url': url_for('.search',
                              tree=tree,
                              q=query_text,
                              redirect='false'),
        'top_of_tree': url_for('.browse', tree=tree),
        'tree': tree,
        'tree_tuples': _tree_tuples(query_text, is_case_sensitive),
        'www_root': config.www_root
    }

    return render_template('search.html', **template_vars)
Exemplo n.º 4
0
def _tree_tuples(endpoint, **kwargs):
    """Return a list of rendering info for Switch Tree menu items."""
    return [(f['name'],
             url_for(endpoint,
                     tree=f['name'],
                     **kwargs),
             f['description'],
             [(lang, color) for p in plugins_named(f['enabled_plugins'])
              for lang, color in sorted(p.badge_colors.iteritems())])
            for f in frozen_configs()]
Exemplo n.º 5
0
Arquivo: app.py Projeto: kleintom/dxr
def _browse_folder(tree, path, config):
    """Return a rendered folder listing for folder ``path``.

    Search for FILEs having folder == path. If any matches, render the folder
    listing. Otherwise, raise NotFound.

    """
    frozen = frozen_config(tree)

    files_and_folders = filtered_query(frozen['es_alias'],
                                       FILE,
                                       filter={'folder': path},
                                       sort=[{
                                           'is_folder': 'desc'
                                       }, 'name'],
                                       size=10000,
                                       include=[
                                           'name', 'modified', 'size', 'link',
                                           'path', 'is_binary', 'is_folder'
                                       ])

    if not files_and_folders:
        raise NotFound

    return render_template(
        'folder.html',
        # Common template variables:
        www_root=config.www_root,
        tree=tree,
        tree_tuples=[(t['name'], url_for('.parallel',
                                         tree=t['name'],
                                         path=path), t['description'])
                     for t in frozen_configs()],
        generated_date=frozen['generated_date'],
        google_analytics_key=config.google_analytics_key,
        paths_and_names=_linked_pathname(path, tree),
        filters=filter_menu_items(plugins_named(frozen['enabled_plugins'])),
        # Autofocus only at the root of each tree:
        should_autofocus_query=path == '',

        # Folder template variables:
        name=basename(path) or tree,
        path=path,
        files_and_folders=[
            (_icon_class_name(f), f['name'],
             decode_es_datetime(f['modified']) if 'modified' in f else None,
             f.get('size'),
             url_for('.browse', tree=tree, path=f.get('link', f['path'])[0]))
            for f in files_and_folders
        ])
Exemplo n.º 6
0
Arquivo: app.py Projeto: Darshnik/dxr
def _browse_folder(tree, path, config):
    """Return a rendered folder listing for folder ``path``.

    Search for FILEs having folder == path. If any matches, render the folder
    listing. Otherwise, raise NotFound.

    """
    frozen = frozen_config(tree)

    files_and_folders = filtered_query(
        frozen['es_alias'],
        FILE,
        filter={'folder': path},
        sort=[{'is_folder': 'desc'}, 'name'],
        size=10000,
        include=['name', 'modified', 'size', 'link', 'path', 'is_binary',
                 'is_folder'])

    if not files_and_folders:
        raise NotFound

    return render_template(
        'folder.html',
        # Common template variables:
        www_root=config.www_root,
        tree=tree,
        tree_tuples=[
            (t['name'],
             url_for('.parallel', tree=t['name'], path=path),
             t['description'])
            for t in frozen_configs()],
        generated_date=frozen['generated_date'],
        google_analytics_key=config.google_analytics_key,
        paths_and_names=_linked_pathname(path, tree),
        filters=filter_menu_items(
            plugins_named(frozen['enabled_plugins'])),
        # Autofocus only at the root of each tree:
        should_autofocus_query=path == '',

        # Folder template variables:
        name=basename(path) or tree,
        path=path,
        files_and_folders=[
            (_icon_class_name(f),
             f['name'],
             decode_es_datetime(f['modified']) if 'modified' in f else None,
             f.get('size'),
             url_for('.browse', tree=tree, path=f.get('link', f['path'])[0]))
            for f in files_and_folders])
Exemplo n.º 7
0
Arquivo: app.py Projeto: klibby/dxr
def _build_common_file_template(tree, path, is_binary, date, config):
    """Return a dictionary of the common required file template parameters.
    """
    return {
        # Common template variables:
        'www_root': config.www_root,
        'tree': tree,
        'tree_tuples': _tree_tuples('.parallel', path=path),
        'generated_date': date,
        'google_analytics_key': config.google_analytics_key,
        'filters': filter_menu_items(
            plugins_named(frozen_config(tree)['enabled_plugins'])),
        # File template variables
        'paths_and_names': _linked_pathname(path, tree),
        'icon_url': url_for('.static',
                            filename='icons/mimetypes/%s.png' % icon(path, is_binary)),
        'path': path,
        'name': basename(path)
    }
Exemplo n.º 8
0
Arquivo: app.py Projeto: kleintom/dxr
def search(tree):
    """Normalize params, and dispatch between JSON- and HTML-returning
    searches, based on Accept header.

    """
    # Normalize querystring params:
    config = current_app.dxr_config
    frozen = frozen_config(tree)
    req = request.values
    query_text = req.get('q', '')
    offset = non_negative_int(req.get('offset'), 0)
    limit = min(non_negative_int(req.get('limit'), 100), 1000)

    # Make a Query:
    query = Query(partial(current_app.es.search, index=frozen['es_alias']),
                  query_text, plugins_named(frozen['enabled_plugins']))

    # Fire off one of the two search routines:
    searcher = _search_json if _request_wants_json() else _search_html
    return searcher(query, tree, query_text, offset, limit, config)
Exemplo n.º 9
0
Arquivo: app.py Projeto: klibby/dxr
def search(tree):
    """Normalize params, and dispatch between JSON- and HTML-returning
    searches, based on Accept header.

    """
    # Normalize querystring params:
    config = current_app.dxr_config
    frozen = frozen_config(tree)
    req = request.values
    query_text = req.get('q', '')
    offset = non_negative_int(req.get('offset'), 0)
    limit = min(non_negative_int(req.get('limit'), 100), 1000)

    # Make a Query:
    query = Query(partial(current_app.es.search,
                          index=frozen['es_alias']),
                  query_text,
                  plugins_named(frozen['enabled_plugins']))

    # Fire off one of the two search routines:
    searcher = _search_json if _request_wants_json() else _search_html
    return searcher(query, tree, query_text, offset, limit, config)
Exemplo n.º 10
0
Arquivo: app.py Projeto: gartung/dxr
def _build_common_file_template(tree, path, date, config):
    """Return a dictionary of the common required file template parameters.
    """
    return {
        # Common template variables:
        'www_root': config.www_root,
        'tree': tree,
        'tree_tuples':
            [(t['name'],
              url_for('.parallel', tree=t['name'], path=path),
              t['description'])
            for t in frozen_configs()],
        'generated_date': date,
        'google_analytics_key': config.google_analytics_key,
        'filters': filter_menu_items(
            plugins_named(frozen_config(tree)['enabled_plugins'])),
        # File template variables
        'paths_and_names': _linked_pathname(path, tree),
        'icon': icon(path),
        'path': path,
        'name': basename(path)
    }
Exemplo n.º 11
0
Arquivo: app.py Projeto: klibby/dxr
def _search_html(query, tree, query_text, offset, limit, config):
    """Return the rendered template for search.html.

    """
    frozen = frozen_config(tree)

    # Try a normal search:
    template_vars = {
            'filters': filter_menu_items(
                plugins_named(frozen['enabled_plugins'])),
            'generated_date': frozen['generated_date'],
            'google_analytics_key': config.google_analytics_key,
            'query': query_text,
            'search_url': url_for('.search',
                                  tree=tree,
                                  q=query_text,
                                  redirect='false'),
            'top_of_tree': url_for('.browse', tree=tree),
            'tree': tree,
            'tree_tuples': _tree_tuples('.search', q=query_text),
            'www_root': config.www_root}

    return render_template('search.html', **template_vars)
Exemplo n.º 12
0
 def visit(self, query):
     return QueryVisitor().visit(query_grammar(plugins_named(['core', 'clang'])).parse(query))
Exemplo n.º 13
0
 def visit(self, query):
     return QueryVisitor().visit(
         query_grammar(plugins_named(['core', 'clang'])).parse(query))