示例#1
0
    def __init__(self, verbose_name=None, mongo_name=None,
                 min_value=None, max_value=None, **kwargs):
        """
        :parameters:
          - `verbose_name`: A human-readable name for the Field.
          - `mongo_name`: The name of this field when stored in MongoDB.
          - `min_value`: The minimum value that can be stored in this field.
          - `max_value`: The maximum value that can be stored in this field.

        .. seealso:: constructor for
                     :class:`~pymodm.base.fields.MongoBaseField`
        """
        if not _HAS_DECIMAL128:
            raise ConfigurationError(
                'Need PyMongo >= 3.4 in order to use Decimal128Field.')

        super(Decimal128Field, self).__init__(verbose_name=verbose_name,
                                              mongo_name=mongo_name,
                                              **kwargs)

        def validate_min_and_max(value):
            # Turn value into a Decimal.
            value = value.to_decimal()
            validators.validator_for_min_max(min_value, max_value)(value)

        self.validators.append(
            validators.together(
                validators.validator_for_func(self.to_mongo),
                validate_min_and_max))
示例#2
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(ObjectIdField, self).__init__(verbose_name=verbose_name,
                                            mongo_name=mongo_name,
                                            **kwargs)

        self.validators.append(
            validators.validator_for_func(ObjectId))
示例#3
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(ObjectIdField, self).__init__(verbose_name=verbose_name,
                                            mongo_name=mongo_name,
                                            **kwargs)

        self.validators.append(
            validators.validator_for_func(ObjectId))
示例#4
0
    def __init__(self, verbose_name=None, mongo_name=None,
                 subtype=bson.binary.BINARY_SUBTYPE, **kwargs):
        """
        :parameters:
          - `verbose_name`: A human-readable name for the Field.
          - `mongo_name`: The name of this field when stored in MongoDB.
          - `subtype`: A subtype listed in the :mod:`~bson.binary` module.

        .. seealso:: constructor for
                     :class:`~pymodm.base.fields.MongoBaseField`
        """
        super(BinaryField, self).__init__(verbose_name=verbose_name,
                                          mongo_name=mongo_name,
                                          **kwargs)
        self.subtype = subtype
        self.validators.append(validators.validator_for_func(Binary))
示例#5
0
    def __init__(self, verbose_name=None, mongo_name=None,
                 subtype=bson.binary.BINARY_SUBTYPE, **kwargs):
        """
        :parameters:
          - `verbose_name`: A human-readable name for the Field.
          - `mongo_name`: The name of this field when stored in MongoDB.
          - `subtype`: A subtype listed in the :mod:`~bson.binary` module.

        .. seealso:: constructor for
                     :class:`~pymodm.base.fields.MongoBaseField`
        """
        super(BinaryField, self).__init__(verbose_name=verbose_name,
                                          mongo_name=mongo_name,
                                          **kwargs)
        self.subtype = subtype
        self.validators.append(validators.validator_for_func(Binary))
示例#6
0
    def __init__(self, model, on_delete=DO_NOTHING,
                 verbose_name=None, mongo_name=None, **kwargs):
        """
        :parameters:
          - `model`: The class of :class:`~pymodm.MongoModel` that this field
            references or the name of the model as a string.
          - `on_delete`: The action to take (if any) when the referenced object
            is deleted. The delete rule should be one of the following:
            * :attr:`ReferenceField.DO_NOTHING` (default).
            * :attr:`ReferenceField.NULLIFY`
            * :attr:`ReferenceField.CASCADE`
            * :attr:`ReferenceField.DENY`
            * :attr:`ReferenceField.PULL`
          - `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`

        example::

            class User(MongoModel):
                name = fields.CharField()
                # Reference the current model by passing the name as a string.
                friend = fields.ReferenceField('User')

            class Post(MongoModel):
                title = fields.CharField()
                author = fields.ReferenceField(User)

        .. seealso:: :ref:`GettingStartedReferenceExample`.
        """
        super(ReferenceField, self).__init__(model=model,
                                             verbose_name=verbose_name,
                                             mongo_name=mongo_name,
                                             **kwargs)
        TopLevelMongoModel = _import('pymodm.base.models.TopLevelMongoModel')
        if (ReferenceField.DO_NOTHING != on_delete and
            not (isinstance(model, type) and
                 issubclass(model, TopLevelMongoModel))):
            raise ValueError(
                'Cannot specify on_delete without providing a Model class '
                'for model (was: %r). For bidirectional delete rules, '
                'use MyModelClass.register_delete_rule instead.'
                % model)
        self._on_delete = on_delete
        self.validators.append(validators.validator_for_func(self.to_mongo))
示例#7
0
文件: fields.py 项目: mongodb/pymodm
    def __init__(self, model, on_delete=DO_NOTHING,
                 verbose_name=None, mongo_name=None, **kwargs):
        """
        :parameters:
          - `model`: The class of :class:`~pymodm.MongoModel` that this field
            references or the name of the model as a string.
          - `on_delete`: The action to take (if any) when the referenced object
            is deleted. The delete rule should be one of the following:
            * :attr:`ReferenceField.DO_NOTHING` (default).
            * :attr:`ReferenceField.NULLIFY`
            * :attr:`ReferenceField.CASCADE`
            * :attr:`ReferenceField.DENY`
            * :attr:`ReferenceField.PULL`
          - `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`

        example::

            class User(MongoModel):
                name = fields.CharField()
                # Reference the current model by passing the name as a string.
                friend = fields.ReferenceField('User')

            class Post(MongoModel):
                title = fields.CharField()
                author = fields.ReferenceField(User)

        .. seealso:: :ref:`GettingStartedReferenceExample`.
        """
        super(ReferenceField, self).__init__(model=model,
                                             verbose_name=verbose_name,
                                             mongo_name=mongo_name,
                                             **kwargs)
        TopLevelMongoModel = _import('pymodm.base.models.TopLevelMongoModel')
        if (ReferenceField.DO_NOTHING != on_delete and
            not (isinstance(model, type) and
                 issubclass(model, TopLevelMongoModel))):
            raise ValueError(
                'Cannot specify on_delete without providing a Model class '
                'for model (was: %r). For bidirectional delete rules, '
                'use MyModelClass.register_delete_rule instead.'
                % model)
        self._on_delete = on_delete
        self.validators.append(validators.validator_for_func(self.to_mongo))
示例#8
0
    def __init__(self, verbose_name=None, mongo_name=None,
                 min_value=None, max_value=None, **kwargs):
        """
        :parameters:
          - `verbose_name`: A human-readable name for the Field.
          - `mongo_name`: The name of this field when stored in MongoDB.
          - `min_value`: The minimum value that can be stored in this field.
          - `max_value`: The maximum value that can be stored in this field.

        .. seealso:: constructor for
                     :class:`~pymodm.base.fields.MongoBaseField`
        """
        super(FloatField, self).__init__(verbose_name=verbose_name,
                                         mongo_name=mongo_name,
                                         **kwargs)
        self.validators.append(
            validators.together(
                validators.validator_for_func(float),
                validators.validator_for_min_max(min_value, max_value)))
示例#9
0
    def __init__(self, verbose_name=None, mongo_name=None,
                 min_value=None, max_value=None, **kwargs):
        """
        :parameters:
          - `verbose_name`: A human-readable name for the Field.
          - `mongo_name`: The name of this field when stored in MongoDB.
          - `min_value`: The minimum value that can be stored in this field.
          - `max_value`: The maximum value that can be stored in this field.

        .. seealso:: constructor for
                     :class:`~pymodm.base.fields.MongoBaseField`
        """
        super(IntegerField, self).__init__(verbose_name=verbose_name,
                                           mongo_name=mongo_name,
                                           **kwargs)
        self.validators.append(
            validators.together(
                validators.validator_for_func(int),
                validators.validator_for_min_max(min_value, max_value)))
示例#10
0
    def __init__(self, verbose_name=None, mongo_name=None, storage=None,
                 **kwargs):
        """
        :parameters:
          - `verbose_name`: A human-readable name for the Field.
          - `mongo_name`: The name of this field when stored in MongoDB.
          - `storage`: The :class:`~pymodm.files.Storage` implementation to
            use for saving and opening files.

        .. seealso:: constructor for
                     :class:`~pymodm.base.fields.MongoBaseField`
        """
        if not _HAS_PILLOW:
            raise ConfigurationError(
                'The PIL or Pillow library must be installed in order '
                'to use ImageField.')
        super(ImageField, self).__init__(verbose_name=verbose_name,
                                         mongo_name=mongo_name,
                                         storage=storage,
                                         **kwargs)
        self.validators.append(validators.validator_for_func(Image.open))
示例#11
0
    def __init__(self, verbose_name=None, mongo_name=None, storage=None,
                 **kwargs):
        """
        :parameters:
          - `verbose_name`: A human-readable name for the Field.
          - `mongo_name`: The name of this field when stored in MongoDB.
          - `storage`: The :class:`~pymodm.files.Storage` implementation to
            use for saving and opening files.

        .. seealso:: constructor for
                     :class:`~pymodm.base.fields.MongoBaseField`
        """
        if not _HAS_PILLOW:
            raise ConfigurationError(
                'The PIL or Pillow library must be installed in order '
                'to use ImageField.')
        super(ImageField, self).__init__(verbose_name=verbose_name,
                                         mongo_name=mongo_name,
                                         storage=storage,
                                         **kwargs)
        self.validators.append(validators.validator_for_func(Image.open))
示例#12
0
    def __init__(self,
                 model,
                 on_delete=DO_NOTHING,
                 verbose_name=None,
                 mongo_name=None,
                 **kwargs):
        """
        :parameters:
          - `model`: The class of :class:`~pymodm.MongoModel` that this field
            references.
          - `on_delete`: The action to take (if any) when the referenced object
            is deleted. The delete rule should be one of the following:
          - `verbose_name`: A human-readable name for the Field.
          - `mongo_name`: The name of this field when stored in MongoDB.

            * :attr:`ReferenceField.DO_NOTHING` (default).
            * :attr:`ReferenceField.NULLIFY`
            * :attr:`ReferenceField.CASCADE`
            * :attr:`ReferenceField.DENY`
            * :attr:`ReferenceField.PULL`

        .. seealso:: constructor for
                     :class:`~pymodm.base.fields.MongoBaseField`
        """
        super(ReferenceField, self).__init__(model=model,
                                             verbose_name=verbose_name,
                                             mongo_name=mongo_name,
                                             **kwargs)
        MongoModel = _import('pymodm.base.models.MongoModel')
        if (ReferenceField.DO_NOTHING != on_delete
                and not (isinstance(model, type)
                         and issubclass(model, MongoModel))):
            raise ValueError(
                'Cannot specify on_delete without providing a Model class '
                'for model (was: %r). For bidirectional delete rules, '
                'use MyModelClass.register_delete_rule instead.' % model)
        self._on_delete = on_delete
        self.validators.append(validators.validator_for_func(self.to_mongo))
示例#13
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)))