Ejemplo n.º 1
0
from datetime import datetime
from typing import Dict, List, Optional

from szurubooru import db, model, rest, search
from szurubooru.func import auth, pools, serialization, snapshots, versions

_search_executor = search.Executor(search.configs.PoolSearchConfig())


def _serialize(ctx: rest.Context, pool: model.Pool) -> rest.Response:
    return pools.serialize_pool(
        pool, options=serialization.get_serialization_options(ctx))


def _get_pool(params: Dict[str, str]) -> model.Pool:
    return pools.get_pool_by_id(params["pool_id"])


@rest.routes.get("/pools/?")
def get_pools(ctx: rest.Context,
              _params: Dict[str, str] = {}) -> rest.Response:
    auth.verify_privilege(ctx.user, "pools:list")
    return _search_executor.execute_and_serialize(
        ctx, lambda pool: _serialize(ctx, pool))


@rest.routes.post("/pool/?")
def create_pool(ctx: rest.Context,
                _params: Dict[str, str] = {}) -> rest.Response:
    auth.verify_privilege(ctx.user, "pools:create")
Ejemplo n.º 2
0
def executor():
    return search.Executor(search.configs.PostSearchConfig())
Ejemplo n.º 3
0
from typing import Optional, Dict, List
from datetime import datetime
from szurubooru import db, model, errors, rest, search
from szurubooru.func import (auth, tags, posts, snapshots, favorites, scores,
                             serialization, versions)

_search_executor_config = search.configs.PostSearchConfig()
_search_executor = search.Executor(_search_executor_config)


def _get_post_id(params: Dict[str, str]) -> int:
    try:
        return int(params['post_id'])
    except TypeError:
        raise posts.InvalidPostIdError('잘못된 짤 ID: %r.' % params['post_id'])


def _get_post(params: Dict[str, str]) -> model.Post:
    return posts.get_post_by_id(_get_post_id(params))


def _serialize_post(ctx: rest.Context,
                    post: Optional[model.Post]) -> rest.Response:
    return posts.serialize_post(
        post, ctx.user, options=serialization.get_serialization_options(ctx))


@rest.routes.get('/posts/?')
def get_posts(ctx: rest.Context,
              _params: Dict[str, str] = {}) -> rest.Response:
    auth.verify_privilege(ctx.user, 'posts:list')
def executor():
    return search.Executor(search.configs.CommentSearchConfig())
Ejemplo n.º 5
0
from datetime import datetime
from typing import Dict, List, Optional

from szurubooru import db, model, rest, search
from szurubooru.func import auth, serialization, snapshots, tags, versions

_search_executor = search.Executor(search.configs.TagSearchConfig())


def _serialize(ctx: rest.Context, tag: model.Tag) -> rest.Response:
    return tags.serialize_tag(
        tag, options=serialization.get_serialization_options(ctx))


def _get_tag(params: Dict[str, str]) -> model.Tag:
    return tags.get_tag_by_name(params["tag_name"])


def _create_if_needed(tag_names: List[str], user: model.User) -> None:
    if not tag_names:
        return
    _existing_tags, new_tags = tags.get_or_create_tags_by_names(tag_names)
    if len(new_tags):
        auth.verify_privilege(user, "tags:create")
    db.session.flush()
    for tag in new_tags:
        snapshots.create(tag, user)


@rest.routes.get("/tags/?")
def get_tags(ctx: rest.Context, _params: Dict[str, str] = {}) -> rest.Response:
Ejemplo n.º 6
0
def executor():
    return search.Executor(search.configs.UserSearchConfig())
Ejemplo n.º 7
0
from typing import Any, Dict

from szurubooru import model, rest, search
from szurubooru.func import auth, serialization, users, versions

_search_executor = search.Executor(search.configs.UserSearchConfig())


def _serialize(ctx: rest.Context, user: model.User,
               **kwargs: Any) -> rest.Response:
    return users.serialize_user(
        user,
        ctx.user,
        options=serialization.get_serialization_options(ctx),
        **kwargs)


@rest.routes.get("/users/?")
def get_users(ctx: rest.Context,
              _params: Dict[str, str] = {}) -> rest.Response:
    auth.verify_privilege(ctx.user, "users:list")
    return _search_executor.execute_and_serialize(
        ctx, lambda user: _serialize(ctx, user))


@rest.routes.post("/users/?")
def create_user(ctx: rest.Context,
                _params: Dict[str, str] = {}) -> rest.Response:
    if ctx.user.user_id is None:
        auth.verify_privilege(ctx.user, "users:create:self")
    else:
Ejemplo n.º 8
0
from typing import Dict
from datetime import datetime
from szurubooru import search, rest, model
from szurubooru.func import (auth, comments, posts, scores, versions,
                             serialization)

_search_executor = search.Executor(search.configs.CommentSearchConfig())


def _get_comment(params: Dict[str, str]) -> model.Comment:
    try:
        comment_id = int(params['comment_id'])
    except TypeError:
        raise comments.InvalidCommentIdError('잘못된 댓글 ID: %r.' %
                                             params['comment_id'])
    return comments.get_comment_by_id(comment_id)


def _serialize(ctx: rest.Context, comment: model.Comment) -> rest.Response:
    return comments.serialize_comment(
        comment,
        ctx.user,
        options=serialization.get_serialization_options(ctx))


@rest.routes.get('/comments/?')
def get_comments(ctx: rest.Context,
                 _params: Dict[str, str] = {}) -> rest.Response:
    auth.verify_privilege(ctx.user, 'comments:list')
    return _search_executor.execute_and_serialize(
        ctx, lambda comment: _serialize(ctx, comment))