-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathmain.py
More file actions
executable file
·128 lines (104 loc) · 3.79 KB
/
main.py
File metadata and controls
executable file
·128 lines (104 loc) · 3.79 KB
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
#!/usr/bin/env python
# -*- coding:utf-8 -*-
from flask import Flask, request, redirect, flash, render_template, url_for
from flask import g, jsonify, render_template, request, abort, make_response, session
import rethinkdb as r
from rethinkdb.errors import RqlRuntimeError, RqlDriverError
from threading import Thread
import json
import os
db_host = ''
flask_host = ''
try:
db_host = os.environ["DB_HOST"]
flask_host = os.environ["FLASK_HOST"]
except:
db_host = 'localhost'
flask_host = 'localhost'
rdb = r.RethinkDB()
app = Flask(__name__, static_url_path='')
app.config.from_object(__name__)
app.config.update(dict(DEBUG=True,
RDB_HOST=db_host,
RDB_PORT=28015,
DB_NAME='fanuc',
TABLE='ib30_error'))
# ---------------- DB Setting ------------------
@app.before_request
def before_request():
try:
g.rdb_conn = rdb.connect(host=app.config['RDB_HOST'],
port=app.config['RDB_PORT'])
g.rdb_conn.use(app.config['DB_NAME'])
except RqlDriverError:
abort(503, "No database connection could be established.")
@app.teardown_request
def teardown_request(exception):
try:
g.rdb_conn.close()
except AttributeError:
pass
def get_type(name):
return rdb.table(app.config['TABLE']).filter({'type': name}).run(g.rdb_conn)
def get_title(name):
return rdb.table(app.config['TABLE']).filter({'title': name}).run(g.rdb_conn)
def get_number(name):
return rdb.table(app.config['TABLE']).filter({'number': name}).run(g.rdb_conn)
def get_error(name, number):
return rdb.table(app.config['TABLE']).filter(
(rdb.row('title').eq(name)) & (rdb.row('number').eq(number))
).run(g.rdb_conn)
def get_all():
return list(rdb.table(app.config['TABLE']).run(g.rdb_conn))
def delete():
for val in get_all():
rdb.table(app.config['TABLE']).get(val['id']).delete().run(g.rdb_conn)
def insert(title, typ, number, cause, desc, remedy):
rdb.table(app.config['TABLE']).insert({"title": title,
"type": typ,
"number": number,
"cause": cause,
"desc": desc,
"remedy": remedy}).run(g.rdb_conn)
#--------------------- URL --------------
@app.route('/')
def index():
data = jsonify(get_all())
return data
@app.route('/type/<string:typ>')
def type_t(typ):
data = list(get_type(typ.upper()))
return jsonify(data)
@app.route('/no/<string:number>')
def no(number):
data = list(get_number(number))
return jsonify(data)
@app.route('/title/<string:name>')
def name(name):
data = list(get_title(name.upper()))
return jsonify(data)
@app.route('/error/<string:name>/<string:number>')
def error_t(name,number):
data = list(get_error(name.upper(),number))
return jsonify(data)
@app.route('/delete/<string:id>')
def delete(id):
data = delete(id)
return jsonify(data)
#test curl -H "Content-Type: application/json" -X POST -d '{"title":"test","type":"WARN","number":"001","cause":"","desc":"","remedy":""}' http://127.0.0.1:5000/
@app.route('/', methods=['POST'])
def add():
if (request.is_json) :
content = request.get_json()
data = insert(title=content['title'],
typ=content['type'],
number=content['number'],
cause=content['cause'],
desc=content['desc'],
remedy=content['remedy'])
return jsonify(data)
else:
return 'ERROR Message'
#-------------------- main --------------
if __name__ == '__main__':
app.run(debug = True, host=flask_host)