Fix: make backend monetary validation accept unpadded decimals (#6626)

This commit is contained in:
shamoon 2024-05-07 14:38:52 -07:00 committed by GitHub
parent caec0ed4d1
commit 6ea25a96a3
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with 10 additions and 18 deletions

View File

@ -17,7 +17,15 @@ import { getLocaleCurrencyCode } from '@angular/common'
})
export class MonetaryComponent extends AbstractInputComponent<string> {
public currency: string = ''
public monetaryValue: string = ''
public _monetaryValue: string = ''
public get monetaryValue(): string {
return this._monetaryValue
}
public set monetaryValue(value: string) {
if (value) this._monetaryValue = value
}
defaultCurrencyCode: string
constructor(@Inject(LOCALE_ID) currentLocale: string) {

View File

@ -547,7 +547,7 @@ class CustomFieldInstanceSerializer(serializers.ModelSerializer):
except Exception:
# If that fails, try to validate as a monetary string
RegexValidator(
regex=r"^[A-Z]{3}-?\d+(\.\d{2,2})$",
regex=r"^[A-Z]{3}-?\d+(\.\d{1,2})$",
message="Must be a two-decimal number with optional currency code e.g. GBP123.45",
)(data["value"])
elif field.data_type == CustomField.FieldDataType.STRING:

View File

@ -499,22 +499,6 @@ class TestCustomFieldsAPI(DirectoriesMixin, APITestCase):
self.assertEqual(resp.status_code, status.HTTP_400_BAD_REQUEST)
resp = self.client.patch(
f"/api/documents/{doc.id}/",
data={
"custom_fields": [
{
"field": custom_field_money.id,
# Too few places past decimal
"value": "GBP12.1",
},
],
},
format="json",
)
self.assertEqual(resp.status_code, status.HTTP_400_BAD_REQUEST)
resp = self.client.patch(
f"/api/documents/{doc.id}/",
data={