예제 #1
0
    def post(self):
        request_dict = request.get_json()
        if not request_dict:
            response = {'message': 'No input data provided'}
            return response, status.HTTP_400_BAD_REQUEST
        errors = contract_schema.validate(request_dict)
        if errors:
            return errors, status.HTTP_400_BAD_REQUEST
        try:
            rule_name = request_dict['rule']['name']
            rule = Rule.query.filter_by(name=rule_name).first()
            if rule is None:
                # Create a new rule
                rule = Rule(name=rule_name,
                            f_operand=request_dict['f_operand'],
                            s_operand=request_dict['s_operand'],
                            operator=request_dict['operator'],
                            coefficient=request_dict['coefficient'])
                db.session.add(rule)
            # create a new contract
            contract = Contract(contract_name=request_dict['contract_name'],
                                information=request_dict['information'],
                                rule=rule)

            # requests.put('http://0.0.0.0/{port}/projects', jsonify={
            #     "project_name": 'project_name',
            #     "contract_id": UUID,
            #     status: status.HTTP_201_CREATED
            # })

            contract.add(contract)
            query = Contract.query.get(contract.id)
            result = contract_schema.dump(query).data
            return result, status.HTTP_201_CREATED
        except SQLAlchemyError as e:
            db.session.rollback()
            resp = jsonify({"error": str(e)})
            return resp, status.HTTP_400_BAD_REQUEST