Coverage for datacite/validators.py: 100%
12 statements
« prev ^ index » next coverage.py v7.10.1, created at 2025-07-29 15:38 +0000
« prev ^ index » next coverage.py v7.10.1, created at 2025-07-29 15:38 +0000
1from typing import Any
3from django.core.exceptions import ValidationError
4from django.core.validators import MaxValueValidator, MinValueValidator, RegexValidator
6from datacite.utils import DOI_REGEX
8DoiValidator = RegexValidator(
9 regex=DOI_REGEX,
10 message="Enter a valid DOI.",
11 code="invalid_doi",
12)
14YearValidators = (MinValueValidator(1900), MaxValueValidator(2100))
17schemes = ["http", "https", "info"]
18INVALID_URI = "Invalid URI"
21def validate_uri(value: Any) -> None:
22 valid_scheme = any(value.startswith(scheme + ":") for scheme in schemes)
23 if not valid_scheme:
24 raise ValidationError(INVALID_URI)