X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=PLC%2FMethods%2FGetPersons.py;h=522893348ace8795ac682029e52b0ac95febe7ea;hb=69e72e78ebbbbe135267d2ff0b0f10a0cf4937ac;hp=458fdacd9891f11abe6a2ae3656a0999ef243c68;hpb=c292f0b768fcaa05218cf5ffdda5672e6ea9ffe6;p=plcapi.git diff --git a/PLC/Methods/GetPersons.py b/PLC/Methods/GetPersons.py index 458fdac..5228933 100644 --- a/PLC/Methods/GetPersons.py +++ b/PLC/Methods/GetPersons.py @@ -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