Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/services/datastore/datastore.py
diff options
context:
space:
mode:
authorDan Williams <dcbw@localhost.localdomain>2006-12-11 15:59:30 (GMT)
committer Dan Williams <dcbw@localhost.localdomain>2006-12-11 15:59:30 (GMT)
commitdbca11236844c39666bb889018a038bf6f81267f (patch)
tree797e7e614554462dc35cbf2cd8afc001e10ce141 /services/datastore/datastore.py
parent74d9555796bf4d6dfd83517fc694e0eb429e33dc (diff)
don't allow blank property values in find(); handle property deletion
Diffstat (limited to 'services/datastore/datastore.py')
-rw-r--r--services/datastore/datastore.py16
1 files changed, 11 insertions, 5 deletions
diff --git a/services/datastore/datastore.py b/services/datastore/datastore.py
index 92270e4..17d4990 100644
--- a/services/datastore/datastore.py
+++ b/services/datastore/datastore.py
@@ -233,6 +233,8 @@ class DataStore(object):
subquery = ""
for (key, value) in prop_dict.items():
safe_key = key.replace("'", "''")
+ if not len(value):
+ raise ValueError("Property values must not be blank.")
value = str(value)
substr = "key='%s' AND value='%s'" % (safe_key, sqlite.encode(value))
if len(subquery) > 0:
@@ -280,12 +282,16 @@ class DataStore(object):
for (key, value) in prop_dict.items():
safe_key = key.replace("'", "''")
- enc_value = sqlite.encode(_get_data_as_string(value))
- curs.execute("SELECT objid FROM properties WHERE (objid=%d AND key='%s');" % (uid, safe_key))
- if len(curs.fetchall()) > 0:
- curs.execute("UPDATE properties SET value='%s' WHERE (objid=%d AND key='%s');" % (enc_value, uid, safe_key))
+ if not len(value):
+ # delete the property
+ curs.execute("DELETE FROM properties WHERE (objid=%d AND key='%s');" % (uid, safe_key))
else:
- curs.execute("INSERT INTO properties (objid, key, value) VALUES (%d, '%s', '%s');" % (uid, safe_key, enc_value))
+ enc_value = sqlite.encode(_get_data_as_string(value))
+ curs.execute("SELECT objid FROM properties WHERE (objid=%d AND key='%s');" % (uid, safe_key))
+ if len(curs.fetchall()) > 0:
+ curs.execute("UPDATE properties SET value='%s' WHERE (objid=%d AND key='%s');" % (enc_value, uid, safe_key))
+ else:
+ curs.execute("INSERT INTO properties (objid, key, value) VALUES (%d, '%s', '%s');" % (uid, safe_key, enc_value))
self._dbcx.commit()
del curs
self._dbus_obj_helper.Updated(False, {}, False, uid=uid)