X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=PLC%2FMethods%2FUpdateKey.py;h=fd9a8e5e16a72874f752856b598ce587c2c33e10;hb=877058541e5a0161c0276fb310da9762ad8544d6;hp=19acbe3933d976815e97c6d8318b19d4f5bcf762;hpb=1f8c38dd1357c93e4be8d94456b7274a591d2db4;p=plcapi.git diff --git a/PLC/Methods/UpdateKey.py b/PLC/Methods/UpdateKey.py index 19acbe3..fd9a8e5 100644 --- a/PLC/Methods/UpdateKey.py +++ b/PLC/Methods/UpdateKey.py @@ -1,3 +1,4 @@ +# $Id# from PLC.Faults import * from PLC.Method import Method from PLC.Parameter import Parameter, Mixed @@ -33,16 +34,23 @@ class UpdateKey(Method): key_fields = dict(filter(can_update, key_fields.items())) # Get key information - keys = Keys(self.api, [key_id]).values() + keys = Keys(self.api, [key_id]) if not keys: raise PLCInvalidArgument, "No such key" key = keys[0] + if key['peer_id'] is not None: + raise PLCInvalidArgument, "Not a local key" + 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 accounts" key.update(key_fields) key.sync() - + + # Logging variables + self.event_objects = {'Key': [key['key_id']]} + self.message = 'key %d updated: %s' % \ + (key['key_id'], ", ".join(key_fields.keys())) return 1