From 4a4a2aeb92ae9ad18c4d3656d02702ef7f1888b0 Mon Sep 17 00:00:00 2001 From: Greg Thole Date: Tue, 24 May 2016 23:38:23 -0400 Subject: [PATCH] Add research files search option --- gedgo/storages.py | 16 ++++++++-------- gedgo/templates/default/base.html | 2 +- gedgo/templates/default/research.html | 10 ++++++++++ gedgo/views/research.py | 10 ++++++++-- 4 files changed, 27 insertions(+), 11 deletions(-) diff --git a/gedgo/storages.py b/gedgo/storages.py index 132f1a4..4fff6a7 100644 --- a/gedgo/storages.py +++ b/gedgo/storages.py @@ -21,14 +21,14 @@ def exists(self, name): except: return False - def listdir(self, path): - meta = self.client.metadata(self.path(path)) - return self._list_from_contents(meta['contents']) + def listdir(self, name): + meta = self.client.metadata(self.path(name)) + return self._list_from_contents(self.path(name), meta['contents']) - def _list_from_contents(self, contents): + def _list_from_contents(self, path, contents): directories, files = [], [] for entry in contents: - name = os.path.basename(entry['path']) + name = entry['path'][len(path) + 1:] if entry['is_dir']: directories.append(name) else: @@ -44,9 +44,9 @@ def size(self, name): def url(self, name): return self.client.media(self.path(name))['url'] - def search(self, query): - contents = self.client.search(self.path(''), query) - return self._list_from_contents(contents) + def search(self, query, name=''): + contents = self.client.search(self.path(name), query) + return self._list_from_contents(self.path(name), contents) def preview(self, name): return self.client.thumbnail(self.path(name), 's') diff --git a/gedgo/templates/default/base.html b/gedgo/templates/default/base.html index 61ccaab..042470d 100644 --- a/gedgo/templates/default/base.html +++ b/gedgo/templates/default/base.html @@ -46,7 +46,7 @@ + {% if can_search %} +
+
+ + +
+ {% if rquery %} clear{% endif %} + + + {% endif %}
{% endblock %} diff --git a/gedgo/views/research.py b/gedgo/views/research.py index d37236f..1f4845c 100644 --- a/gedgo/views/research.py +++ b/gedgo/views/research.py @@ -42,7 +42,10 @@ def research(request, pathname): if '.' in name: return serve_content(storage, name) else: - directories, files = storage.listdir(name) + if request.GET.get('rq') and hasattr(storage, 'search'): + directories, files = storage.search(request.GET['rq'], name) + else: + directories, files = storage.listdir(name) directories = [process_file(name, d, True) for d in directories] files = [process_file(name, f, False) for f in files] @@ -59,6 +62,9 @@ def research(request, pathname): request, 'research.html', { + 'pathname': name, + 'can_search': hasattr(storage, 'search'), + 'rquery': request.GET.get('rq', ''), 'directories': directories, 'files': files, 'levels': levels @@ -81,7 +87,7 @@ def process_file(name, p, is_dir=False): return { 'type': type_, 'path': path.join(name, p), - 'name': p, + 'name': path.basename(p), 'preview': can_preview(p) }