예제 #1
0
    def on_post(self, req, resp, *args, **kwargs):
        schema = OrderSchema()
        data = json.loads(req.stream.read(req.content_length or 0))

        data.pop('type', None)

        order, errors = schema.load(data)

        if errors:
            logger.error(errors)
            errors = [
                format_error('missing-field', ' '.join(value), dict(field=key))
                for key, value in errors.items()
            ]
            resp.status = falcon.HTTP_400
            resp.body = json.dumps(format_errors(errors), ensure_ascii=False)
        else:
            schema.context['remove_fields'] = ['seed', 'password']

            order.save()

            data, errors = schema.dump(order)

            resp.status = falcon.HTTP_200
            resp.body = json.dumps(format_response(data), ensure_ascii=False)
예제 #2
0
    def on_delete(self, req, resp, ingredient, *args, **kwargs):
        schema = IngredientSchema()

        ingredient.delete()

        data, errors = schema.dump(ingredient)

        resp.status = falcon.HTTP_200

        resp.body = json.dumps(format_response(data), ensure_ascii=False)
예제 #3
0
    def on_delete(self, req, resp, product, *args, **kwargs):
        schema = ProductSchema()

        product.delete()

        data, errors = schema.dump(product)

        resp.status = falcon.HTTP_200

        resp.body = json.dumps(format_response(data), ensure_ascii=False)
예제 #4
0
파일: users.py 프로젝트: fcgomes92/ssms
    def on_delete(self, req, resp, client, *args, **kwargs):
        schema = ClientSchema()

        client.delete()

        schema.context['remove_fields'] = ['seed', 'password']
        data, errors = schema.dump(client)

        resp.status = falcon.HTTP_200

        resp.body = json.dumps(format_response(data), ensure_ascii=False)
예제 #5
0
    def on_get(self, res, resp, ingredient, *args, **kwargs):
        schema = IngredientSchema()
        data, errors = schema.dump(ingredient)

        if errors:
            logger.error(errors)
            raise falcon.HTTPInternalServerError()

        data = format_response(data)

        resp.status = falcon.HTTP_200
        resp.body = json.dumps(data, ensure_ascii=False)
예제 #6
0
파일: users.py 프로젝트: fcgomes92/ssms
    def on_get(self, req, resp):
        users = Client.get_all()
        schema = ClientSchema()
        schema.context['remove_fields'] = ['seed', 'password']
        data, errors = schema.dump(users, many=True)

        if errors:
            logger.error(errors)
            raise falcon.HTTPInternalServerError()

        data = format_response(data)

        resp.status = falcon.HTTP_200
        resp.body = json.dumps(data, ensure_ascii=False)
예제 #7
0
파일: users.py 프로젝트: fcgomes92/ssms
    def on_get(self, req, resp, client, *args, **kwargs):
        schema = ClientSchema()
        schema.context['remove_fields'] = ['seed', 'password']

        data, errors = schema.dump(client)

        if errors:
            logger.error(errors)
            raise falcon.HTTPInternalServerError()

        data = format_response(data)

        resp.status = falcon.HTTP_200
        resp.body = json.dumps(data, ensure_ascii=False)
예제 #8
0
    def on_get(self, req, resp, *args, **kwargs):
        schema = ProductSchema()
        products = Product.get_all()

        data, errors = schema.dump(products, many=True)

        if errors:
            logger.error(errors)
            raise falcon.HTTPInternalServerError()

        data = format_response(data)

        resp.status = falcon.HTTP_200
        resp.body = json.dumps(data, ensure_ascii=False)
예제 #9
0
    def on_put(self, req, resp, order, *args, **kwargs):
        schema = OrderSchema()

        data = json.loads(req.stream.read(req.content_length or 0))

        products = data.pop('products', None)

        order, errors = schema.load(data, partial=True, instance=order)

        if products:
            op_schema = OrderProductSchema()
            op, op_errors = op_schema.load(products, many=True, partial=True)
        else:
            op_errors = None
            op = None

        if errors:
            logger.error(errors)
            errors = [
                format_error('missing-field', ' '.join(value), dict(field=key))
                for key, value in errors.items()
            ]
            resp.status = falcon.HTTP_400
            resp.body = json.dumps(format_errors(errors), ensure_ascii=False)
        elif op_errors:
            logger.error(op_errors)
            op_errors = [
                format_error('missing-field', ' '.join(value), dict(field=key))
                for key, value in op_errors.items()
            ]
            resp.status = falcon.HTTP_400
            resp.body = json.dumps(format_errors(op_errors),
                                   ensure_ascii=False)
        else:
            if op:
                order.products = op

            schema.context['remove_fields'] = ['seed', 'password']

            order.save()

            data, errors = schema.dump(order)

            resp.status = falcon.HTTP_200
            resp.body = json.dumps(format_response(data), ensure_ascii=False)
예제 #10
0
    def on_get(self, req, resp, *args, **kwargs):
        schema = ProductIngredientsReportSchema()

        data = json.loads(req.stream.read(req.content_length or 0))

        try:
            report_data = [
                dict(
                    ingredient_id=ingredient.id,
                    ingredient=ingredient,
                    total=float(total),
                ) for ingredient, total in Product.report_ingredients(data)
            ]
            report, errors = schema.dump(report_data, many=True)
        except Exception as e:
            logger.error(e)
            resp.status = falcon.HTTP_500
        else:
            resp.status = falcon.HTTP_200
            resp.body = json.dumps(format_response(report), ensure_ascii=False)
예제 #11
0
    def on_put(self, req, resp, product, *args, **kwargs):
        schema = ProductSchema()
        data = json.loads(req.stream.read(req.content_length or 0))

        ingredients = data.pop('ingredients', None)

        product, errors = schema.load(data, partial=True, instance=product)

        pi_errors = None
        pi = None
        if ingredients:
            pi_schema = ProductIngredientSchema()
            pi, pi_errors = pi_schema.load(ingredients, many=True, partial=True)

        if errors:
            logger.error(errors)
            errors = [
                format_error('missing-field', ' '.join(value), dict(field=key))
                for key, value in errors.items()
            ]
            resp.status = falcon.HTTP_400
            resp.body = json.dumps(format_errors(errors), ensure_ascii=False)
        elif pi_errors:
            logger.error(pi_errors)
            pi_errors = [
                format_error('missing-field', ' '.join(value), dict(field=key))
                for key, value in pi_errors.items()
            ]
            resp.status = falcon.HTTP_400
            resp.body = json.dumps(format_errors(pi_errors), ensure_ascii=False)
        else:
            if pi:
                product.ingredients = pi

            product.save()

            data, errors = schema.dump(product)

            resp.status = falcon.HTTP_200
            resp.body = json.dumps(format_response(data), ensure_ascii=False)
예제 #12
0
파일: users.py 프로젝트: fcgomes92/ssms
    def on_put(self, req, resp, client, *args, **kwargs):
        data = json.loads(req.stream.read(req.content_length or 0))

        schema = ClientSchema()

        client, errors = schema.load(data, instance=client, partial=True)

        if errors:
            errors = [
                format_error('missing-field', ' '.join(value), dict(field=key))
                for key, value in errors.items()
            ]
            resp.status = falcon.HTTP_400
            resp.body = json.dumps(format_errors(errors), ensure_ascii=False)
        else:
            client.save()

            schema.context['remove_fields'] = ['seed', 'password']
            data, errors = schema.dump(client)

            resp.status = falcon.HTTP_200
            resp.body = json.dumps(format_response(data), ensure_ascii=False)
예제 #13
0
    def on_post(self, req, resp, *args, **kwargs):
        schema = IngredientSchema()
        data = json.loads(req.stream.read(req.content_length or 0))

        data.pop('type', None)

        ingredient, errors = schema.load(data)

        if errors:
            errors = [
                format_error('missing-field', ' '.join(value), dict(field=key))
                for key, value in errors.items()
            ]
            resp.status = falcon.HTTP_400
            resp.body = json.dumps(format_errors(errors), ensure_ascii=False)
        else:
            ingredient.save()

            data, errors = schema.dump(ingredient)

            resp.status = falcon.HTTP_200
            resp.body = json.dumps(format_response(data), ensure_ascii=False)
예제 #14
0
파일: users.py 프로젝트: fcgomes92/ssms
    def on_post(self, req, resp):
        data = json.loads(req.stream.read(req.content_length or 0))

        schema = ClientSchema()

        user, errors = schema.load(data)

        if errors:
            errors = [
                format_error('missing-field', ' '.join(value), dict(field=key))
                for key, value in errors.items()
            ]
            resp.status = falcon.HTTP_400
            resp.body = json.dumps(format_errors(errors), ensure_ascii=False)
        else:
            user.set_password(user.password)
            user.save()

            schema.context['remove_fields'] = ['seed', 'password']
            data, errors = schema.dump(user)

            resp.status = falcon.HTTP_200
            resp.body = json.dumps(format_response(data), ensure_ascii=False)