diff options
Diffstat (limited to 'server/szurubooru/api/post_api.py')
| -rw-r--r-- | server/szurubooru/api/post_api.py | 16 |
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() |