Branch 5.0 for module PLCAPI created from tag PLCAPI-4.2-8
[plcapi.git] / PLC / Methods / AdmSetPersonEnabled.py
index d97075b..2009f00 100644 (file)
@@ -2,46 +2,22 @@ from PLC.Faults import *
 from PLC.Method import Method
 from PLC.Parameter import Parameter, Mixed
 from PLC.Persons import Person, Persons
-from PLC.Auth import PasswordAuth
+from PLC.Auth import Auth
+from PLC.Methods.UpdatePerson import UpdatePerson
 
-class AdmSetPersonEnabled(Method):
+class AdmSetPersonEnabled(UpdatePerson):
     """
-    Enables or disables a person.
-
-    Users and techs can only update themselves. PIs can only update
-    themselves and other non-PIs at their sites. Admins can update
-    anyone.
-
-    Returns 1 if successful, faults otherwise.
+    Deprecated. See UpdatePerson.
     """
 
-    roles = ['admin', 'pi']
+    status = "deprecated"
 
     accepts = [
-        PasswordAuth(),
+        Auth(),
         Mixed(Person.fields['person_id'],
               Person.fields['email']),
         Person.fields['enabled']
         ]
 
-    returns = Parameter(int, '1 if successful')
-
     def call(self, auth, person_id_or_email, enabled):
-        # Get account information
-        persons = Persons(self.api, [person_id_or_email])
-        if not persons:
-            raise PLCInvalidArgument, "No such account"
-
-        person = persons.values()[0]
-
-        # Authenticated function
-        assert self.caller is not None
-
-        # Check if we can update this account
-        if not self.caller.can_update(person):
-            raise PLCPermissionDenied, "Not allowed to enable specified account"
-
-        person['enabled'] = enabled
-        person.sync()
-
-        return 1
+        return UpdatePerson.call(self, auth, person_id_or_email, {'enabled': enabled})