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) 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']) 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(item_or_list(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])
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])
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 ])
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, exclude=['raw_data']) 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['path'][0]), f.get('is_binary', [False])[0]) for f in files_and_folders])
def test_decode_es_datetime(): """Test that both ES datetime formats are decoded.""" eq_(datetime(1992, 6, 27, 0, 0), decode_es_datetime("1992-06-27T00:00:00")) eq_(datetime(1992, 6, 27, 0, 0, 0), decode_es_datetime("1992-06-27T00:00:00.0"))