コード例 #1
0
 def validate_timestamp(self, timestamp):
     _assert_condition(0 <= timestamp.nanos < 1000000000,
                       'Timestamp nanos exceeds limit for field')
     _assert_condition(
         datastore_pbs.is_in_rfc_3339_bounds(timestamp.seconds * 1000 *
                                             1000),
         'Timestamp seconds exceeds limit for field')
コード例 #2
0
    def __validate_value_meaning_constraints(self, constraint, value):
        """Checks constraints on values that result from their meaning.

    For example, some meanings cause the length of a value to be constrained.

    Args:
      constraint: a _ValidationConstraint to apply
      value: an googledatastore.Value

    Raises:
      ValidationError: if the value is invalid
    """
        meaning = value.meaning
        if not meaning:
            return
        if meaning == datastore_pbs.MEANING_BYTESTRING:
            _assert_condition(
                (len(value.blob_value) <=
                 datastore_pbs.MAX_INDEXED_BLOB_BYTES),
                ('Blob value with meaning %d has more than '
                 'permitted %d bytes.' %
                 (meaning, datastore_pbs.MAX_INDEXED_BLOB_BYTES)))
        elif meaning in (datastore_pbs.MEANING_TEXT,
                         datastore_pbs.MEANING_ZLIB):
            _assert_condition(value.exclude_from_indexes,
                              'Indexed value has meaning %d.' % meaning)
        elif meaning == datastore_pbs.MEANING_URL:
            _assert_condition(
                (len(value.string_value) <= datastore_pbs.MAX_URL_CHARS),
                'URL value has more than permitted %d characters.' %
                datastore_pbs.MAX_URL_CHARS)
        elif meaning == datastore_pbs.MEANING_NON_RFC_3339_TIMESTAMP:
            _assert_condition(
                not datastore_pbs.is_in_rfc_3339_bounds(value.integer_value),
                ('A timestamp in range [0001-01-01T00:00:00Z, '
                 '9999-12-31T23:59:59.999999Z] must be stored as a timestamp '
                 'value.'))
        elif meaning == datastore_pbs.MEANING_PERCENT:
            _assert_condition(
                (value.integer_value >= 0 and value.integer_value <= 100),
                'Percent value outside permitted range [0, 100].')
        elif meaning == datastore_pbs.MEANING_PREDEFINED_ENTITY_USER:
            self._validate_predefined_entity_value(
                value.entity_value, 'user', _USER_ENTITY_PROPERTY_MAP,
                _USER_ENTITY_REQUIRED_PROPERTIES)
        elif meaning == datastore_pbs.MEANING_INDEX_ONLY:
            _assert_condition(
                constraint.meaning_index_only_allowed,
                'Value has meaning %d.' % datastore_pbs.MEANING_INDEX_ONLY)
コード例 #3
0
  def __validate_value_meaning_constraints(self, constraint, value):
    """Checks constraints on values that result from their meaning.

    For example, some meanings cause the length of a value to be constrained.

    Args:
      constraint: a _ValidationConstraint to apply
      value: an googledatastore.Value

    Raises:
      ValidationError: if the value is invalid
    """
    meaning = value.meaning
    if not meaning:
      return
    if meaning == datastore_pbs.MEANING_BYTESTRING:
      _assert_condition((len(value.blob_value)
                         <= datastore_pbs.MAX_INDEXED_BLOB_BYTES),
                        ('Blob value with meaning %d has more than '
                         'permitted %d bytes.'
                         % (meaning, datastore_pbs.MAX_INDEXED_BLOB_BYTES)))
    elif meaning in (datastore_pbs.MEANING_TEXT, datastore_pbs.MEANING_ZLIB):
      _assert_condition(value.exclude_from_indexes,
                        'Indexed value has meaning %d.' % meaning)
    elif meaning == datastore_pbs.MEANING_URL:
      _assert_condition((len(value.string_value)
                         <= datastore_pbs.MAX_URL_CHARS),
                        'URL value has more than permitted %d characters.'
                        % datastore_pbs.MAX_URL_CHARS)
    elif meaning == datastore_pbs.MEANING_NON_RFC_3339_TIMESTAMP:
      _assert_condition(
          not datastore_pbs.is_in_rfc_3339_bounds(value.integer_value),
          ('A timestamp in range [0001-01-01T00:00:00Z, '
           '9999-12-31T23:59:59.999999Z] must be stored as a timestamp '
           'value.'))
    elif meaning == datastore_pbs.MEANING_PERCENT:
      _assert_condition((value.integer_value >= 0
                         and value.integer_value <= 100),
                        'Percent value outside permitted range [0, 100].')
    elif meaning == datastore_pbs.MEANING_PREDEFINED_ENTITY_USER:
      self._validate_predefined_entity_value(value.entity_value, 'user',
                                             _USER_ENTITY_PROPERTY_MAP,
                                             _USER_ENTITY_REQUIRED_PROPERTIES)
    elif meaning == datastore_pbs.MEANING_INDEX_ONLY:
      _assert_condition(constraint.meaning_index_only_allowed,
                        'Value has meaning %d.'
                        % datastore_pbs.MEANING_INDEX_ONLY)
 def validate_timestamp(self, timestamp):
   _assert_condition(0 <= timestamp.nanos < 1000000000,
                     'Timestamp nanos exceeds limit for field')
   _assert_condition(
       datastore_pbs.is_in_rfc_3339_bounds(timestamp.seconds * 1000 * 1000),
       'Timestamp seconds exceeds limit for field')