summaryrefslogtreecommitdiff
path: root/src/frest/templates/routes.txt
blob: 11ba63aa2fe90cbc205cb1ce116f8b8159b613eb (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
from flask import Blueprint, request, abort
from frest.utils import http_call, model_serialize
from frest.decorators import check_token, admin_required
from .models import %%NAME%%
from .forms import %%NAME%%Form
from database import db
import json
from datetime import datetime
from pytz import timezone

api = Blueprint("%%name%%s", __name__)


@api.route("/api/%%name%%")
def all_%%name%%s():
    return http_call(
        [
            model_serialize(i, params="%%params%%")
            for i in %%NAME%%.query.all()
        ],
        200,
    )


@api.route("/api/%%name%%/<%%name%%Id>")
def get_%%name%%(%%name%%Id):
    %%first_char%% = %%NAME%%.query.filter_by(%%name%%Id=%%name%%Id).first()
    if not %%first_char%%:
        abort(404)

    return http_call(model_serialize(%%first_char%%, params="%%params%%"), 200)


@api.route("/api/%%name%%/<%%name%%Id>", methods=["DELETE"])
@check_token
def delete_%%name%%(%%name%%Id):
    %%first_char%% = %%NAME%%.query.filter_by(%%name%%Id=%%name%%Id)
    if not %%first_char%%:
        abort(404)

    deleted = %%first_char%%.delete()
    db.session.commit()

    return http_call({"delete": deleted}, 200)


@api.route("/api/%%name%%", methods=["POST"])
@check_token
def new_%%name%%():
    if not request.json:
        abort(400)

    form = %%NAME%%Form(request.json)

    if form.is_valid():
        %%first_char%% = %%NAME%%(
            %%params_form%%
        )
        db.session.add(%%first_char%%)

        db.session.commit()

        return http_call({"%%name%%Id": %%first_char%%.%%name%%Id}, 201)

    abort(400)


@api.route("/api/%%name%%/<%%name%%Id>", methods=["PUT"])
@check_token
def edit_%%name%%(%%name%%Id):
    if not request.json:
        abort(400)

    form = %%NAME%%Form(request.json)

    if form.is_valid():
        %%first_char%% = %%NAME%%.query.filter_by(%%name%%Id=%%name%%Id).first()
        if not %%first_char%%:
            abort(404)

        %%params_put%%    
        %%first_char%%.updated_at = datetime.now(timezone("Europe/Rome"))

        db.session.commit()

        return http_call({"%%name%%Id": %%first_char%%.%%name%%Id}, 200)

    abort(400)