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)
Esempio n. 2
0
 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)
Esempio n. 3
0
 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])
Esempio n. 4
0
 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])
Esempio n. 5
0
    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')))
Esempio n. 6
0
    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')))
Esempio n. 7
0
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])
Esempio n. 8
0
    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))
Esempio n. 9
0
    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))
Esempio n. 10
0
    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)))