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)
|