- return hostnames instead of node_ids
[plcapi.git] / PLC / Methods / AddPersonToSite.py
index e4719ab..4cb786f 100644 (file)
@@ -3,7 +3,7 @@ from PLC.Method import Method
 from PLC.Parameter import Parameter, Mixed
 from PLC.Persons import Person, Persons
 from PLC.Sites import Site, Sites
 from PLC.Parameter import Parameter, Mixed
 from PLC.Persons import Person, Persons
 from PLC.Sites import Site, Sites
-from PLC.Auth import PasswordAuth
+from PLC.Auth import Auth
 
 class AddPersonToSite(Method):
     """
 
 class AddPersonToSite(Method):
     """
@@ -17,7 +17,7 @@ class AddPersonToSite(Method):
     roles = ['admin']
 
     accepts = [
     roles = ['admin']
 
     accepts = [
-        PasswordAuth(),
+        Auth(),
         Mixed(Person.fields['person_id'],
               Person.fields['email']),
         Mixed(Site.fields['site_id'],
         Mixed(Person.fields['person_id'],
               Person.fields['email']),
         Mixed(Site.fields['site_id'],
@@ -25,27 +25,31 @@ class AddPersonToSite(Method):
         ]
 
     returns = Parameter(int, '1 if successful')
         ]
 
     returns = Parameter(int, '1 if successful')
-    event_type = 'AddTo'
-    object_type = 'Site'
-    object_ids = []
 
     def call(self, auth, person_id_or_email, site_id_or_login_base):
         # Get account information
         persons = Persons(self.api, [person_id_or_email])
         if not persons:
             raise PLCInvalidArgument, "No such account"
 
     def call(self, auth, person_id_or_email, site_id_or_login_base):
         # Get account information
         persons = Persons(self.api, [person_id_or_email])
         if not persons:
             raise PLCInvalidArgument, "No such account"
+        person = persons[0]
 
 
-        person = persons.values()[0]
+        if person['peer_id'] is not None:
+            raise PLCInvalidArgument, "Not a local account"
 
         # Get site information
         sites = Sites(self.api, [site_id_or_login_base])
         if not sites:
             raise PLCInvalidArgument, "No such site"
 
         # Get site information
         sites = Sites(self.api, [site_id_or_login_base])
         if not sites:
             raise PLCInvalidArgument, "No such site"
+        site = sites[0]
 
 
-        site = sites.values()[0]
+        if site['peer_id'] is not None:
+            raise PLCInvalidArgument, "Not a local site"
 
         if site['site_id'] not in person['site_ids']:
             site.add_person(person)
 
         if site['site_id'] not in person['site_ids']:
             site.add_person(person)
+
+       # Logging variables
        self.object_ids = [site['site_id']]
        self.object_ids = [site['site_id']]
-       
+       self.message = 'Person %d added to site %d' % \
+               (person['person_id'], site['site_id'])
         return 1
         return 1