Branch 5.0 for module PLCAPI created from tag PLCAPI-4.2-8
[plcapi.git] / PLC / Methods / AdmGetSitePersons.py
index b9dd2f5..8122528 100644 (file)
@@ -1,44 +1,44 @@
-import os
-
 from PLC.Faults import *
 from PLC.Method import Method
 from PLC.Parameter import Parameter, Mixed
 from PLC.Sites import Site, Sites
-from PLC.Auth import PasswordAuth
+from PLC.Auth import Auth
 
 class AdmGetSitePersons(Method):
     """
-    Return a list of person_ids for the site specified.
+    Deprecated. See GetSites.
 
-    Admins may retrieve person_ids at any site by not specifying
-    site_id_or_name or by specifying an empty list. PIs may only retrieve 
-    the person_ids at their site
+    Return a list of person_ids for the site specified.
 
+    PIs may only retrieve the person_ids of accounts at their
+    site. Admins may retrieve the person_ids of accounts at any site.
     """
 
+    status = "deprecated"
+
     roles = ['admin', 'pi']
 
     accepts = [
-        PasswordAuth(),
-        Site.fields['site_id']
+        Auth(),
+        Mixed(Site.fields['site_id'],
+              Site.fields['login_base'])
         ]
 
-    returns = [Site.all_fields['person_ids']]
+    returns = Site.fields['person_ids']
 
-    def call(self, auth, site_id):
+    def call(self, auth, site_id_or_login_base):
         # Authenticated function
         assert self.caller is not None
 
         # Get site information
-       sites = Sites(self.api, [site_id], ['person_ids']).values()     
-
-       # make sure sites are found
+       sites = Sites(self.api, [site_id_or_login_base])
        if not sites:
-               raise PLCInvalidArgument, "No such site"
+            raise PLCInvalidArgument, "No such site"
+
        site = sites[0]
+
        if 'admin' not in self.caller['roles']: 
-                if site['site_id'] not in self.caller['site_ids']:
-                        raise PLCPermissionDenied, "Not allowed to update node network"
-       person_ids = site['person_ids']
-       
-       return person_ids
+            if site['site_id'] not in self.caller['site_ids']:
+                raise PLCPermissionDenied, "Not allowed to view accounts at that site"
+
+       return site['person_ids']