summaryrefslogtreecommitdiff
path: root/server/szurubooru/api/post_api.py
diff options
context:
space:
mode:
authorrr- <rr-@sakuya.pl>2016-10-21 21:48:08 +0200
committerrr- <rr-@sakuya.pl>2016-10-21 21:48:38 +0200
commit9d6a0e0173831a6284be89cf71c1e627b4d8c0c9 (patch)
treeccd1c651370c974d1a50e6d605bdd54acda6f860 /server/szurubooru/api/post_api.py
parent85d6934ae9fcc0b660433d9094b6cd63824d2409 (diff)
server/posts: add post merging
Diffstat (limited to 'server/szurubooru/api/post_api.py')
-rw-r--r--server/szurubooru/api/post_api.py16
1 files changed, 16 insertions, 0 deletions
diff --git a/server/szurubooru/api/post_api.py b/server/szurubooru/api/post_api.py
index e4d4975..9cb1237 100644
--- a/server/szurubooru/api/post_api.py
+++ b/server/szurubooru/api/post_api.py
@@ -124,6 +124,22 @@ def delete_post(ctx, params):
return {}
+@routes.post('/post-merge/?')
+def merge_posts(ctx, _params=None):
+ source_post_id = ctx.get_param_as_string('remove', required=True) or ''
+ target_post_id = ctx.get_param_as_string('mergeTo', required=True) or ''
+ source_post = posts.get_post_by_id(source_post_id)
+ target_post = posts.get_post_by_id(target_post_id)
+ versions.verify_version(source_post, ctx, 'removeVersion')
+ versions.verify_version(target_post, ctx, 'mergeToVersion')
+ versions.bump_version(target_post)
+ auth.verify_privilege(ctx.user, 'posts:merge')
+ posts.merge_posts(source_post, target_post)
+ snapshots.merge(source_post, target_post, ctx.user)
+ ctx.session.commit()
+ return _serialize_post(ctx, target_post)
+
+
@routes.get('/featured-post/?')
def get_featured_post(ctx, _params=None):
post = posts.try_get_featured_post()