X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=PLC%2FKeyTypes.py;h=920662b02332040ba541f0331a83b85b7c4c1e60;hb=refs%2Fheads%2Fplanetlab-4_0-branch;hp=0b0d16e098215e7d239198a8e049377795c3d9e6;hpb=3e3a4cdc823571fbf7248d027a8374b37a708615;p=plcapi.git diff --git a/PLC/KeyTypes.py b/PLC/KeyTypes.py index 0b0d16e..920662b 100644 --- a/PLC/KeyTypes.py +++ b/PLC/KeyTypes.py @@ -4,7 +4,7 @@ # Mark Huang # Copyright (C) 2006 The Trustees of Princeton University # -# $Id: KeyTypes.py,v 1.1 2006/10/10 20:24:06 mlhuang Exp $ +# $Id: KeyTypes.py 5574 2007-10-25 20:33:17Z thierry $ # from PLC.Faults import * @@ -19,20 +19,14 @@ class KeyType(Row): table_name = 'key_types' primary_key = 'key_type' + join_tables = ['keys'] fields = { 'key_type': Parameter(str, "Key type", max = 20), } - def __init__(self, api, fields = {}): - Row.__init__(self, fields) - self.api = api - def validate_key_type(self, name): - # Remove leading and trailing spaces - name = name.strip() - - # Make sure name is not blank after we removed the spaces - if not name: + # Make sure name is not blank + if not len(name): raise PLCInvalidArgument, "Key type must be specified" # Make sure key type does not alredy exist @@ -41,33 +35,19 @@ class KeyType(Row): raise PLCInvalidArgument, "Key type name already in use" return name - - def delete(self, commit = True): - assert 'key_type' in self - - # Clean up miscellaneous join tables - for table in ['keys', 'key_types']: - self.api.db.do("DELETE FROM " + table + \ - " WHERE key_type = %(key_type)s", - self) - - if commit: - self.api.db.commit() class KeyTypes(Table): """ Representation of the key_types table in the database. """ - def __init__(self, api, names = None): + def __init__(self, api, key_types = None): + Table.__init__(self, api, KeyType) + sql = "SELECT %s FROM key_types" % \ ", ".join(KeyType.fields) - if names: - # Separate the list into integers and strings - sql += " WHERE key_type IN (%s)" % ", ".join(api.db.quote(names)) - - rows = api.db.selectall(sql) + if key_types: + sql += " WHERE key_type IN (%s)" % ", ".join(map(api.db.quote, key_types)) - for row in rows: - self[row['key_type']] = KeyType(api, row) + self.selectall(sql)