X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=PLC%2FAddressTypes.py;h=e4ad4de7a80cba5847c109f13b2caca0d6246478;hb=9aecb8c6fde06136bef94e2fd6fce832dc3c0c10;hp=dd6afffd7926657117ea5fcf93a444d1b231bcf2;hpb=a74854dd38cb742b8fdc0d0cda7fff738a95312c;p=plcapi.git diff --git a/PLC/AddressTypes.py b/PLC/AddressTypes.py index dd6afff..e4ad4de 100644 --- a/PLC/AddressTypes.py +++ b/PLC/AddressTypes.py @@ -4,8 +4,6 @@ # Mark Huang # Copyright (C) 2006 The Trustees of Princeton University # -# $Id$ -# from types import StringTypes from PLC.Faults import * @@ -29,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): """ @@ -47,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) @@ -62,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)