app/soc/logic/models/base.py
changeset 1549 bd07b231fe39
parent 1518 f6f43a1675eb
child 1573 063306b7210e
equal deleted inserted replaced
1548:15caebd3304d 1549:bd07b231fe39
   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