def validate_price_precision(value: Optional["Decimal"], currency: str): """Validate if price amount does not have too many decimal places. Price amount can't have more decimal places than currency allow to. Works only with decimal created from a string. """ # check no needed when there is no value if not value: return currency_fraction = get_currency_fraction(currency) value = value.normalize() if value.as_tuple().exponent < -currency_fraction: raise ValidationError( f"Value cannot have more than {currency_fraction} decimal places.")
} AUTH_USER_MODEL = "account.User" LOGIN_URL = "/account/login/" AUTH_PASSWORD_VALIDATORS = [{ "NAME": "django.contrib.auth.password_validation.MinimumLengthValidator", "OPTIONS": { "min_length": 8 }, }] DEFAULT_COUNTRY = os.environ.get("DEFAULT_COUNTRY", "US") DEFAULT_CURRENCY = os.environ.get("DEFAULT_CURRENCY", "USD") DEFAULT_DECIMAL_PLACES = get_currency_fraction(DEFAULT_CURRENCY) DEFAULT_MAX_DIGITS = 12 DEFAULT_CURRENCY_CODE_LENGTH = 3 # The default max length for the display name of the # sender email address. # Following the recommendation of https://tools.ietf.org/html/rfc5322#section-2.1.1 DEFAULT_MAX_EMAIL_DISPLAY_NAME_LENGTH = 78 # note: having multiple currencies is not supported yet AVAILABLE_CURRENCIES = [DEFAULT_CURRENCY] COUNTRIES_OVERRIDE = { "EU": pgettext_lazy( "Name of political and economical union of european countries",
def test_get_currency_fraction_unknown_currency(): result = get_currency_fraction(("test")) assert result == 2
def test_get_currency_fraction_USD(): result = get_currency_fraction("USD") assert result == 2