app/soc/logic/models/base.py
changeset 1780 210ab3d5d6ea
parent 1696 7b120f7f9a7a
child 2030 a21ee5f0591d
--- 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.