X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=PLC%2FMethods%2FAdmSetPersonEnabled.py;h=2009f0068a74f4627068d9a5a61f379e373e102c;hb=594b41a1dfd7525730fb20d7f7ee3593f6f93e96;hp=87aa923d683f4827a53211cb389d6fa99ce5d7ab;hpb=24d16d18acab3da7bccc3e09df4927e9cf2d3246;p=plcapi.git diff --git a/PLC/Methods/AdmSetPersonEnabled.py b/PLC/Methods/AdmSetPersonEnabled.py index 87aa923..2009f00 100644 --- a/PLC/Methods/AdmSetPersonEnabled.py +++ b/PLC/Methods/AdmSetPersonEnabled.py @@ -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.flush() - - return 1 + return UpdatePerson.call(self, auth, person_id_or_email, {'enabled': enabled})