diff options
| author | Pepper <pepper@scannerjammer.com> | 2021-02-01 16:52:23 +0000 |
|---|---|---|
| committer | Pepper <pepper@scannerjammer.com> | 2021-02-01 16:52:23 +0000 |
| commit | 2c44ff7fa5bdf50b85fcce7357320d9531ef7c90 (patch) | |
| tree | f23360cbf7644c124a61fc5c2b99b12a4ddf6954 | |
| parent | b1351870c85d7d4a9f777a7d8494292cd1b8aa54 (diff) | |
adding text search
| -rw-r--r-- | photoblaster/db/models/__init__.py | 7 | ||||
| -rw-r--r-- | photoblaster/server.py | 56 |
2 files changed, 60 insertions, 3 deletions
diff --git a/photoblaster/db/models/__init__.py b/photoblaster/db/models/__init__.py index 85784e0..56c5741 100644 --- a/photoblaster/db/models/__init__.py +++ b/photoblaster/db/models/__init__.py @@ -27,9 +27,12 @@ class Actions(object): raise @classmethod - def _search(cls, **kwargs): + def _search(cls, text=None, **kwargs): global session - query = session.query(cls).filter_by(**kwargs) + query = session.query(cls) + if text is not None: + query = query.filter(cls.url.like('%' + text + '%')) + query = query.filter_by(**kwargs) session.close() return query try: diff --git a/photoblaster/server.py b/photoblaster/server.py index 72769fc..90e1c83 100644 --- a/photoblaster/server.py +++ b/photoblaster/server.py @@ -210,6 +210,9 @@ class Server(object): if request.args.get('addr'): search_params['remote_addr'] = request.args['remote_addr'] qs.append("addr=" + request.args['addr']) + if request.args.get('text'): + search_params['text'] = request.args['text'] + qs.append("text=" + request.args['text']) limit = int(request.args.get('limit', 20)) if limit > GALLERY_LIMIT: limit = GALLERY_LIMIT @@ -229,7 +232,7 @@ class Server(object): ) for image in images] else: images = [ - "http://i.asdf.us/im/%s/%s" % + "https://s3.amazonaws.com/i.asdf.us/im/%s/%s" % (image.dir, image.newfile) for image in images ] @@ -246,6 +249,57 @@ class Server(object): newer=newer, qs=qs ) + @self.app.route('/im/gallery_reload/', methods=['GET']) + @self.app.route('/im/gallery_reload', methods=['GET']) + def gallery_reload(): + search_params = {"deleted": None} + qs = [] + if request.args.get('tag'): + search_params['tag'] = GALLERY_TAG_TRANS.get( + request.args['tag'], request.args['tag']) + qs.append("tag=" + request.args['tag']) + if request.args.get('name'): + search_params['name'] = request.args['name'] + qs.append("name=" + request.args['name']) + if request.args.get('addr'): + search_params['remote_addr'] = request.args['remote_addr'] + qs.append("addr=" + request.args['addr']) + limit = int(request.args.get('limit', 20)) + if limit > GALLERY_LIMIT: + limit = GALLERY_LIMIT + offset = int(request.args.get('start', 0)) + if request.args.get('random'): + results = ImCmd.search_random(**search_params) + if 'start' not in request.args: + qs.append("random=" + request.args['random']) + else: + results = ImCmd.search(**search_params) + images = results.limit(limit).offset(offset).all() + if LOCAL: + images = ["http://%s:%s/im/cache/%s" % ( + SERVER_HOST, + SERVER_PORT, + image.newfile + ) for image in images] + else: + images = [ + "https://s3.amazonaws.com/i.asdf.us/im/%s/%s" % + (image.dir, image.newfile) for + image in images + ] + older = offset + limit + newer = offset - limit + if limit != 20: + qs.append("limit=%s" % limit) + qs = "&".join(qs) + + return render_template( + 'gallery_reload.html', + images=images, + older=older, + newer=newer, + qs=qs + ) @self.app.route('/im/cache/<path:path>', methods=['GET']) def local_cache(path): |
