diff options
| author | rr- | 2017-10-01 21:46:53 +0200 |
|---|---|---|
| committer | rr- | 2017-10-01 21:48:00 +0200 |
| commit | 1c4c5c5f91dbce7234796daddbb74923638659e7 (patch) | |
| tree | 1e621ec97c8455613303df066e4d74612f6f1dd0 /server/szurubooru | |
| parent | 253e28c1b5e6757057c0dd36a11fd5063e07ff79 (diff) | |
remove tags.json
Diffstat (limited to 'server/szurubooru')
18 files changed, 80 insertions, 201 deletions
diff --git a/server/szurubooru/api/post_api.py b/server/szurubooru/api/post_api.py index 51deed2..27f10c1 100644 --- a/server/szurubooru/api/post_api.py +++ b/server/szurubooru/api/post_api.py @@ -73,7 +73,6 @@ def create_post( for tag in new_tags: snapshots.create(tag, None if anonymous else ctx.user) ctx.session.commit() - tags.export_to_json() return _serialize_post(ctx, post) @@ -126,7 +125,6 @@ def update_post(ctx: rest.Context, params: Dict[str, str]) -> rest.Response: ctx.session.flush() snapshots.modify(post, ctx.user) ctx.session.commit() - tags.export_to_json() return _serialize_post(ctx, post) @@ -138,7 +136,6 @@ def delete_post(ctx: rest.Context, params: Dict[str, str]) -> rest.Response: snapshots.delete(post, ctx.user) posts.delete(post) ctx.session.commit() - tags.export_to_json() return {} diff --git a/server/szurubooru/api/tag_api.py b/server/szurubooru/api/tag_api.py index f02f803..f9a15e7 100644 --- a/server/szurubooru/api/tag_api.py +++ b/server/szurubooru/api/tag_api.py @@ -54,7 +54,6 @@ def create_tag( ctx.session.flush() snapshots.create(tag, ctx.user) ctx.session.commit() - tags.export_to_json() return _serialize(ctx, tag) @@ -95,7 +94,6 @@ def update_tag(ctx: rest.Context, params: Dict[str, str]) -> rest.Response: ctx.session.flush() snapshots.modify(tag, ctx.user) ctx.session.commit() - tags.export_to_json() return _serialize(ctx, tag) @@ -107,7 +105,6 @@ def delete_tag(ctx: rest.Context, params: Dict[str, str]) -> rest.Response: snapshots.delete(tag, ctx.user) tags.delete(tag) ctx.session.commit() - tags.export_to_json() return {} @@ -125,7 +122,6 @@ def merge_tags( tags.merge_tags(source_tag, target_tag) snapshots.merge(source_tag, target_tag, ctx.user) ctx.session.commit() - tags.export_to_json() return _serialize(ctx, target_tag) diff --git a/server/szurubooru/api/tag_category_api.py b/server/szurubooru/api/tag_category_api.py index 63c0559..07da999 100644 --- a/server/szurubooru/api/tag_category_api.py +++ b/server/szurubooru/api/tag_category_api.py @@ -31,7 +31,6 @@ def create_tag_category( ctx.session.flush() snapshots.create(category, ctx.user) ctx.session.commit() - tags.export_to_json() return _serialize(ctx, category) @@ -61,7 +60,6 @@ def update_tag_category( ctx.session.flush() snapshots.modify(category, ctx.user) ctx.session.commit() - tags.export_to_json() return _serialize(ctx, category) @@ -75,7 +73,6 @@ def delete_tag_category( tag_categories.delete_category(category) snapshots.delete(category, ctx.user) ctx.session.commit() - tags.export_to_json() return {} @@ -89,5 +86,4 @@ def set_tag_category_as_default( ctx.session.flush() snapshots.modify(category, ctx.user) ctx.session.commit() - tags.export_to_json() return _serialize(ctx, category) diff --git a/server/szurubooru/func/posts.py b/server/szurubooru/func/posts.py index bb82e57..406f6e1 100644 --- a/server/szurubooru/func/posts.py +++ b/server/szurubooru/func/posts.py @@ -224,7 +224,13 @@ class PostSerializer(serialization.BaseSerializer): return self.post.flags def serialize_tags(self) -> Any: - return [tag.names[0].name for tag in tags.sort_tags(self.post.tags)] + return [ + { + 'names': [name.name for name in tag.names], + 'category': tag.category.name, + 'usages': tag.post_count, + } + for tag in tags.sort_tags(self.post.tags)] def serialize_relations(self) -> Any: return sorted( diff --git a/server/szurubooru/func/tags.py b/server/szurubooru/func/tags.py index 55ee632..7d92f1e 100644 --- a/server/szurubooru/func/tags.py +++ b/server/szurubooru/func/tags.py @@ -72,6 +72,14 @@ def sort_tags(tags: List[model.Tag]) -> List[model.Tag]: ) +def serialize_relation(tag): + return { + 'names': [tag_name.name for tag_name in tag.names], + 'category': tag.category.name, + 'usages': tag.post_count, + } + + class TagSerializer(serialization.BaseSerializer): def __init__(self, tag: model.Tag) -> None: self.tag = tag @@ -112,12 +120,12 @@ class TagSerializer(serialization.BaseSerializer): def serialize_suggestions(self) -> Any: return [ - relation.names[0].name + serialize_relation(relation) for relation in sort_tags(self.tag.suggestions)] def serialize_implications(self) -> Any: return [ - relation.names[0].name + serialize_relation(relation) for relation in sort_tags(self.tag.implications)] @@ -128,67 +136,6 @@ def serialize_tag( return TagSerializer(tag).serialize(options) -def export_to_json() -> None: - tags = {} # type: Dict[int, Any] - categories = {} # type: Dict[int, Any] - - for result in db.session.query( - model.TagCategory.tag_category_id, - model.TagCategory.name, - model.TagCategory.color).all(): - categories[result[0]] = { - 'name': result[1], - 'color': result[2], - } - - for result in ( - db.session - .query(model.TagName.tag_id, model.TagName.name) - .order_by(model.TagName.order) - .all()): - if not result[0] in tags: - tags[result[0]] = {'names': []} - tags[result[0]]['names'].append(result[1]) - - for result in ( - db.session - .query(model.TagSuggestion.parent_id, model.TagName.name) - .join( - model.TagName, - model.TagName.tag_id == model.TagSuggestion.child_id) - .all()): - if 'suggestions' not in tags[result[0]]: - tags[result[0]]['suggestions'] = [] - tags[result[0]]['suggestions'].append(result[1]) - - for result in ( - db.session - .query(model.TagImplication.parent_id, model.TagName.name) - .join( - model.TagName, - model.TagName.tag_id == model.TagImplication.child_id) - .all()): - if 'implications' not in tags[result[0]]: - tags[result[0]]['implications'] = [] - tags[result[0]]['implications'].append(result[1]) - - for result in db.session.query( - model.Tag.tag_id, - model.Tag.category_id, - model.Tag.post_count).all(): - tags[result[0]]['category'] = categories[result[1]]['name'] - tags[result[0]]['usages'] = result[2] - - output = { - 'categories': list(categories.values()), - 'tags': list(tags.values()), - } - - export_path = os.path.join(config.config['data_dir'], 'tags.json') - with open(export_path, 'w') as handle: - handle.write(json.dumps(output, separators=(',', ':'))) - - def try_get_tag_by_name(name: str) -> Optional[model.Tag]: return ( db.session diff --git a/server/szurubooru/search/executor.py b/server/szurubooru/search/executor.py index 0a8202c..10b34b1 100644 --- a/server/szurubooru/search/executor.py +++ b/server/szurubooru/search/executor.py @@ -134,7 +134,7 @@ class Executor: 'offset': offset, 'limit': limit, 'total': count, - 'results': [serializer(entity) for entity in entities], + 'results': list([serializer(entity) for entity in entities]), } def _prepare_db_query( diff --git a/server/szurubooru/tests/api/test_post_creating.py b/server/szurubooru/tests/api/test_post_creating.py index a0561a3..6edcdd3 100644 --- a/server/szurubooru/tests/api/test_post_creating.py +++ b/server/szurubooru/tests/api/test_post_creating.py @@ -30,7 +30,6 @@ def test_creating_minimal_posts( patch('szurubooru.func.posts.update_post_flags'), \ patch('szurubooru.func.posts.update_post_thumbnail'), \ patch('szurubooru.func.posts.serialize_post'), \ - patch('szurubooru.func.tags.export_to_json'), \ patch('szurubooru.func.snapshots.create'): posts.create_post.return_value = (post, []) posts.serialize_post.return_value = 'serialized post' @@ -62,7 +61,6 @@ def test_creating_minimal_posts( posts.serialize_post.assert_called_once_with( post, auth_user, options=[]) snapshots.create.assert_called_once_with(post, auth_user) - tags.export_to_json.assert_called_once_with() def test_creating_full_posts(context_factory, post_factory, user_factory): @@ -78,7 +76,6 @@ def test_creating_full_posts(context_factory, post_factory, user_factory): patch('szurubooru.func.posts.update_post_notes'), \ patch('szurubooru.func.posts.update_post_flags'), \ patch('szurubooru.func.posts.serialize_post'), \ - patch('szurubooru.func.tags.export_to_json'), \ patch('szurubooru.func.snapshots.create'): posts.create_post.return_value = (post, []) posts.serialize_post.return_value = 'serialized post' @@ -111,7 +108,6 @@ def test_creating_full_posts(context_factory, post_factory, user_factory): posts.serialize_post.assert_called_once_with( post, auth_user, options=[]) snapshots.create.assert_called_once_with(post, auth_user) - tags.export_to_json.assert_called_once_with() def test_anonymous_uploads( @@ -121,8 +117,7 @@ def test_anonymous_uploads( db.session.add(post) db.session.flush() - with patch('szurubooru.func.tags.export_to_json'), \ - patch('szurubooru.func.posts.serialize_post'), \ + with patch('szurubooru.func.posts.serialize_post'), \ patch('szurubooru.func.posts.create_post'), \ patch('szurubooru.func.posts.update_post_source'): config_injector({ @@ -152,7 +147,6 @@ def test_creating_from_url_saves_source( db.session.flush() with patch('szurubooru.func.net.download'), \ - patch('szurubooru.func.tags.export_to_json'), \ patch('szurubooru.func.posts.serialize_post'), \ patch('szurubooru.func.posts.create_post'), \ patch('szurubooru.func.posts.update_post_source'): @@ -183,7 +177,6 @@ def test_creating_from_url_with_source_specified( db.session.flush() with patch('szurubooru.func.net.download'), \ - patch('szurubooru.func.tags.export_to_json'), \ patch('szurubooru.func.posts.serialize_post'), \ patch('szurubooru.func.posts.create_post'), \ patch('szurubooru.func.posts.update_post_source'): @@ -245,7 +238,6 @@ def test_omitting_optional_field( patch('szurubooru.func.posts.update_post_notes'), \ patch('szurubooru.func.posts.update_post_flags'), \ patch('szurubooru.func.posts.serialize_post'), \ - patch('szurubooru.func.tags.export_to_json'), \ patch('szurubooru.func.snapshots.create'): posts.create_post.return_value = (post, []) posts.serialize_post.return_value = 'serialized post' diff --git a/server/szurubooru/tests/api/test_post_deleting.py b/server/szurubooru/tests/api/test_post_deleting.py index 643b952..e35a448 100644 --- a/server/szurubooru/tests/api/test_post_deleting.py +++ b/server/szurubooru/tests/api/test_post_deleting.py @@ -14,15 +14,13 @@ def test_deleting(user_factory, post_factory, context_factory): post = post_factory(id=1) db.session.add(post) db.session.flush() - with patch('szurubooru.func.tags.export_to_json'), \ - patch('szurubooru.func.snapshots.delete'): + with patch('szurubooru.func.snapshots.delete'): result = api.post_api.delete_post( context_factory(params={'version': 1}, user=auth_user), {'post_id': 1}) assert result == {} assert db.session.query(model.Post).count() == 0 snapshots.delete.assert_called_once_with(post, auth_user) - tags.export_to_json.assert_called_once_with() def test_trying_to_delete_non_existing(user_factory, context_factory): diff --git a/server/szurubooru/tests/api/test_post_updating.py b/server/szurubooru/tests/api/test_post_updating.py index d364930..fa298ea 100644 --- a/server/szurubooru/tests/api/test_post_updating.py +++ b/server/szurubooru/tests/api/test_post_updating.py @@ -39,7 +39,6 @@ def test_post_updating( patch('szurubooru.func.posts.update_post_notes'), \ patch('szurubooru.func.posts.update_post_flags'), \ patch('szurubooru.func.posts.serialize_post'), \ - patch('szurubooru.func.tags.export_to_json'), \ patch('szurubooru.func.snapshots.modify'), \ fake_datetime('1997-01-01'): posts.serialize_post.return_value = 'serialized post' @@ -78,7 +77,6 @@ def test_post_updating( posts.serialize_post.assert_called_once_with( post, auth_user, options=[]) snapshots.modify.assert_called_once_with(post, auth_user) - tags.export_to_json.assert_called_once_with() assert post.last_edit_time == datetime(1997, 1, 1) @@ -88,7 +86,6 @@ def test_uploading_from_url_saves_source( db.session.add(post) db.session.flush() with patch('szurubooru.func.net.download'), \ - patch('szurubooru.func.tags.export_to_json'), \ patch('szurubooru.func.posts.serialize_post'), \ patch('szurubooru.func.posts.update_post_content'), \ patch('szurubooru.func.posts.update_post_source'), \ @@ -110,7 +107,6 @@ def test_uploading_from_url_with_source_specified( db.session.add(post) db.session.flush() with patch('szurubooru.func.net.download'), \ - patch('szurubooru.func.tags.export_to_json'), \ patch('szurubooru.func.posts.serialize_post'), \ patch('szurubooru.func.posts.update_post_content'), \ patch('szurubooru.func.posts.update_post_source'), \ diff --git a/server/szurubooru/tests/api/test_tag_category_creating.py b/server/szurubooru/tests/api/test_tag_category_creating.py index fbd8b1b..47e8405 100644 --- a/server/szurubooru/tests/api/test_tag_category_creating.py +++ b/server/szurubooru/tests/api/test_tag_category_creating.py @@ -24,8 +24,7 @@ def test_creating_category( with patch('szurubooru.func.tag_categories.create_category'), \ patch('szurubooru.func.tag_categories.serialize_category'), \ patch('szurubooru.func.tag_categories.update_category_name'), \ - patch('szurubooru.func.snapshots.create'), \ - patch('szurubooru.func.tags.export_to_json'): + patch('szurubooru.func.snapshots.create'): tag_categories.create_category.return_value = category tag_categories.update_category_name.side_effect = _update_category_name tag_categories.serialize_category.return_value = 'serialized category' @@ -35,7 +34,6 @@ def test_creating_category( assert result == 'serialized category' tag_categories.create_category.assert_called_once_with('meta', 'black') snapshots.create.assert_called_once_with(category, auth_user) - tags.export_to_json.assert_called_once_with() @pytest.mark.parametrize('field', ['name', 'color']) diff --git a/server/szurubooru/tests/api/test_tag_category_deleting.py b/server/szurubooru/tests/api/test_tag_category_deleting.py index 1fc8643..2bee513 100644 --- a/server/szurubooru/tests/api/test_tag_category_deleting.py +++ b/server/szurubooru/tests/api/test_tag_category_deleting.py @@ -17,8 +17,7 @@ def test_deleting(user_factory, tag_category_factory, context_factory): db.session.add(tag_category_factory(name='root')) db.session.add(category) db.session.flush() - with patch('szurubooru.func.snapshots.delete'), \ - patch('szurubooru.func.tags.export_to_json'): + with patch('szurubooru.func.snapshots.delete'): result = api.tag_category_api.delete_tag_category( context_factory(params={'version': 1}, user=auth_user), {'category_name': 'category'}) @@ -26,7 +25,6 @@ def test_deleting(user_factory, tag_category_factory, context_factory): assert db.session.query(model.TagCategory).count() == 1 assert db.session.query(model.TagCategory).one().name == 'root' snapshots.delete.assert_called_once_with(category, auth_user) - tags.export_to_json.assert_called_once_with() def test_trying_to_delete_used( diff --git a/server/szurubooru/tests/api/test_tag_category_updating.py b/server/szurubooru/tests/api/test_tag_category_updating.py index d406dd1..24a9f6e 100644 --- a/server/szurubooru/tests/api/test_tag_category_updating.py +++ b/server/szurubooru/tests/api/test_tag_category_updating.py @@ -27,8 +27,7 @@ def test_simple_updating(user_factory, tag_category_factory, context_factory): with patch('szurubooru.func.tag_categories.serialize_category'), \ patch('szurubooru.func.tag_categories.update_category_name'), \ patch('szurubooru.func.tag_categories.update_category_color'), \ - patch('szurubooru.func.snapshots.modify'), \ - patch('szurubooru.func.tags.export_to_json'): + patch('szurubooru.func.snapshots.modify'): tag_categories.update_category_name.side_effect = _update_category_name tag_categories.serialize_category.return_value = 'serialized category' result = api.tag_category_api.update_tag_category( @@ -42,7 +41,6 @@ def test_simple_updating(user_factory, tag_category_factory, context_factory): tag_categories.update_category_color.assert_called_once_with( category, 'white') snapshots.modify.assert_called_once_with(category, auth_user) - tags.export_to_json.assert_called_once_with() @pytest.mark.parametrize('field', ['name', 'color']) @@ -56,8 +54,7 @@ def test_omitting_optional_field( } del params[field] with patch('szurubooru.func.tag_categories.serialize_category'), \ - patch('szurubooru.func.tag_categories.update_category_name'), \ - patch('szurubooru.func.tags.export_to_json'): + patch('szurubooru.func.tag_categories.update_category_name'): api.tag_category_api.update_tag_category( context_factory( params={**params, **{'version': 1}}, @@ -95,8 +92,7 @@ def test_set_as_default(user_factory, tag_category_factory, context_factory): db.session.add(category) db.session.commit() with patch('szurubooru.func.tag_categories.serialize_category'), \ - patch('szurubooru.func.tag_categories.set_default_category'), \ - patch('szurubooru.func.tags.export_to_json'): + patch('szurubooru.func.tag_categories.set_default_category'): tag_categories.update_category_name.side_effect = _update_category_name tag_categories.serialize_category.return_value = 'serialized category' result = api.tag_category_api.set_tag_category_as_default( diff --git a/server/szurubooru/tests/api/test_tag_creating.py b/server/szurubooru/tests/api/test_tag_creating.py index 0c8d582..4cee710 100644 --- a/server/szurubooru/tests/api/test_tag_creating.py +++ b/server/szurubooru/tests/api/test_tag_creating.py @@ -15,8 +15,7 @@ def test_creating_simple_tags(tag_factory, user_factory, context_factory): with patch('szurubooru.func.tags.create_tag'), \ patch('szurubooru.func.tags.get_or_create_tags_by_names'), \ patch('szurubooru.func.tags.serialize_tag'), \ - patch('szurubooru.func.snapshots.create'), \ - patch('szurubooru.func.tags.export_to_json'): + patch('szurubooru.func.snapshots.create'): tags.get_or_create_tags_by_names.return_value = ([], []) tags.create_tag.return_value = tag tags.serialize_tag.return_value = 'serialized tag' @@ -34,7 +33,6 @@ def test_creating_simple_tags(tag_factory, user_factory, context_factory): tags.create_tag.assert_called_once_with( ['tag1', 'tag2'], 'meta', ['sug1', 'sug2'], ['imp1', 'imp2']) snapshots.create.assert_called_once_with(tag, auth_user) - tags.export_to_json.assert_called_once_with() @pytest.mark.parametrize('field', ['names', 'category']) @@ -64,8 +62,7 @@ def test_omitting_optional_field( } del params[field] with patch('szurubooru.func.tags.create_tag'), \ - patch('szurubooru.func.tags.serialize_tag'), \ - patch('szurubooru.func.tags.export_to_json'): + patch('szurubooru.func.tags.serialize_tag'): tags.create_tag.return_value = tag_factory() api.tag_api.create_tag( context_factory( diff --git a/server/szurubooru/tests/api/test_tag_deleting.py b/server/szurubooru/tests/api/test_tag_deleting.py index fbd35e1..a0367f2 100644 --- a/server/szurubooru/tests/api/test_tag_deleting.py +++ b/server/szurubooru/tests/api/test_tag_deleting.py @@ -14,15 +14,13 @@ def test_deleting(user_factory, tag_factory, context_factory): tag = tag_factory(names=['tag']) db.session.add(tag) db.session.commit() - with patch('szurubooru.func.tags.export_to_json'), \ - patch('szurubooru.func.snapshots.delete'): + with patch('szurubooru.func.snapshots.delete'): result = api.tag_api.delete_tag( context_factory(params={'version': 1}, user=auth_user), {'tag_name': 'tag'}) assert result == {} assert db.session.query(model.Tag).count() == 0 snapshots.delete.assert_called_once_with(tag, auth_user) - tags.export_to_json.assert_called_once_with() def test_deleting_used( @@ -32,15 +30,14 @@ def test_deleting_used( post.tags.append(tag) db.session.add_all([tag, post]) db.session.commit() - with patch('szurubooru.func.tags.export_to_json'): - api.tag_api.delete_tag( - context_factory( - params={'version': 1}, - user=user_factory(rank=model.User.RANK_REGULAR)), - {'tag_name': 'tag'}) - db.session.refresh(post) - assert db.session.query(model.Tag).count() == 0 - assert post.tags == [] + api.tag_api.delete_tag( + context_factory( + params={'version': 1}, + user=user_factory(rank=model.User.RANK_REGULAR)), + {'tag_name': 'tag'}) + db.session.refresh(post) + assert db.session.query(model.Tag).count() == 0 + assert post.tags == [] def test_trying_to_delete_non_existing(user_factory, context_factory): diff --git a/server/szurubooru/tests/api/test_tag_merging.py b/server/szurubooru/tests/api/test_tag_merging.py index 484fbfa..671e2e4 100644 --- a/server/szurubooru/tests/api/test_tag_merging.py +++ b/server/szurubooru/tests/api/test_tag_merging.py @@ -25,8 +25,7 @@ def test_merging(user_factory, tag_factory, context_factory, post_factory): assert target_tag.post_count == 0 with patch('szurubooru.func.tags.serialize_tag'), \ patch('szurubooru.func.tags.merge_tags'), \ - patch('szurubooru.func.snapshots.merge'), \ - patch('szurubooru.func.tags.export_to_json'): + patch('szurubooru.func.snapshots.merge'): api.tag_api.merge_tags( context_factory( params={ @@ -39,7 +38,6 @@ def test_merging(user_factory, tag_factory, context_factory, post_factory): tags.merge_tags.called_once_with(source_tag, target_tag) snapshots.merge.assert_called_once_with( source_tag, target_tag, auth_user) - tags.export_to_json.assert_called_once_with() @pytest.mark.parametrize( diff --git a/server/szurubooru/tests/api/test_tag_updating.py b/server/szurubooru/tests/api/test_tag_updating.py index fb63e35..0b8aa70 100644 --- a/server/szurubooru/tests/api/test_tag_updating.py +++ b/server/szurubooru/tests/api/test_tag_updating.py @@ -31,8 +31,7 @@ def test_simple_updating(user_factory, tag_factory, context_factory): patch('szurubooru.func.tags.update_tag_suggestions'), \ patch('szurubooru.func.tags.update_tag_implications'), \ patch('szurubooru.func.tags.serialize_tag'), \ - patch('szurubooru.func.snapshots.modify'), \ - patch('szurubooru.func.tags.export_to_json'): + patch('szurubooru.func.snapshots.modify'): tags.get_or_create_tags_by_names.return_value = ([], []) tags.serialize_tag.return_value = 'serialized tag' result = api.tag_api.update_tag( @@ -58,7 +57,6 @@ def test_simple_updating(user_factory, tag_factory, context_factory): tag, ['imp1', 'imp2']) tags.serialize_tag.assert_called_once_with(tag, options=[]) snapshots.modify.assert_called_once_with(tag, auth_user) - tags.export_to_json.assert_called_once_with() @pytest.mark.parametrize( @@ -84,8 +82,7 @@ def test_omitting_optional_field( with patch('szurubooru.func.tags.create_tag'), \ patch('szurubooru.func.tags.update_tag_names'), \ patch('szurubooru.func.tags.update_tag_category_name'), \ - patch('szurubooru.func.tags.serialize_tag'), \ - patch('szurubooru.func.tags.export_to_json'): + patch('szurubooru.func.tags.serialize_tag'): api.tag_api.update_tag( context_factory( params={**params, **{'version': 1}}, diff --git a/server/szurubooru/tests/func/test_posts.py b/server/szurubooru/tests/func/test_posts.py index 2c41d96..e296ec0 100644 --- a/server/szurubooru/tests/func/test_posts.py +++ b/server/szurubooru/tests/func/test_posts.py @@ -75,7 +75,11 @@ def test_serialize_post_when_empty(): def test_serialize_post( - user_factory, comment_factory, tag_factory, config_injector): + user_factory, + comment_factory, + tag_factory, + tag_category_factory, + config_injector): config_injector({'data_url': 'http://example.com/', 'secret': 'test'}) with patch('szurubooru.func.comments.serialize_comment'), \ patch('szurubooru.func.users.serialize_micro_user'), \ @@ -92,8 +96,12 @@ def test_serialize_post( post.creation_time = datetime(1997, 1, 1) post.last_edit_time = datetime(1998, 1, 1) post.tags = [ - tag_factory(names=['tag1', 'tag2']), - tag_factory(names=['tag3']) + tag_factory( + names=['tag1', 'tag2'], + category=tag_category_factory('test-cat1')), + tag_factory( + names=['tag3'], + category=tag_category_factory('test-cat2')) ] post.safety = model.Post.SAFETY_SAFE post.source = '4gag' @@ -143,7 +151,7 @@ def test_serialize_post( db.session.flush() result = posts.serialize_post(post, auth_user) - result['tags'].sort() + result['tags'].sort(key=lambda tag: tag['names'][0]) assert result == { 'id': 1, @@ -162,7 +170,17 @@ def test_serialize_post( 'http://example.com/' 'generated-thumbnails/1_244c8840887984c4.jpg', 'flags': ['loop'], - 'tags': ['tag1', 'tag3'], + 'tags': [ + { + 'names': ['tag1', 'tag2'], + 'category': 'test-cat1', 'usages': 1, + }, + { + 'names': ['tag3'], + 'category': 'test-cat2', + 'usages': 1, + }, + ], 'relations': [], 'notes': [], 'user': 'post author', diff --git a/server/szurubooru/tests/func/test_tags.py b/server/szurubooru/tests/func/test_tags.py index 712c8e3..2f888ef 100644 --- a/server/szurubooru/tests/func/test_tags.py +++ b/server/szurubooru/tests/func/test_tags.py @@ -45,15 +45,18 @@ def test_serialize_tag_when_empty(): def test_serialize_tag(post_factory, tag_factory, tag_category_factory): - tag = tag_factory( - names=['tag1', 'tag2'], - category=tag_category_factory(name='cat')) + cat = tag_category_factory(name='cat') + tag = tag_factory(names=['tag1', 'tag2'], category=cat) tag.tag_id = 1 tag.description = 'description' tag.suggestions = [ - tag_factory(names=['sug1']), tag_factory(names=['sug2'])] + tag_factory(names=['sug1'], category=cat), + tag_factory(names=['sug2'], category=cat), + ] tag.implications = [ - tag_factory(names=['impl1']), tag_factory(names=['impl2'])] + tag_factory(names=['impl1'], category=cat), + tag_factory(names=['impl2'], category=cat), + ] tag.last_edit_time = datetime(1998, 1, 1) post1 = post_factory() post2 = post_factory() @@ -62,8 +65,8 @@ def test_serialize_tag(post_factory, tag_factory, tag_category_factory): db.session.add_all([tag, post1, post2]) db.session.flush() result = tags.serialize_tag(tag) - result['suggestions'].sort() - result['implications'].sort() + result['suggestions'].sort(key=lambda relation: relation['names'][0]) + result['implications'].sort(key=lambda relation: relation['names'][0]) assert result == { 'names': ['tag1', 'tag2'], 'version': 1, @@ -71,69 +74,18 @@ def test_serialize_tag(post_factory, tag_factory, tag_category_factory): 'creationTime': datetime(1996, 1, 1, 0, 0), 'lastEditTime': datetime(1998, 1, 1, 0, 0), 'description': 'description', - 'suggestions': ['sug1', 'sug2'], - 'implications': ['impl1', 'impl2'], + 'suggestions': [ + {'names': ['sug1'], 'category': 'cat', 'usages': 0}, + {'names': ['sug2'], 'category': 'cat', 'usages': 0}, + ], + 'implications': [ + {'names': ['impl1'], 'category': 'cat', 'usages': 0}, + {'names': ['impl2'], 'category': 'cat', 'usages': 0}, + ], 'usages': 2, } -def test_export_to_json( - tmpdir, - query_counter, - config_injector, - post_factory, - tag_factory, - tag_category_factory): - config_injector({'data_dir': str(tmpdir)}) - cat1 = tag_category_factory(name='cat1', color='black') - cat2 = tag_category_factory(name='cat2', color='white') - tag = tag_factory(names=['alias1', 'alias2'], category=cat2) - tag.suggestions = [ - tag_factory(names=['sug1'], category=cat1), - tag_factory(names=['sug2'], category=cat1), - ] - tag.implications = [ - tag_factory(names=['imp1'], category=cat1), - tag_factory(names=['imp2'], category=cat1), - ] - post = post_factory() - post.tags = [tag] - db.session.add_all([post, tag]) - db.session.flush() - - with query_counter: - tags.export_to_json() - assert len(query_counter.statements) == 5 - - export_path = os.path.join(str(tmpdir), 'tags.json') - assert os.path.exists(export_path) - with open(export_path, 'r') as handle: - actual_json = json.loads(handle.read()) - assert actual_json['tags'] - assert actual_json['categories'] - actual_json['tags'].sort(key=lambda tag: tag['names'][0]) - actual_json['categories'].sort(key=lambda category: category['name']) - assert actual_json == { - 'tags': [ - { - 'names': ['alias1', 'alias2'], - 'usages': 1, - 'category': 'cat2', - 'suggestions': ['sug1', 'sug2'], - 'implications': ['imp1', 'imp2'], - }, - {'names': ['imp1'], 'usages': 0, 'category': 'cat1'}, - {'names': ['imp2'], 'usages': 0, 'category': 'cat1'}, - {'names': ['sug1'], 'usages': 0, 'category': 'cat1'}, - {'names': ['sug2'], 'usages': 0, 'category': 'cat1'}, - ], - 'categories': [ - {'name': 'cat1', 'color': 'black'}, - {'name': 'cat2', 'color': 'white'}, - ] - } - - @pytest.mark.parametrize('name_to_search,expected_to_find', [ ('name', True), ('NAME', True), |