diff options
author | Elrond <elrond+mediagoblin.org@samba-tng.org> | 2012-02-19 12:14:58 +0100 |
---|---|---|
committer | Elrond <elrond+mediagoblin.org@samba-tng.org> | 2012-02-26 19:46:44 +0100 |
commit | c60bbe07c558b2f13501cb16d18b61022715b380 (patch) | |
tree | a409618237e88d8b76a5e564a16636fe8f77cf23 /mediagoblin/db/sql/base.py | |
parent | 8efcd4055804f5dba99cced70fd4fb7876a88e5e (diff) | |
download | mediagoblin-c60bbe07c558b2f13501cb16d18b61022715b380.tar.lz mediagoblin-c60bbe07c558b2f13501cb16d18b61022715b380.tar.xz mediagoblin-c60bbe07c558b2f13501cb16d18b61022715b380.zip |
Let SQL objects support .setdefault() and .delete()
Some parts in the code like to use .setdefault(). So make
them happy and provide a minimal version. It ignores the
given default and expects the attribute to already exist.
Other parts use .delete() to delete a complete object. This
version expects the object to live in a session and also
does the final commit.
Diffstat (limited to 'mediagoblin/db/sql/base.py')
-rw-r--r-- | mediagoblin/db/sql/base.py | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/mediagoblin/db/sql/base.py b/mediagoblin/db/sql/base.py index 6ed24a03..838080b0 100644 --- a/mediagoblin/db/sql/base.py +++ b/mediagoblin/db/sql/base.py @@ -67,6 +67,10 @@ class GMGTableBase(object): def get(self, key): return getattr(self, key) + def setdefault(self, key, defaultvalue): + # The key *has* to exist on sql. + return getattr(self, key) + def save(self, validate=True): assert validate sess = object_session(self) @@ -75,6 +79,12 @@ class GMGTableBase(object): sess.add(self) sess.commit() + def delete(self): + sess = object_session(self) + assert sess is not None, "Not going to delete detached %r" % self + sess.delete(self) + sess.commit() + Base = declarative_base(cls=GMGTableBase) |