1 from PLC.Faults import *
2 from PLC.Method import Method
3 from PLC.Parameter import Parameter, Mixed
4 from PLC.Addresses import Address, Addresses
5 from PLC.Sites import Site, Sites
6 from PLC.Auth import PasswordAuth
8 class GetAddresses(Method):
10 Get an array of structs containing the addresses of the specified
11 site. If address_id_list is specified, only the specified
12 addresses will be queried.
15 roles = ['admin', 'pi', 'user', 'tech']
19 Mixed(Site.fields['site_id'],
20 Site.fields['login_base']),
21 [Address.fields['address_id']],
24 returns = [Address.fields]
26 def call(self, auth, site_id_or_login_base, address_id_list = None):
27 sites = Sites(self.api, [site_id_or_login_base]).values()
29 raise PLCInvalidArgument, "No such site"
32 if address_id_list is None:
33 address_id_list = site['address_ids']
35 if set(address_id_list).intersection(site['address_ids']) != \
37 raise PLCInvalidArgument, "Invalid address ID(s)"
39 addresses = Addresses(self.api, address_id_list).values()