returns = Parameter(int, '1 if successful')
def call(self, auth, key_id, key_fields):
- key_fields = dict(filter(can_update, key_fields.items()))
-
- # Get key information
- 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