class Rows(Resource): method_decorators = [auth_admin(False)] @marshal_with(rows_fields) def get(self, idTable, rows_id): ret = models.Insert.query.filter_by(id=rows_id).first() if ret is not None: if idTable != ret.idTable: return ret, HTTP_Bad_Request return ret, HTTP_OK else: return {}, HTTP_NotFound def delete(self, idTable, rows_id): ret = models.Insert.query.filter_by(id=rows_id).first() if ret is not None: if ret.idTable != idTable: return get_common_error_dic( 'table id not match rows id'), HTTP_Bad_Request schema = ret.Table.Schema db.session.delete(ret) db.session.commit() update_result(schema) return {}, HTTP_OK else: return {}, HTTP_NotFound
class RowsList(Resource): method_decorators = [auth_admin(inject=False)] def get(self, idTable): rows = models.Insert.query.filter_by(idTable=idTable) data = [marshal(row, rows_fields) for row in rows] table = models.Table.query.get(idTable) schema = table.Schema ret = {} if schema is not None: conn = sqlite3.connect(schema.path) c = conn.cursor() try: c.execute('select * from ' + table.name) ret = c.fetchall() print(c.fetchall()) except Exception as e: return get_common_error_dic(str(e)), HTTP_Bad_Request finally: conn.close() return {'data': data, 'detail': ret}, HTTP_OK # DONE need to update answer result def post(self, idTable): row = models.Insert() row.idTable = idTable row.sql = request.json.get('sql') data = request.json.get('data') # print(str(tuple(data))) table = models.Table.query.get(idTable) if data is not None and row.sql is None: row.sql = 'INSERT INTO ' + table.name + ' VALUES' + str( tuple(data))[:-2] + ")" print(row.sql) schema = table.Schema if schema is not None and row.sql is not None: conn = sqlite3.connect(schema.path) c = conn.cursor() try: c.execute(row.sql) conn.commit() except Exception as e: return get_common_error_dic(str(e)), HTTP_Bad_Request finally: conn.close() db.session.add(row) db.session.commit() update_result(schema) return {}, HTTP_Created else: return get_shortage_error_dic('idTable or sql'), HTTP_Bad_Request
class Students(Resource): method_decorators = [auth_admin(False)] @marshal_with(student_fields) def get(self, student_id): ret = models.Student.query.filter_by(id=student_id).first() if ret is not None: return ret, HTTP_OK else: return {}, HTTP_NotFound def delete(self, student_id): ret = models.Student.query.filter_by(id=student_id).first() if ret is not None: db.session.delete(ret) db.session.commit() return {}, HTTP_OK else: return {}, HTTP_NotFound def put(self, student_id): ret = models.Student.query.filter_by(id=student_id).first() if ret is not None: ret.password = request.json['password'] ret.name = request.json['name'] try: db.session.commit() except Exception as e: return get_except_error(e) return {}, HTTP_OK else: return {}, HTTP_NotFound def patch(self, student_id): ret = models.Student.query.filter_by(id=student_id).first() if ret is not None: ret.password = ret.password if request.json[ 'password'] is None else request.json['password'] ret.name = ret.name if request.json[ 'name'] is None else request.json['name'] try: db.session.commit() except Exception as e: return get_except_error(e) return {}, HTTP_OK else: return {}, HTTP_NotFound
class Table(Resource): method_decorators = [auth_admin(False)] @marshal_with(table_fields) def get(self, idSchema, table_id): ret = models.Table.query.filter_by(id=table_id).first() if ret is not None: if idSchema != ret.idSchema: return ret, HTTP_Bad_Request return ret, HTTP_OK else: return {}, HTTP_NotFound def delete(self, idSchema, table_id): ret = models.Table.query.filter_by(id=table_id).first() if ret is not None: # delete table in sqlite recover_schema(ret.Schema) conn = sqlite3.connect(ret.Schema.path) cur = conn.cursor() try: cur.execute('DROP TABLE IF EXISTS {}'.format(ret.name)) except Exception as e: return get_common_error_dic(str(e)), HTTP_Server_Error finally: cur.close() conn.close() if ret.idSchema != idSchema: return get_common_error_dic( 'schema id not match table id'), HTTP_Bad_Request db.session.delete(ret) db.session.commit() return {}, HTTP_OK else: return {}, HTTP_NotFound