def get(self, ref_code=None): ret = [] if ref_code is None: order_list = self.__session.query(T_Order).filter_by( active=True).all() else: order_list = self.__session.query(T_Order).filter_by( active=True, ref_code=ref_code).all() for order in order_list: order_dict = self.__json(order) if ref_code is not None: orderdetail_dict = {} for detail in order.orderdetails: detail_dict = self.__json(detail) logger.debug(detail_dict) fieldcode = detail_dict['fieldcode'] fieldvalue = detail_dict['fieldvalue'] fieldtype = detail_dict['fieldtype'] actual_value = type_mapping[fieldtype](fieldvalue) orderdetail_dict[fieldcode] = actual_value order_dict['order_details'] = orderdetail_dict ret.append(order_dict) logger.debug(ret) return ret
def post(self, ref_code=None): ret = {} http_stat = 200 if ref_code is not None: ret['status'] = 'FAIL' ret['message'] = 'Invalid request' http_stat = 400 else: # parse request self.__reqparse.add_argument('customer_uuid', type=str, required=True) self.__reqparse.add_argument('order_description', type=str, required=True) self.__reqparse.add_argument('order_details', type=dict, location='json', default=[]) args = self.__reqparse.parse_args() logger.debug(args) order = Order(self.__session) new_ref_code = order.create(args) if new_ref_code is None: ret['status'] = 'FAIL' ret['message'] = order.get_error() http_stat = 400 else: ret['status'] = 'SUCCESS' ret['ref_no'] = new_ref_code return ret, http_stat
def post(self): http_stat = 200 self.__reqparse.add_argument('firstname', type=str, required=True) self.__reqparse.add_argument('lastname', type=str, required=True) self.__reqparse.add_argument('middlename', type=str, default='') args = self.__reqparse.parse_args() customer = Customer(self.__session) uuid = customer.add(args) if uuid is not None: ret = marshal( { 'status': 'SUCCESS', 'uuid': uuid, 'message': 'Resource added' }, status_fields) else: ret = {'status': 'FAILED', 'message': 'Duplicate Resource'} http_stat = 409 logger.debug('Call some long running task') task_result = some_long_running_task.delay() # task_result.wait() return ret, http_stat
def get(self): http_stat = 200 self.__reqparse.add_argument('sort', type=str, default='lastname') args = self.__reqparse.parse_args() logger.debug(args) customers = Customer(self.__session, args) customer_list = customers.get() ret = {} if customer_list is not None: ret['status'] = 'SUCCESS' ret['customer'] = marshal(customer_list, customer_fields) else: ret['status'] = 'FAIL' ret['message'] = 'Invalid customer UUID' http_stat = 400 return ret, http_stat
'orders': url_for('orders_all') } } return retval # api = Api(app) api = Api(app, api_version='v2.0', api_spec_url='/specs', title='myapp API', description='Workshop: Writing RESTful APIs with Flask (PyconPH 2017)') # More tips on writing RESTful APIs: http://www.restapitutorial.com/lessons/httpmethods.html customer_routes(api) order_routes(api) api.add_resource(ApiRoot, '/', endpoint='api_root') logger.debug('myapp is up') @app.after_request def after_request_sequence(response): Session.remove() response.headers['Access-Control-Allow-Origin'] = '*' return response
'endpoints': { 'customers': url_for('customers'), 'orders': url_for('orders_all') } } return retval CORS(app) api = Api( app, api_version='v2.0', api_spec_url='/specs', title='myapp API', description='Workshop: Writing RESTful APIs with Flask (PyconPH 2017)') customer_routes(api) order_routes(api) api.add_resource(ApiRoot, '/', endpoint='api_root') logger.debug('myapp is up (Lesson 12)') @app.after_request def after_request_sequence(response): Session.remove() return response
def some_long_running_task(): logger.debug('Some long running task will executed') time.sleep(10) logger.debug('Long running done') return