-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathapi.py
130 lines (95 loc) · 3.64 KB
/
api.py
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
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
# -*- coding: utf-8 -*-
from flask import Flask, jsonify, abort, make_response, request, redirect, url_for
from flask_cors import CORS
from dateutil import parser
from peewee import *
import json
from datamodel import *
import settings
from slack_notify import *
api = Flask(__name__)
CORS(api)
# 404の時は以下を返す
@api.errorhandler(404)
def not_found(error):
return make_response(jsonify({'error': 'Not found'}), 404)
# 処理する前にdbへ接続する
@api.before_request
def before_request_handler():
db.connect()
# 処理した後にdbを切断する
@api.teardown_request
def after_request_handler(exc):
if not db.is_closed():
db.close()
# 全件取得
@api.route('/tasks/', methods=['GET'])
def get_tasks():
data = []
obj = Tasks.select().dicts().order_by(Tasks.time.desc())
for task in obj:
data.append(task)
return make_response(jsonify(data))
# 1件取得
@api.route('/tasks/<string:id>/', methods=['GET'])
def get_task(id):
data = []
obj = Tasks.select().where(Tasks.id == id).dicts()
for task in obj:
data.append(task)
return make_response(jsonify(data))
# 新規作成
@api.route('/tasks/', methods=['POST'])
def create_task():
Tasks.create(
time=request.form['time'],
title=request.form['title'],
manager=request.form['manager'],
published_at=parser.parse(request.form['published_at']).date(
) if request.form['published_at'] != '' else '',
recorded=int(request.form['recorded']),
edited=int(request.form['edited']),
reviewed=int(request.form['reviewed']),
drew_thumbnail=int(request.form['drew_thumbnail']),
reserved=int(request.form['reserved']),
released=int(request.form['released']),
drew_comic=int(request.form['drew_comic']),
tweeted=int(request.form['tweeted']),
folder_id=request.form['folder_id'],
record_url=request.form['record_url'],
thumbnail_url=request.form['thumbnail_url'],
comic_url=request.form['comic_url'])
notify(request.form)
return make_response(jsonify({'result': 'Uploaded'}), 200)
# 編集
@api.route('/tasks/<string:id>/', methods=['PATCH'])
def update_task(id):
updating_task = Tasks.get(Tasks.id == id)
updating_task.time = request.form['time']
updating_task.title = request.form['title']
updating_task.manager = request.form['manager']
updating_task.published_at = parser.parse(request.form['published_at']).date(
) if request.form['published_at'] != '' else ''
updating_task.recorded = int(request.form['recorded'])
updating_task.edited = int(request.form['edited'])
updating_task.reviewed = int(request.form['reviewed'])
updating_task.drew_thumbnail = int(request.form['drew_thumbnail'])
updating_task.reserved = int(request.form['reserved'])
updating_task.released = int(request.form['released'])
updating_task.drew_comic = int(request.form['drew_comic'])
updating_task.tweeted = int(request.form['tweeted'])
updating_task.folder_id = request.form['folder_id']
updating_task.record_url = request.form['record_url']
updating_task.thumbnail_url = request.form['thumbnail_url']
updating_task.comic_url = request.form['comic_url']
updating_task.save()
notify(request.form)
return make_response(jsonify({'result': 'Updated'}), 200)
# 削除
@api.route('/tasks/<string:id>/', methods=['DELETE'])
def delete_task(id):
deleting_task = Tasks.get(Tasks.id == id)
deleting_task.delete_instance()
return make_response(jsonify({'result': 'Deleted'}), 200)
if __name__ == '__main__':
api.run(host='0.0.0.0', port=settings.FLASK_PORT)