This repository has been archived by the owner on Apr 21, 2023. It is now read-only.
/
base_data_handler.py
64 lines (48 loc) · 1.81 KB
/
base_data_handler.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
import json
from flask import request
from utils import return_json
class BaseDataHandler:
def __init__(self, db, model, model_field_names, json_fields=None):
self.db = db
self.model = model
self.model_field_names = model_field_names
self.json_fields = json_fields if json_fields is not None else []
def list(self):
result = []
for model_instance in self.model.query.all():
result.append(model_instance.dump())
return return_json(result)
def create(self):
tmp = json.loads(request.form['entries'])
db_instance = self.model()
for attr in self.model_field_names:
if attr in self.json_fields:
setattr(db_instance, attr, json.dumps(tmp[attr]))
else:
setattr(db_instance, attr, tmp[attr])
self.db.session.add(db_instance)
self.db.session.commit()
return return_json({
'success': True,
'entries': db_instance.dump()
})
def destory(self):
tmp = json.loads(request.form['entries'])
db_instance = self.model.query.filter_by(id=tmp['index']).first()
self.db.session.delete(db_instance)
self.db.session.commit()
return return_json({"success": True})
def update(self):
tmp = json.loads(request.form['entries'])
db_instance = self.model.query.filter_by(id=tmp['index']).first()
for attr in self.model_field_names:
if attr in self.json_fields:
setattr(db_instance, attr, json.dumps(tmp[attr]))
else:
setattr(db_instance, attr, tmp[attr])
self.db.session.add(db_instance)
self.db.session.commit()
return return_json({
"success": True,
"entries": tmp
})