コード例 #1
0
def test_get_category_by_name(tag_category_factory):
    category = tag_category_factory(name="test")
    db.session.add(category)
    db.session.flush()
    assert tag_categories.get_category_by_name("test") == category
    assert tag_categories.get_category_by_name("TEST") == category
    with pytest.raises(tag_categories.TagCategoryNotFoundError):
        tag_categories.get_category_by_name("-")
コード例 #2
0
ファイル: test_tag_categories.py プロジェクト: rr-/szurubooru
def test_get_category_by_name(tag_category_factory):
    category = tag_category_factory(name='test')
    db.session.add(category)
    db.session.flush()
    assert tag_categories.get_category_by_name('test') == category
    assert tag_categories.get_category_by_name('TEST') == category
    with pytest.raises(tag_categories.TagCategoryNotFoundError):
        tag_categories.get_category_by_name('-')
コード例 #3
0
 def get(self, ctx, category_name):
     auth.verify_privilege(ctx.user, 'tag_categories:view')
     category = tag_categories.get_category_by_name(category_name)
     if not category:
         raise tag_categories.TagCategoryNotFoundError(
             'Tag category %r not found.' % category_name)
     return _serialize_category_with_details(category)
コード例 #4
0
def set_tag_category_as_default(ctx, params):
    auth.verify_privilege(ctx.user, 'tag_categories:set_default')
    category = tag_categories.get_category_by_name(
        params['category_name'], lock=True)
    tag_categories.set_default_category(category)
    ctx.session.flush()
    snapshots.modify(category, ctx.user)
    ctx.session.commit()
    tags.export_to_json()
    return _serialize(ctx, category)
コード例 #5
0
def delete_tag_category(ctx, params):
    category = tag_categories.get_category_by_name(
        params['category_name'], lock=True)
    versions.verify_version(category, ctx)
    auth.verify_privilege(ctx.user, 'tag_categories:delete')
    tag_categories.delete_category(category)
    snapshots.delete(category, ctx.user)
    ctx.session.commit()
    tags.export_to_json()
    return {}
コード例 #6
0
def test_reusing_own_name(test_ctx, new_name):
    db.session.add(test_ctx.tag_category_factory(name='cat', color='black'))
    db.session.commit()
    result = test_ctx.api.put(
        test_ctx.context_factory(
            input={'name': new_name},
            user=test_ctx.user_factory(rank=db.User.RANK_REGULAR)), 'cat')
    assert result['tagCategory']['name'] == new_name
    category = tag_categories.get_category_by_name('cat')
    assert category.name == new_name
コード例 #7
0
def delete_tag_category(ctx: rest.Context, params: Dict[str,
                                                        str]) -> rest.Response:
    category = tag_categories.get_category_by_name(params["category_name"],
                                                   lock=True)
    versions.verify_version(category, ctx)
    auth.verify_privilege(ctx.user, "tag_categories:delete")
    tag_categories.delete_category(category)
    snapshots.delete(category, ctx.user)
    ctx.session.commit()
    return {}
コード例 #8
0
ファイル: tag_category_api.py プロジェクト: rr-/szurubooru
def set_tag_category_as_default(
        ctx: rest.Context, params: Dict[str, str]) -> rest.Response:
    auth.verify_privilege(ctx.user, 'tag_categories:set_default')
    category = tag_categories.get_category_by_name(
        params['category_name'], lock=True)
    tag_categories.set_default_category(category)
    ctx.session.flush()
    snapshots.modify(category, ctx.user)
    ctx.session.commit()
    return _serialize(ctx, category)
コード例 #9
0
ファイル: tag_category_api.py プロジェクト: rr-/szurubooru
def delete_tag_category(
        ctx: rest.Context, params: Dict[str, str]) -> rest.Response:
    category = tag_categories.get_category_by_name(
        params['category_name'], lock=True)
    versions.verify_version(category, ctx)
    auth.verify_privilege(ctx.user, 'tag_categories:delete')
    tag_categories.delete_category(category)
    snapshots.delete(category, ctx.user)
    ctx.session.commit()
    return {}
コード例 #10
0
def set_tag_category_as_default(ctx: rest.Context,
                                params: Dict[str, str]) -> rest.Response:
    auth.verify_privilege(ctx.user, "tag_categories:set_default")
    category = tag_categories.get_category_by_name(params["category_name"],
                                                   lock=True)
    tag_categories.set_default_category(category)
    ctx.session.flush()
    snapshots.modify(category, ctx.user)
    ctx.session.commit()
    return _serialize(ctx, category)
コード例 #11
0
def test_reusing_own_name(test_ctx, new_name):
    db.session.add(test_ctx.tag_category_factory(name='cat', color='black'))
    db.session.commit()
    result = test_ctx.api.put(
        test_ctx.context_factory(
            input={'name': new_name},
            user=test_ctx.user_factory(rank=db.User.RANK_REGULAR)),
        'cat')
    assert result['tagCategory']['name'] == new_name
    category = tag_categories.get_category_by_name('cat')
    assert category.name == new_name
コード例 #12
0
 def put(self, ctx, category_name):
     category = tag_categories.get_category_by_name(category_name)
     if ctx.has_param('name'):
         auth.verify_privilege(ctx.user, 'tag_categories:edit:name')
         tag_categories.update_category_name(
             category, ctx.get_param_as_string('name'))
     if ctx.has_param('color'):
         auth.verify_privilege(ctx.user, 'tag_categories:edit:color')
         tag_categories.update_category_color(
             category, ctx.get_param_as_string('color'))
     ctx.session.flush()
     snapshots.save_entity_modification(category, ctx.user)
     ctx.session.commit()
     tags.export_to_json()
     return tag_categories.serialize_category_with_details(category)
コード例 #13
0
 def delete(self, ctx, category_name):
     category = tag_categories.get_category_by_name(category_name)
     auth.verify_privilege(ctx.user, 'tag_categories:delete')
     if len(tag_categories.get_all_category_names()) == 1:
         raise tag_categories.TagCategoryIsInUseError(
             'Cannot delete the default category.')
     if category.tag_count > 0:
         raise tag_categories.TagCategoryIsInUseError(
             'Tag category has some usages and cannot be deleted. ' +
             'Please remove this category from relevant tags first..')
     snapshots.save_entity_deletion(category, ctx.user)
     ctx.session.delete(category)
     ctx.session.commit()
     tags.export_to_json()
     return {}
コード例 #14
0
 def put(self, ctx, category_name):
     category = tag_categories.get_category_by_name(category_name)
     if not category:
         raise tag_categories.TagCategoryNotFoundError(
             'Tag category %r not found.' % category_name)
     if ctx.has_param('name'):
         auth.verify_privilege(ctx.user, 'tag_categories:edit:name')
         tag_categories.update_name(
             category, ctx.get_param_as_string('name'))
     if ctx.has_param('color'):
         auth.verify_privilege(ctx.user, 'tag_categories:edit:color')
         tag_categories.update_color(
             category, ctx.get_param_as_string('color'))
     snapshots.modify(category, ctx.user)
     ctx.session.commit()
     tags.export_to_json()
     return _serialize_category_with_details(category)
コード例 #15
0
def update_tag_category(ctx: rest.Context, params: Dict[str,
                                                        str]) -> rest.Response:
    category = tag_categories.get_category_by_name(params["category_name"],
                                                   lock=True)
    versions.verify_version(category, ctx)
    versions.bump_version(category)
    if ctx.has_param("name"):
        auth.verify_privilege(ctx.user, "tag_categories:edit:name")
        tag_categories.update_category_name(category,
                                            ctx.get_param_as_string("name"))
    if ctx.has_param("color"):
        auth.verify_privilege(ctx.user, "tag_categories:edit:color")
        tag_categories.update_category_color(category,
                                             ctx.get_param_as_string("color"))
    ctx.session.flush()
    snapshots.modify(category, ctx.user)
    ctx.session.commit()
    return _serialize(ctx, category)
コード例 #16
0
def update_tag_category(ctx, params):
    category = tag_categories.get_category_by_name(
        params['category_name'], lock=True)
    versions.verify_version(category, ctx)
    versions.bump_version(category)
    if ctx.has_param('name'):
        auth.verify_privilege(ctx.user, 'tag_categories:edit:name')
        tag_categories.update_category_name(
            category, ctx.get_param_as_string('name'))
    if ctx.has_param('color'):
        auth.verify_privilege(ctx.user, 'tag_categories:edit:color')
        tag_categories.update_category_color(
            category, ctx.get_param_as_string('color'))
    ctx.session.flush()
    snapshots.modify(category, ctx.user)
    ctx.session.commit()
    tags.export_to_json()
    return _serialize(ctx, category)
コード例 #17
0
ファイル: tag_category_api.py プロジェクト: rr-/szurubooru
def update_tag_category(
        ctx: rest.Context, params: Dict[str, str]) -> rest.Response:
    category = tag_categories.get_category_by_name(
        params['category_name'], lock=True)
    versions.verify_version(category, ctx)
    versions.bump_version(category)
    if ctx.has_param('name'):
        auth.verify_privilege(ctx.user, 'tag_categories:edit:name')
        tag_categories.update_category_name(
            category, ctx.get_param_as_string('name'))
    if ctx.has_param('color'):
        auth.verify_privilege(ctx.user, 'tag_categories:edit:color')
        tag_categories.update_category_color(
            category, ctx.get_param_as_string('color'))
    ctx.session.flush()
    snapshots.modify(category, ctx.user)
    ctx.session.commit()
    return _serialize(ctx, category)
コード例 #18
0
def test_simple_updating(test_ctx):
    category = test_ctx.tag_category_factory(name='name', color='black')
    db.session.add(category)
    db.session.commit()
    result = test_ctx.api.put(
        test_ctx.context_factory(
            input={
                'name': 'changed',
                'color': 'white',
            },
            user=test_ctx.user_factory(rank=db.User.RANK_REGULAR)), 'name')
    assert result['tagCategory'] == {
        'name': 'changed',
        'color': 'white',
        'usages': 0,
    }
    assert len(result['snapshots']) == 1
    assert tag_categories.try_get_category_by_name('name') is None
    category = tag_categories.get_category_by_name('changed')
    assert category is not None
    assert category.name == 'changed'
    assert category.color == 'white'
    assert os.path.exists(os.path.join(config.config['data_dir'], 'tags.json'))
コード例 #19
0
def test_simple_updating(test_ctx):
    category = test_ctx.tag_category_factory(name='name', color='black')
    db.session.add(category)
    db.session.commit()
    result = test_ctx.api.put(
        test_ctx.context_factory(
            input={
                'name': 'changed',
                'color': 'white',
            },
            user=test_ctx.user_factory(rank=db.User.RANK_REGULAR)),
        'name')
    assert result['tagCategory'] == {
        'name': 'changed',
        'color': 'white',
        'usages': 0,
    }
    assert len(result['snapshots']) == 1
    assert tag_categories.try_get_category_by_name('name') is None
    category = tag_categories.get_category_by_name('changed')
    assert category is not None
    assert category.name == 'changed'
    assert category.color == 'white'
    assert os.path.exists(os.path.join(config.config['data_dir'], 'tags.json'))
コード例 #20
0
def get_tag_category(ctx, params):
    auth.verify_privilege(ctx.user, 'tag_categories:view')
    category = tag_categories.get_category_by_name(params['category_name'])
    return _serialize(ctx, category)
コード例 #21
0
def get_tag_category(ctx: rest.Context, params: Dict[str,
                                                     str]) -> rest.Response:
    auth.verify_privilege(ctx.user, "tag_categories:view")
    category = tag_categories.get_category_by_name(params["category_name"])
    return _serialize(ctx, category)
コード例 #22
0
def update_tag_category_name(tag, category_name):
    assert tag
    tag.category = tag_categories.get_category_by_name(category_name)
コード例 #23
0
 def get(self, ctx, category_name):
     auth.verify_privilege(ctx.user, 'tag_categories:view')
     category = tag_categories.get_category_by_name(category_name)
     return tag_categories.serialize_category_with_details(category)
コード例 #24
0
def update_tag_category_name(tag: model.Tag, category_name: str) -> None:
    assert tag
    tag.category = tag_categories.get_category_by_name(category_name)
コード例 #25
0
ファイル: tags.py プロジェクト: rr-/szurubooru
def update_tag_category_name(tag: model.Tag, category_name: str) -> None:
    assert tag
    tag.category = tag_categories.get_category_by_name(category_name)
コード例 #26
0
ファイル: tag_category_api.py プロジェクト: rr-/szurubooru
def get_tag_category(
        ctx: rest.Context, params: Dict[str, str]) -> rest.Response:
    auth.verify_privilege(ctx.user, 'tag_categories:view')
    category = tag_categories.get_category_by_name(params['category_name'])
    return _serialize(ctx, category)