app/soc/logic/models/base.py
changeset 354 b931c74abbee
parent 317 87215136c268
child 363 d35ffa6ca643
equal deleted inserted replaced
353:de3c27dbf5cd 354:b931c74abbee
    81     Returns:
    81     Returns:
    82       * None if a field is false.
    82       * None if a field is false.
    83       * Entity for supplied fields
    83       * Entity for supplied fields
    84 
    84 
    85     Raises:
    85     Raises:
    86       out_of_band.ErrorResponse if link name is not false, but no Sponsor entity
    86       out_of_band.ErrorResponse if link name is not false, but no entity
    87       with the supplied link name exists in the Datastore
    87       with the supplied link name exists in the Datastore
    88     """
    88     """
    89 
    89 
    90     if not all(kwargs.values()):
    90     if not all(kwargs.values()):
    91       # exit without error, to let view know that link_name was not supplied
    91       # exit without error, to let view know that link_name was not supplied
    92       return None
    92       return None
    93 
    93 
    94     entity = self.getFromFields(**kwargs)
    94     entity = self.getFromFields(**kwargs)
    95 
    95 
    96     if entity:
    96     if entity:
    97       # a Sponsor exist for this link_name, so return that Sponsor entity
    97       # an entity exist for this link_name, so return that entity
    98       return entity
    98       return entity
    99 
    99 
   100     fields = []
   100     fields = []
   101 
   101 
   102     for key, value in kwargs.iteritems():
   102     for key, value in kwargs.iteritems():
   185     if not entity:
   185     if not entity:
   186       # entity did not exist, so create one in a transaction
   186       # entity did not exist, so create one in a transaction
   187       entity = self._model.get_or_insert(key_name, **properties)
   187       entity = self._model.get_or_insert(key_name, **properties)
   188 
   188 
   189     # there is no way to be sure if get_or_insert() returned a new entity or
   189     # there is no way to be sure if get_or_insert() returned a new entity or
   190     # got an existing one due to a race, so update with sponsor_properties anyway,
   190     # got an existing one due to a race, so update with properties anyway,
   191     # in a transaction
   191     # in a transaction
   192     return self.updateModelProperties(entity, **properties)
   192     return self.updateModelProperties(entity, **properties)
   193 
   193 
   194   def updateOrCreateFromFields(self, properties, **kwargs):
   194   def updateOrCreateFromFields(self, properties, **kwargs):
   195     """Like updateOrCreateFromKeyName, but resolves **kwargs to a key_name first
   195     """Like updateOrCreateFromKeyName, but resolves **kwargs to a key_name first