(*) Peer has new fields person_ids and site_ids
[plcapi.git] / PLC / Methods / AddPeer.py
1 #
2 # Thierry Parmentelat - INRIA
3
4
5 from PLC.Faults import *
6 from PLC.Method import Method
7 from PLC.Parameter import Parameter, Mixed
8 from PLC.Auth import Auth
9
10 from PLC.Peers import Peer, Peers
11
12 can_update = lambda(k,v): k in ['peername','peer_url','auth_person_id']
13
14 class AddPeer (Method):
15     """
16     Creates a peer entry in the database and returns its id
17     Temporarily, requires to provide an auth_person_id 
18     this is used to store the credentials that we'll
19     use when connecting to the peer's API
20     """
21
22     roles = ['admin']
23     peer_fields = dict( [x for x in Peer.fields.iteritems() if can_update(x)] )
24
25     accepts = [ Auth(),
26                 peer_fields
27                 ]
28
29     returns = Parameter (int, "peer_id")
30
31     def call (self, auth, fields):
32
33         peer = Peer (self.api,fields);
34         peer.sync()
35         
36         return peer['peer_id']
37         
38