diff --git a/api/tests/test_import_purchases.py b/api/tests/test_import_purchases.py index 81bb43bb1..c332fbd63 100644 --- a/api/tests/test_import_purchases.py +++ b/api/tests/test_import_purchases.py @@ -142,16 +142,14 @@ def test_import_bad_purchases(self): self.assertEqual(response.status_code, status.HTTP_200_OK) self.assertEqual(Purchase.objects.count(), 0) errors = response.json()["errors"] - self.assertEqual(errors.pop(0)["message"], "Champ 'siret' : Le siret de la cantine ne peut pas être vide") + self.assertEqual(errors.pop(0)["message"], "Une valeur doit être renseignée") self.assertEqual( errors.pop(0)["message"], "Une cantine avec le siret « 86180597100897 » n'existe pas sur la plateforme." ) self.assertEqual(errors.pop(0)["message"], "Vous n'êtes pas un gestionnaire de cette cantine.") - self.assertEqual( - errors.pop(0)["message"], "Champ 'description du produit' : La description ne peut pas être vide" - ) - self.assertEqual(errors.pop(0)["message"], "Champ 'fournisseur' : Le fournisseur ne peut pas être vide") - self.assertEqual(errors.pop(0)["message"], "Champ 'date' : La date ne peut pas être vide") + self.assertEqual(errors.pop(0)["message"], "Une valeur doit être renseignée") + self.assertEqual(errors.pop(0)["message"], "Une valeur doit être renseignée") + self.assertEqual(errors.pop(0)["message"], "Une valeur doit être renseignée") self.assertEqual( errors.pop(0)["message"], "Champ 'date' : Le format de date de la valeur «\xa02022-02-31\xa0» est correct (AAAA-MM-JJ), mais la date n’est pas valide.", @@ -160,7 +158,7 @@ def test_import_bad_purchases(self): errors.pop(0)["message"], "Champ 'date' : Le format de date de la valeur «\xa02022/03/01\xa0» n’est pas valide. Le format correct est AAAA-MM-JJ.", ) - self.assertEqual(errors.pop(0)["message"], "Champ 'prix HT' : Le prix ne peut pas être vide") + self.assertEqual(errors.pop(0)["message"], "Une valeur doit être renseignée") self.assertEqual( errors.pop(0)["message"], "Champ 'prix HT' : La valeur «\xa0A price\xa0» doit être un nombre décimal." ) @@ -206,11 +204,13 @@ def test_warn_duplicate_file(self): CanteenFactory.create(siret="82399356058716", managers=[authenticate.user]) with open(file_path) as purchase_file: response = self.client.post(reverse("import_purchases"), {"file": purchase_file}) + print(response.json()) self.assertEqual(response.status_code, status.HTTP_200_OK) self.assertEqual(Purchase.objects.count(), 2) with open(file_path) as purchase_file: response = self.client.post(reverse("import_purchases"), {"file": purchase_file}) + print(response.json()) self.assertEqual(response.status_code, status.HTTP_200_OK) body = response.json() errors = body["errors"] diff --git a/api/views/purchaseimport.py b/api/views/purchaseimport.py index 5a530ffeb..50a5eb3bf 100644 --- a/api/views/purchaseimport.py +++ b/api/views/purchaseimport.py @@ -185,18 +185,9 @@ def _create_purchase_for_canteen(self, siret, row): raise PermissionDenied(detail="Vous n'êtes pas un gestionnaire de cette cantine.") description = row.pop(0) - if description == "": - raise ValidationError({"description": "La description ne peut pas être vide"}) provider = row.pop(0) - if provider == "": - raise ValidationError({"provider": "Le fournisseur ne peut pas être vide"}) date = row.pop(0) - if date == "": - raise ValidationError({"date": "La date ne peut pas être vide"}) - price = row.pop(0).strip().replace(",", ".") - if price == "": - raise ValidationError({"price_ht": "Le prix ne peut pas être vide"}) # We try to round the price. If we can't, we will let Django's field validation # manage the error - hence the `pass` in the exception handler diff --git a/common/api/validata.py b/common/api/validata.py index 601d6006a..b1903d4b8 100644 --- a/common/api/validata.py +++ b/common/api/validata.py @@ -21,7 +21,9 @@ def process_errors(report): { "row": error["rowNumber"], "status": 400, - "message": f"Champ '{error['fieldName']}' : Valeur « {error['cell']} » : {error['message']}", + "column": error["fieldName"], + "cell": error["cell"], + "message": error["message"], } ) return errors