def v4_to_v3_property()

in src/google/appengine/datastore/datastore_pbs.py [0:0]


  def v4_to_v3_property(self, property_name, is_multi, is_projection,
                        v4_value, v3_property):
    """Converts info from a v4 Property to a v3 Property.

    `v4_value` must not have a `list_value`.

    Args:
      property_name: The name of the property.
      is_multi: Whether the property contains multiple values.
      is_projection: Whether the property is projected.
      v4_value: An `entity_v4_pb2.Value`.
      v3_property: An `entity_pb2.Property` to populate.
    """
    assert not v4_value.list_value, 'v4 list_value not convertable to v3'
    v3_property.Clear()
    v3_property.name = property_name

    if v4_value.HasField('meaning') and v4_value.meaning == MEANING_EMPTY_LIST:
      v3_property.meaning = MEANING_EMPTY_LIST
      v3_property.multiple = False
      v3_property.value.Clear()
      return

    v3_property.multiple = is_multi
    self.v4_value_to_v3_property_value(v4_value, v3_property.value)

    v4_meaning = None
    if v4_value.HasField('meaning'):
      v4_meaning = v4_value.meaning
    if v4_value.HasField('timestamp_microseconds_value'):
      v3_property.meaning = entity_pb2.Property.GD_WHEN
    elif v4_value.HasField('blob_key_value'):
      v3_property.meaning = entity_pb2.Property.BLOBKEY
    elif v4_value.HasField('blob_value'):
      if v4_meaning == MEANING_ZLIB:
        v3_property.meaning_uri = URI_MEANING_ZLIB
      if v4_meaning == entity_pb2.Property.BYTESTRING:
        if v4_value.indexed:
          pass


      else:
        if v4_value.indexed:
          v3_property.meaning = entity_pb2.Property.BYTESTRING
        else:
          v3_property.meaning = entity_pb2.Property.BLOB
        v4_meaning = None
    elif v4_value.HasField('entity_value'):
      if v4_meaning != MEANING_GEORSS_POINT:
        if (v4_meaning != MEANING_PREDEFINED_ENTITY_POINT
            and v4_meaning != MEANING_PREDEFINED_ENTITY_USER):
          v3_property.meaning = entity_pb2.Property.ENTITY_PROTO
        v4_meaning = None
    elif v4_value.HasField('geo_point_value'):
      v3_property.meaning = MEANING_GEORSS_POINT
    else:

      pass
    if v4_meaning is not None:
      v3_property.meaning = v4_meaning

    if is_projection:
      v3_property.meaning = entity_pb2.Property.INDEX_VALUE