equal
deleted
inserted
replaced
332 raise NoEntityError |
332 raise NoEntityError |
333 |
333 |
334 if not entity_properties: |
334 if not entity_properties: |
335 raise InvalidArgumentError |
335 raise InvalidArgumentError |
336 |
336 |
337 def update(): |
|
338 return self._unsafeUpdateEntityProperties(entity, entity_properties) |
|
339 |
|
340 entity = db.run_in_transaction(update) |
|
341 |
|
342 # call the _onUpdate method |
|
343 if not silent: |
|
344 self._onUpdate(entity) |
|
345 |
|
346 return entity |
|
347 |
|
348 def _unsafeUpdateEntityProperties(self, entity, entity_properties): |
|
349 """See updateEntityProperties. |
|
350 |
|
351 Like updateEntityProperties(), but not run within a transaction. |
|
352 """ |
|
353 |
|
354 properties = self._model.properties() |
337 properties = self._model.properties() |
355 |
338 |
356 for name, prop in properties.iteritems(): |
339 for name, prop in properties.iteritems(): |
357 # if the property is not updatable or is not updated, skip it |
340 # if the property is not updatable or is not updated, skip it |
358 if name in self._skip_properties or (name not in entity_properties): |
341 if name in self._skip_properties or (name not in entity_properties): |
361 if self._updateField(entity, entity_properties, name): |
344 if self._updateField(entity, entity_properties, name): |
362 value = entity_properties[name] |
345 value = entity_properties[name] |
363 prop.__set__(entity, value) |
346 prop.__set__(entity, value) |
364 |
347 |
365 entity.put() |
348 entity.put() |
|
349 |
|
350 # call the _onUpdate method |
|
351 if not silent: |
|
352 self._onUpdate(entity) |
|
353 |
366 return entity |
354 return entity |
367 |
355 |
368 def updateOrCreateFromKeyName(self, properties, key_name): |
356 def updateOrCreateFromKeyName(self, properties, key_name): |
369 """Update existing entity, or create new one with supplied properties. |
357 """Update existing entity, or create new one with supplied properties. |
370 |
358 |