aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHunternif2019-04-10 01:20:08 +0700
committerHunternif2019-04-10 01:20:08 +0700
commit51c0f500c0293e0fdf7e686296b45db09bdfe287 (patch)
treecb2e311822d5345b32f7d823420a690f857006d3
parentfdf2ecd5418c28257b67073bd914534a49bff6de (diff)
server/post/around: random post id
-rw-r--r--server/szurubooru/search/executor.py11
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(

© 2015 - 2026 Jakob L. Kreuze