svn keywords
[plcapi.git] / PLC / Methods / GetPersons.py
index 458fdac..7ef68b2 100644 (file)
@@ -1,3 +1,5 @@
+# $Id$
+# $URL$
 from PLC.Faults import *
 from PLC.Method import Method
 from PLC.Parameter import Parameter, Mixed
@@ -27,6 +29,8 @@ class GetPersons(Method):
         Auth(),
         Mixed([Mixed(Person.fields['person_id'],
                      Person.fields['email'])],
+             Parameter(str,"email"),
+              Parameter(int,"person_id"), 
               Filter(Person.fields)),
         Parameter([str], "List of fields to return", nullok = True)
         ]
@@ -60,6 +64,14 @@ class GetPersons(Method):
        else:
            return_fields = self.return_fields.keys()
 
+        # Must query at least person_id, site_ids, and role_ids (see
+        # Person.can_view() and below).
+        if return_fields is not None:
+            added_fields = set(['person_id', 'site_ids', 'role_ids','roles']).difference(return_fields)
+            return_fields += added_fields
+        else:
+            added_fields = []
+
         persons = Persons(self.api, person_filter, return_fields)
 
         # Filter out accounts that are not viewable
@@ -67,4 +79,11 @@ class GetPersons(Method):
            'admin' not in self.caller['roles']:
             persons = filter(self.caller.can_view, persons)
 
+        # Remove added fields if not specified
+        if added_fields:
+            for person in persons:
+                for field in added_fields:
+                   if field in person:
+                       del person[field]
+
         return persons