NoteApi

Форк
0
71 строка · 2.4 Кб
1
from api import auth, abort, g, Resource, reqparse
2
from api.models.tag import TagModel
3
from api.schemas.tag import TagSchema
4
from flask_apispec.views import MethodResource
5
from flask_apispec import marshal_with, use_kwargs, doc
6
from webargs import fields
7

8

9
@doc(tags=['Tags'])
10
class TagsResource(MethodResource):
11
    @doc(description="Returns tag")
12
    @doc(summary="Get tag by id")
13
    @doc(responses={200: {"description": "Tag by id"}})
14
    @doc(responses={404: {"description": "Tag not found"}})
15
    @marshal_with(TagSchema, code=200)
16
    def get(self, tag_id):
17
        tag = TagModel.query.get(tag_id)
18
        if not tag:
19
            abort(404, error=f"Tag with id={tag_id} not found")
20
        return tag, 200
21

22
    @auth.login_required
23
    @doc(security=[{"basicAuth": []}])
24
    @doc(description="Returns changed tag")
25
    @doc(summary="Change tag name")
26
    @doc(responses={201: {"description": "Tag name changed"}})
27
    @doc(responses={404: {"description": "Tag not found"}})
28
    @use_kwargs({"name": fields.Str()})
29
    @marshal_with(TagSchema, code=201)
30
    def put(self, tag_id, **kwargs):
31
        tag = TagModel.query.get(tag_id)
32
        if not tag:
33
            abort(404, error=f"Tag with id={tag_id} not found")
34
        tag.name = kwargs["name"]
35
        tag.save()
36
        return tag, 201
37

38
    @auth.login_required
39
    @doc(security=[{"basicAuth": []}])
40
    @doc(description="Deletes tag")
41
    @doc(summary="Deletes tag by id")
42
    @doc(responses={201: {"description": "Tag deleted"}})
43
    @doc(responses={404: {"description": "Tag not found"}})
44
    @marshal_with(TagSchema, code=201)
45
    def delete(self, tag_id):
46
        tag = TagModel.query.get(tag_id)
47
        if not tag:
48
            abort(404, error=f"Tag with id={tag_id} not found")
49
        tag.delete()
50
        return tag, 201
51

52

53
@doc(tags=['Tags'])
54
class TagsListResource(MethodResource):
55
    @doc(description="Returns all tags")
56
    @doc(summary="Get all tags")
57
    @doc(responses={200: {"description": "List of all tags"}})
58
    @marshal_with(TagSchema(many=True), code=200)
59
    def get(self):
60
        tags = TagModel.query.all()
61
        return tags, 200
62

63
    @doc(description="Returns created tag")
64
    @doc(summary="Create new tag")
65
    @doc(responses={201: {"description": "Created tag"}})
66
    @use_kwargs({"name": fields.Str()})
67
    @marshal_with(TagSchema, code=201)
68
    def post(self, **kwargs):
69
        tag = TagModel(**kwargs)
70
        tag.save()
71
        return tag, 201
72

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.