From: Mark Huang Date: Wed, 11 Oct 2006 15:43:01 +0000 (+0000) Subject: - remove is_blacklisted from fields that can be updated X-Git-Tag: pycurl-7_13_1~613 X-Git-Url: http://git.onelab.eu/?a=commitdiff_plain;h=c35e0c77f5db984597a3d6558aaf78ef6ed6846a;p=plcapi.git - remove is_blacklisted from fields that can be updated --- diff --git a/PLC/Methods/UpdateKey.py b/PLC/Methods/UpdateKey.py index e269a992..7aa21cc7 100644 --- a/PLC/Methods/UpdateKey.py +++ b/PLC/Methods/UpdateKey.py @@ -9,7 +9,7 @@ class UpdateKey(Method): Updates the parameters of an existing key with the values in key_fields. - Non admins may only update their own keys. + Non-admins may only update their own keys. Returns 1 if successful, faults otherwise. """ @@ -17,7 +17,7 @@ class UpdateKey(Method): roles = ['admin', 'pi', 'tech', 'user'] can_update = lambda (field, value): field in \ - ['key_type', 'key', 'is_blacklisted', 'is_primary'] + ['key_type', 'key'] update_fields = dict(filter(can_update, Key.fields.items())) accepts = [ @@ -29,18 +29,11 @@ class UpdateKey(Method): returns = Parameter(int, '1 if successful') def call(self, auth, key_id, key_fields): - - valid_fields = self.update_fields - # Remove admin only fields - if 'admin' not in self.caller['roles']: - for key in ['is_blacklisted']: - valid_fields.remove(key) - # Make sure only valid fields are specified - if filter(lambda field: field not in valid_fields, key_fields): + if filter(lambda field: field not in self.update_fields, key_fields): raise PLCInvalidArgument, "Invalid field specified" - # Get Key Information + # Get key information keys = Keys(self.api, [key_id]).values() if not keys: raise PLCInvalidArgument, "No such key" @@ -48,7 +41,8 @@ class UpdateKey(Method): if 'admin' not in self.caller['roles']: if key['key_id'] not in self.caller['key_ids']: - raise PLCPermissionDenied, "Key must be associated with one of your account" + raise PLCPermissionDenied, "Key must be associated with one of your accounts" + assert key['person_id'] == self.caller['person_id'] key.update(key_fields) key.sync()