must query certain fields in order to filter
[plcapi.git] / PLC / Methods / GetPersons.py
index 458fdac..e48db7b 100644 (file)
@@ -60,6 +60,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']).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 +75,10 @@ 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:
+                    del person[field]
+
         return persons