@@ -118,13 +118,30 @@ def to_json(self, attr_list=[]):
118118 def to_entity (entity ):
119119 """Convert datastore types in entity to
120120 JSON-friendly structures."""
121- self . _to_entity ( entity )
121+ my_to_entity ( self , entity )
122122 for skipped_property in self .__class__ .json_does_not_include :
123123 del entity [skipped_property ]
124124 replace_datastore_types (entity )
125125 values = to_dict (self , attr_list , to_entity )
126126 return simplejson .dumps (values )
127127
128+ def my_to_entity (self , entity ):
129+ """Copies information from this model to provided entity.
130+
131+ Args:
132+ entity: Entity to save information on.
133+ """
134+ for prop in self .properties ().values ():
135+ logging .debug ("copying prop: " + prop .name )
136+ datastore_value = prop .get_value_for_datastore (self )
137+ if datastore_value == []:
138+ try :
139+ del entity [prop .name ]
140+ except KeyError :
141+ pass
142+ else :
143+ entity [prop .name ] = datastore_value
144+
128145class MemcachedModel (SerializableModel ):
129146 """MemcachedModel adds memcached all() retrieval through list().
130147
@@ -147,9 +164,19 @@ def put(self):
147164 memcache .delete (self .__class__ .memcache_key ())
148165 return key
149166
167+ def to_entity (entity ):
168+ """Convert datastore types in entity to
169+ JSON-friendly structures."""
170+ self ._to_entity (entity )
171+ logging .debug (dir (self .__class__ ))
172+ for skipped_property in self .__class__ .json_does_not_include :
173+ del entity [skipped_property ]
174+ replace_datastore_types (entity )
175+ values = to_dict (self , attr_list , to_entity )
176+
150177 def _to_repr (self ):
151178 return repr (to_dict (self , self .__class__ .list_includes ,
152- self . _to_entity ))
179+ my_to_entity ( self ) ))
153180
154181 @classmethod
155182 def get_or_insert (cls , key_name , ** kwds ):
0 commit comments