- """
- Adds roles found in value list to this person (using AddRoleToPerson).
- Deletes roles not found in value list from this person (using DeleteRoleFromPerson).
- """
-
- assert 'role_ids' in self
- assert 'person_id' in self
- assert isinstance(value, list)
-
- (role_ids, role_names) = self.separate_types(value)[0:2]
-
- # Translate roles into role_ids
- if role_names:
- roles = Roles(self.api, role_names).dict('role_id')
- role_ids += roles.keys()
-
- # Add new ids, remove stale ids
- if self['role_ids'] != role_ids:
- from PLC.Methods.AddRoleToPerson import AddRoleToPerson
- from PLC.Methods.DeleteRoleFromPerson import DeleteRoleFromPerson
- new_roles = set(role_ids).difference(self['role_ids'])
- stale_roles = set(self['role_ids']).difference(role_ids)
-
- for new_role in new_roles:
- AddRoleToPerson.__call__(AddRoleToPerson(self.api), auth, new_role, self['person_id'])
- for stale_role in stale_roles:
- DeleteRoleFromPerson.__call__(DeleteRoleFromPerson(self.api), auth, stale_role, self['person_id'])
+ """
+ Adds roles found in value list to this person (using AddRoleToPerson).
+ Deletes roles not found in value list from this person (using DeleteRoleFromPerson).
+ """
+
+ assert 'role_ids' in self
+ assert 'person_id' in self
+ assert isinstance(value, list)
+
+ (role_ids, role_names) = self.separate_types(value)[0:2]
+
+ # Translate roles into role_ids
+ if role_names:
+ roles = Roles(self.api, role_names).dict('role_id')
+ role_ids += roles.keys()
+
+ # Add new ids, remove stale ids
+ if self['role_ids'] != role_ids:
+ from PLC.Methods.AddRoleToPerson import AddRoleToPerson
+ from PLC.Methods.DeleteRoleFromPerson import DeleteRoleFromPerson
+ new_roles = set(role_ids).difference(self['role_ids'])
+ stale_roles = set(self['role_ids']).difference(role_ids)
+
+ for new_role in new_roles:
+ AddRoleToPerson.__call__(AddRoleToPerson(self.api), auth, new_role, self['person_id'])
+ for stale_role in stale_roles:
+ DeleteRoleFromPerson.__call__(DeleteRoleFromPerson(self.api), auth, stale_role, self['person_id'])