Esempio n. 1
0
    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
Esempio n. 2
0
    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
Esempio n. 3
0
    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
Esempio n. 4
0
    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
Esempio n. 5
0
                '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
Esempio n. 6
0
            '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
Esempio n. 7
0
def some_long_running_task():
    logger.debug('Some long running task will executed')
    time.sleep(10)
    logger.debug('Long running done')
    return