X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=PLC%2FAddressTypes.py;h=e4ad4de7a80cba5847c109f13b2caca0d6246478;hb=e81fb1f3d2c89f2e3951b3c0df975e174ed6545d;hp=227b974a054f527b2c044c617f10146183c4a0d2;hpb=f5cd72e35593c96b9996ab4e49674cccc7525c48;p=plcapi.git diff --git a/PLC/AddressTypes.py b/PLC/AddressTypes.py index 227b974..e4ad4de 100644 --- a/PLC/AddressTypes.py +++ b/PLC/AddressTypes.py @@ -4,9 +4,6 @@ # Mark Huang # Copyright (C) 2006 The Trustees of Princeton University # -# $Id$ -# $URL$ -# from types import StringTypes from PLC.Faults import * @@ -30,17 +27,17 @@ class AddressType(Row): } def validate_name(self, name): - # Make sure name is not blank + # Make sure name is not blank if not len(name): raise PLCInvalidArgument, "Address type must be specified" - - # Make sure address type does not already exist - conflicts = AddressTypes(self.api, [name]) - for address_type_id in conflicts: + + # Make sure address type does not already exist + conflicts = AddressTypes(self.api, [name]) + for address_type_id in conflicts: if 'address_type_id' not in self or self['address_type_id'] != address_type_id: - raise PLCInvalidArgument, "Address type name already in use" + raise PLCInvalidArgument, "Address type name already in use" - return name + return name class AddressTypes(Table): """ @@ -48,7 +45,7 @@ class AddressTypes(Table): """ def __init__(self, api, address_type_filter = None, columns = None): - Table.__init__(self, api, AddressType, columns) + Table.__init__(self, api, AddressType, columns) sql = "SELECT %s FROM address_types WHERE True" % \ ", ".join(self.columns) @@ -63,5 +60,13 @@ class AddressTypes(Table): elif isinstance(address_type_filter, dict): address_type_filter = Filter(AddressType.fields, address_type_filter) sql += " AND (%s) %s" % address_type_filter.sql(api, "AND") + elif isinstance(address_type_filter, (int, long)): + address_type_filter = Filter(AddressType.fields, {'address_type_id': address_type_filter}) + sql += " AND (%s) %s" % address_type_filter.sql(api, "AND") + elif isinstance(address_type_filter, StringTypes): + address_type_filter = Filter(AddressType.fields, {'name': address_type_filter}) + sql += " AND (%s) %s" % address_type_filter.sql(api, "AND") + else: + raise PLCInvalidArgument, "Wrong address type filter %r"%address_type_filter self.selectall(sql)