from typing import Any, List from uuid import UUID from marshmallow import validate, ValidationError from utils.exceptions import NotFound class NotEmpty(validate.Validator): def __call__(self, value) -> Any: message = "This field must not be empty" if not value or len(value.strip()) == 0: raise ValidationError(message) return value class UniqueValidator(validate.Validator): def __call__(self, value: List) -> Any: if len(value) > len(set(value)): raise ValidationError("Values should be unique") return value def validate_UUID(value): try: UUID(value, version=4) except ValueError: raise NotFound(f"Value {value} should be UUID")