diff options
| author | Hunternif | 2019-04-10 01:20:08 +0700 |
|---|---|---|
| committer | Hunternif | 2019-04-10 01:20:08 +0700 |
| commit | 51c0f500c0293e0fdf7e686296b45db09bdfe287 (patch) | |
| tree | cb2e311822d5345b32f7d823420a690f857006d3 /server | |
| parent | fdf2ecd5418c28257b67073bd914534a49bff6de (diff) | |
server/post/around: random post id
Diffstat (limited to 'server')
| -rw-r--r-- | server/szurubooru/search/executor.py | 11 |
1 files changed, 9 insertions, 2 deletions
diff --git a/server/szurubooru/search/executor.py b/server/szurubooru/search/executor.py index d5f43b0..3d7233e 100644 --- a/server/szurubooru/search/executor.py +++ b/server/szurubooru/search/executor.py @@ -37,7 +37,7 @@ class Executor: def get_around( self, query_text: str, - entity_id: int) -> Tuple[model.Base, model.Base]: + entity_id: int) -> Tuple[model.Base, model.Base, model.Base]: search_query = self.parser.parse(query_text) self.config.on_search_query_parsed(search_query) filter_query = ( @@ -58,9 +58,15 @@ class Executor: .order_by(None) .order_by(sa.func.abs(self.config.id_column - entity_id).asc()) .limit(1)) + # random post + if 'sort:random' not in query_text: + query_text = query_text + ' sort:random' + count, random_entities = self.execute(query_text, 0, 1) return ( prev_filter_query.one_or_none(), - next_filter_query.one_or_none()) + next_filter_query.one_or_none(), + random_entities[0] if random_entities else None + ) def get_around_and_serialize( self, @@ -73,6 +79,7 @@ class Executor: return { 'prev': serializer(entities[0]), 'next': serializer(entities[1]), + 'random': serializer(entities[2]), } def execute( |