diff --git a/rhodecode/model/db.py b/rhodecode/model/db.py --- a/rhodecode/model/db.py +++ b/rhodecode/model/db.py @@ -35,6 +35,7 @@ from sqlalchemy.ext.hybrid import hybrid from sqlalchemy.orm import relationship, joinedload, class_mapper, validates from sqlalchemy.exc import DatabaseError from beaker.cache import cache_region, region_invalidate +from webob.exc import HTTPNotFound from pylons.i18n.translation import lazy_ugettext as _ @@ -51,6 +52,7 @@ from rhodecode.lib.caching_query import from rhodecode.model.meta import Base, Session + URL_SEP = '/' log = logging.getLogger(__name__) @@ -142,6 +144,14 @@ class BaseModel(object): return cls.query().get(id_) @classmethod + def get_or_404(cls, id_): + if id_: + res = cls.query().get(id_) + if not res: + raise HTTPNotFound + return res + + @classmethod def getAll(cls): return cls.query().all()