def validate_geojson(cls, value): validators.validator_for_type(dict)(value) validators.validator_for_geojson_type(cls._geojson_name)(value) coordinates = value.get('coordinates') validators.validator_for_type((list, tuple), 'Coordinates')(coordinates) cls.validate_coordinates(coordinates)
def validate_geojson(cls, value): validators.validator_for_type(dict)(value) validators.validator_for_geojson_type( cls._geojson_name)(value) coordinates = value.get('coordinates') validators.validator_for_type( (list, tuple), 'Coordinates')(coordinates) cls.validate_coordinates(coordinates)
def validate_coordinates(coordinates): if not (isinstance(coordinates, (list, tuple)) and len(coordinates) == 2): raise ValidationError('Point is not a pair: %r' % coordinates) validate_number = validators.validator_for_type((float, int), 'coordinate value') validate_number(coordinates[0]) validate_number(coordinates[1])
def validate_coordinates(coordinates): if not (isinstance(coordinates, (list, tuple)) and len(coordinates) == 2): raise ValidationError('Point is not a pair: %r' % coordinates) validate_number = validators.validator_for_type( (float, int), 'coordinate value') validate_number(coordinates[0]) validate_number(coordinates[1])
def __init__(self, verbose_name=None, mongo_name=None, **kwargs): """ :parameters: - `verbose_name`: A human-readable name for the Field. - `mongo_name`: The name of this field when stored in MongoDB. .. seealso:: constructor for :class:`~pymodm.base.fields.MongoBaseField` """ super(GeometryCollectionField, self).__init__(verbose_name=verbose_name, mongo_name=mongo_name, **kwargs) self.validators.append( validators.together( validators.validator_for_type(dict), validators.validator_for_geojson_type('GeometryCollection'), lambda value: validators.validator_for_type( (list, tuple), 'Geometries')(value.get('geometries')))) self.validators.append( lambda value: self.validate_geometries(value.get('geometries')))
def __init__(self, verbose_name=None, mongo_name=None, **kwargs): """ :parameters: - `verbose_name`: A human-readable name for the Field. - `mongo_name`: The name of this field when stored in MongoDB. .. seealso:: constructor for :class:`~pymodm.base.fields.MongoBaseField` """ super(GeometryCollectionField, self).__init__(verbose_name=verbose_name, mongo_name=mongo_name, **kwargs) self.validators.append( validators.together( validators.validator_for_type(dict), validators.validator_for_geojson_type('GeometryCollection'), lambda value: validators.validator_for_type( (list, tuple), 'Geometries')(value.get('geometries')))) self.validators.append( lambda value: self.validate_geometries(value.get('geometries')))
def validator_for_location(coordinates): """Validate if value is a list of double numbers.""" if not (isinstance(coordinates, (list, tuple)) and len(coordinates) == 3): raise ValidationError('Point is not a triple: %r' % coordinates) validate_number = validators.validator_for_type( (float, int), 'Coordinates [lat, long, alt]') validate_number(coordinates[0]) # latitude validate_number(coordinates[1]) # longitude validate_number(coordinates[2])
def __init__(self, group='', verbose_name=None, mongo_name=None, **kwargs): """ :param group: A subgroup to store the image under :param verbose_name: The human-readable name of this field :param mongo_name: The name of this field in mongodb :param kwargs: Additional kwargs passed to MongoBaseField """ super(ImageField, self).__init__(verbose_name=verbose_name, mongo_name=mongo_name, **kwargs) self._group = group self.validators.append(validators.validator_for_type(np.ndarray))
def __init__(self, enum_type, verbose_name=None, mongo_name=None, **kwargs): """ :param enum_type: The enum type to store. Valid values must be an instance of this type. :param verbose_name: The human-readable name of this field :param mongo_name: The name of this field in mongodb :param kwargs: Additional kwargs passed to MongoBaseField """ super(EnumField, self).__init__(verbose_name=verbose_name, mongo_name=mongo_name, choices=[e for e in enum_type], **kwargs) self.enum_type = enum_type self.validators.append(validators.validator_for_type(enum_type))
def __init__(self, enum_type, verbose_name=None, mongo_name=None, **kwargs): """ :parameters: - `enum_type`: The type of this enum field. - `verbose_name`: A human-readable name for the field. - `mongo_name`: The name of this field when stored in MongoDB. .. seealso:: constructor for :class:`~pymodm.base.fields.MongoBaseField` """ if not issubclass(enum_type, Enum): raise TypeError(f"'enum_type' must be sub class of 'Enum'") self._enum_type = enum_type super().__init__(verbose_name=verbose_name, mongo_name=mongo_name, **kwargs) self.validators.append( validators.together(validators.validator_for_type(enum_type), validators.validator_for_func(enum_type)))