7e9c82813e4f5e9ae7e3016515602d29f2c9010f
[plcapi.git] / PLC / Methods / GetPCUProtocolTypes.py
1 # $Id$
2 from PLC.Faults import *
3 from PLC.Method import Method
4 from PLC.Parameter import Parameter, Mixed
5 from PLC.PCUProtocolTypes import PCUProtocolType, PCUProtocolTypes
6 from PLC.Auth import Auth
7 from PLC.Filter import Filter
8
9 class GetPCUProtocolTypes(Method):
10     """
11     Returns an array of PCU Types.
12     """
13
14     roles = ['admin', 'pi', 'user', 'tech', 'node']
15
16     accepts = [
17         Auth(),
18         Mixed([PCUProtocolType.fields['pcu_type_id']],
19                Filter(PCUProtocolType.fields)),
20         Parameter([str], "List of fields to return", nullok = True)
21         ]
22
23     returns = [PCUProtocolType.fields]
24     
25
26     def call(self, auth, protocol_type_filter = None, return_fields = None):
27
28         #Must query at least pcu_type_id
29         if return_fields is not None and 'pcu_protocol_type_id' not in return_fields:
30             return_fields.append('pcu_protocol_type_id')
31             added_fields = ['pcu_protocol_type_id']
32         else:
33             added_fields = []
34
35         protocol_types = PCUProtocolTypes(self.api, protocol_type_filter, return_fields)
36
37         for added_field in added_fields:
38             for protocol_type in protocol_types:
39                 del protocol_type[added_field]
40                 
41         return protocol_types