aboutsummaryrefslogtreecommitdiffstats
path: root/mediagoblin/db/sql/base.py
diff options
context:
space:
mode:
authorElrond <elrond+mediagoblin.org@samba-tng.org>2012-02-19 12:14:58 +0100
committerElrond <elrond+mediagoblin.org@samba-tng.org>2012-02-26 19:46:44 +0100
commitc60bbe07c558b2f13501cb16d18b61022715b380 (patch)
treea409618237e88d8b76a5e564a16636fe8f77cf23 /mediagoblin/db/sql/base.py
parent8efcd4055804f5dba99cced70fd4fb7876a88e5e (diff)
downloadmediagoblin-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.py10
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)