-fix bug: users can properly update slice description/url if slice has none
[plcapi.git] / PLC / Methods / GetPersons.py
index 458fdac..5228933 100644 (file)
@@ -27,6 +27,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 +62,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 +77,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