diff options
| author | rr- <rr-@sakuya.pl> | 2016-10-21 21:48:08 +0200 |
|---|---|---|
| committer | rr- <rr-@sakuya.pl> | 2016-10-21 21:48:38 +0200 |
| commit | 9d6a0e0173831a6284be89cf71c1e627b4d8c0c9 (patch) | |
| tree | ccd1c651370c974d1a50e6d605bdd54acda6f860 /server/szurubooru/api/post_api.py | |
| parent | 85d6934ae9fcc0b660433d9094b6cd63824d2409 (diff) | |
server/posts: add post merging
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() |