use Role
[plcapi.git] / PLC / Methods / AddRoleToPerson.py
index 25b54e2..bfe6817 100644 (file)
@@ -3,14 +3,14 @@ from PLC.Method import Method
 from PLC.Parameter import Parameter, Mixed
 from PLC.Persons import Person, Persons
 from PLC.Auth import PasswordAuth
-from PLC.Roles import Roles
+from PLC.Roles import Role, Roles
 
 class AddRoleToPerson(Method):
     """
     Grants the specified role to the person.
     
     PIs can only grant the tech and user roles to users and techs at
-    their sites. ins can grant any role to any user.
+    their sites. Admins can grant any role to any user.
 
     Returns 1 if successful, faults otherwise.
     """
@@ -19,17 +19,21 @@ class AddRoleToPerson(Method):
 
     accepts = [
         PasswordAuth(),
+        Mixed(Role.fields['role_id'],
+              Role.fields['name']),
         Mixed(Person.fields['person_id'],
               Person.fields['email']),
-        Mixed(Parameter(int, "Role identifier"),
-              Parameter(str, "Role name"))
         ]
 
     returns = Parameter(int, '1 if successful')
 
-    def call(self, auth, person_id_or_email, role_id_or_name):
+    def call(self, auth, role_id_or_name, person_id_or_email):
         # Get all roles
-        roles = Roles(self.api)
+        roles = {}
+        for role_id, role in Roles(self.api).iteritems():
+            roles[role_id] = role['name']
+            roles[role['name']] = role_id
+
         if role_id_or_name not in roles:
             raise PLCInvalidArgument, "Invalid role identifier or name"