diff options
author | Aaron Williamson <aaron@copiesofcopies.org> | 2012-01-17 00:59:21 -0500 |
---|---|---|
committer | Aaron Williamson <aaron@copiesofcopies.org> | 2012-01-17 00:59:21 -0500 |
commit | 99a270e95298b248a77b07203ab3921078bd7906 (patch) | |
tree | 34711abf27ab7a614c92842b456bf74ec3d5d5fb /mediagoblin/db/sql/base.py | |
parent | 25b48323a86a1036112f2f33c889d5d12d5dee9c (diff) | |
parent | 8c7701f9f1653cf4038143cfb7a497ae21edf108 (diff) | |
download | mediagoblin-99a270e95298b248a77b07203ab3921078bd7906.tar.lz mediagoblin-99a270e95298b248a77b07203ab3921078bd7906.tar.xz mediagoblin-99a270e95298b248a77b07203ab3921078bd7906.zip |
Merged changes with upstream
Diffstat (limited to 'mediagoblin/db/sql/base.py')
-rw-r--r-- | mediagoblin/db/sql/base.py | 38 |
1 files changed, 38 insertions, 0 deletions
diff --git a/mediagoblin/db/sql/base.py b/mediagoblin/db/sql/base.py new file mode 100644 index 00000000..40140327 --- /dev/null +++ b/mediagoblin/db/sql/base.py @@ -0,0 +1,38 @@ +from sqlalchemy.orm import scoped_session, sessionmaker, object_session + + +Session = scoped_session(sessionmaker()) + + +def _fix_query_dict(query_dict): + if '_id' in query_dict: + query_dict['id'] = query_dict.pop('_id') + + +class GMGTableBase(object): + query = Session.query_property() + + @classmethod + def find(cls, query_dict={}): + _fix_query_dict(query_dict) + return cls.query.filter_by(**query_dict) + + @classmethod + def find_one(cls, query_dict={}): + _fix_query_dict(query_dict) + return cls.query.filter_by(**query_dict).first() + + @classmethod + def one(cls, query_dict): + return cls.find(query_dict).one() + + def get(self, key): + return getattr(self, key) + + def save(self, validate = True): + assert validate + sess = object_session(self) + if sess is None: + sess = Session() + sess.add(self) + sess.commit() |