diff -r cdd11aa8dbc7 -r 210ab3d5d6ea app/soc/logic/models/base.py --- a/app/soc/logic/models/base.py Mon Mar 09 20:43:46 2009 +0000 +++ b/app/soc/logic/models/base.py Mon Mar 09 23:56:14 2009 +0000 @@ -222,6 +222,23 @@ return self._model.get_by_key_name(key_name) + def getFromKeyNameOr404(self, key_name): + """Like getFromKeyName but expects to find an entity. + + Raises: + out_of_band.Error if no entity is found + """ + + entity = self.getFromKeyName(key_name) + + if entity: + return entity + + msg = ugettext('There is no "%(name)s" named %(key_name)s.') % { + 'name': self._name, 'key_name': key_name} + + raise out_of_band.Error(msg, status=404) + def getFromKeyFields(self, fields): """Returns the entity for the specified key names, or None if not found.