X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=PLC%2FMethods%2FAddRoleToPerson.py;h=5a8e241e37e33ff31400fabb2f4d0c7fed249152;hb=da587f8598c5e22c951cb0f0278e82a0f0f07462;hp=08f183e9bd942bd4dac4b40f667add5ec9b1ee98;hpb=d4c363a3ee55334eacd91f303adf6ecc20055d1e;p=plcapi.git diff --git a/PLC/Methods/AddRoleToPerson.py b/PLC/Methods/AddRoleToPerson.py index 08f183e..5a8e241 100644 --- a/PLC/Methods/AddRoleToPerson.py +++ b/PLC/Methods/AddRoleToPerson.py @@ -27,29 +27,22 @@ class AddRoleToPerson(Method): returns = Parameter(int, '1 if successful') - def call(self, auth, role_id_or_name, person_id_or_email): - # Get all roles - roles = {} - for role in Roles(self.api): - roles[role['role_id']] = role['name'] - roles[role['name']] = role['role_id'] - - if role_id_or_name not in roles: - raise PLCInvalidArgument, "Invalid role identifier or name" - - if isinstance(role_id_or_name, int): - role_id = role_id_or_name - else: - role_id = roles[role_id_or_name] + # Get role + roles = Roles(self.api, [role_id_or_name]) + if not roles: + raise PLCInvalidArgument, "Invalid role '%s'" % unicode(role_id_or_name) + role = roles[0] # Get account information persons = Persons(self.api, [person_id_or_email]) if not persons: raise PLCInvalidArgument, "No such account" - person = persons[0] + if person['peer_id'] is not None: + raise PLCInvalidArgument, "Not a local account" + # Authenticated function assert self.caller is not None @@ -59,12 +52,15 @@ class AddRoleToPerson(Method): # Can only grant lesser (higher) roles to others if 'admin' not in self.caller['roles'] and \ - role_id <= min(self.caller['role_ids']): + role['role_id'] <= min(self.caller['role_ids']): raise PLCInvalidArgument, "Not allowed to grant that role" - if role_id not in person['role_ids']: - person.add_role(role_id) + if role['role_id'] not in person['role_ids']: + person.add_role(role) - self.object_ids = [person['person_id']] + self.event_objects = {'Person': [person['person_id']], + 'Role': [role['role_id']]} + self.message = "Role %d granted to person %d" % \ + (role['role_id'], person['person_id']) return 1