diff options
author | Dan Williams <dcbw@localhost.localdomain> | 2006-12-11 15:59:30 (GMT) |
---|---|---|
committer | Dan Williams <dcbw@localhost.localdomain> | 2006-12-11 15:59:30 (GMT) |
commit | dbca11236844c39666bb889018a038bf6f81267f (patch) | |
tree | 797e7e614554462dc35cbf2cd8afc001e10ce141 /services/datastore/datastore.py | |
parent | 74d9555796bf4d6dfd83517fc694e0eb429e33dc (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.py | 16 |
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) |