Example #1
0
    def test_update_provider_status(self):
        token = self.authenticate('*****@*****.**', 'super-secret-password')
        url = 'api/organizations/2'
        response = self.put(url, token, {"status": "rejected"})

        self.assertEqual(response.status_code, 204)

        obj = get_organisation(2)
        self.assertEqual(obj.status_obj.code, "rejected")
Example #2
0
 def get(self, vid):
     dbobj = orga_repository.get_organisation(vid)
     if not dbobj:
         return {
             "errors": [{
                 "code": "UNKNOWN_RESOURCE",
                 "message": "unknown organisation"
             }]
         }, 404
     return dbobj.json, 200
Example #3
0
    def post(self):
        params = request.json
        errors = product_validator.DeliveryItemCreationRequest().validate(
            params, many=False)
        if errors:
            return {
                "errors": [{
                    "code": f"BAD_PARAM_{k.upper()}",
                    "message": "\n".join(v)
                } for k, v in errors.items()]
            }, 400

        product = product_repository.get_product_reference_by_reference(
            params.get('reference'))
        if product is None:
            return {
                "errors": [get_error_messages(constant.UNKNOWN_RESOURCE)]
            }, 404

        errors = []
        prod_type = product_repository.ProductType
        if product.type == prod_type.materials:
            errors.append(
                get_error_messages(constant.CANNOT_DELIVER_MATERIAL_PRODUCT))

        manufactor = orga_repository.get_organisation(
            params.get("manufactor_vid"))
        if not manufactor:
            errors.append(
                get_error_messages(constant.UNKNOWN_ORGANISATION,
                                   params.get("manufactor_vid")))
        elif manufactor.role_obj.code != "man":
            errors.append(
                get_error_messages(constant.NOT_A_MANUFACTOR,
                                   params.get("manufactor_vid")))

        if errors:
            return {"errors": errors}, 400

        if params.get("kit") == 1:
            # check the material availability
            try:
                product_repository.check_kit_delivery_creation(
                    product, params.get("count"))
            except product_repository.ProductException as exc:
                return {"errors": exc.details}, 400

        func = product_repository.create_kit_delivery_stock if params.get("delivery_type") == "kit" \
            else product_repository.create_final_delivery_stock
        func(product, params.get("count"), manufactor)

        return {}, 204
Example #4
0
    def test_create_final_delivery_stock(self):
        obj = product_repo.get_product_reference_by_reference("MEFP2+")
        manufactor = orga_repo.get_organisation(6)
        product_repo.create_final_delivery_stock(obj, 40, manufactor)

        obj1 = [
            it for it in
            product_repo.count_all_stocks_by_reference_and_type().items
        ]
        self.assertEqual(obj1, [('MEFP2+', product_repo.ProductType.kit, 50)])
        obj2 = [
            it for it in
            product_repo.count_all_delivery_by_reference_and_type().items
        ]
        self.assertEqual(
            obj2, [('MTOILE', "Couturier 2", product_repo.ProductType.kit,
                    product_repo.StatusType.submitted, 120),
                   ('MEFP2+', 'Couturier 1', product_repo.ProductType.final,
                    product_repo.StatusType.submitted, 40)])
Example #5
0
    def put(self, vid, params):
        dbobj = orga_repository.get_organisation(vid)
        if not dbobj:
            return {
                "errors": [{
                    "code": "UNKNOWN_RESOURCE",
                    "message": "unknown organisation"
                }]
            }, 404

        statusobj = ref_repository.get_reference_from_code_or_libelle(
            params.get('status'))
        if not statusobj:
            return {
                "errors": [{
                    "code": "BAD_STATUS",
                    "message": "bad status"
                }]
            }, 400

        dbobj.status_obj = statusobj
        dbobj.save()

        return {}, 204