def open(self, user, config_name): try: self.config_model = self.application.config_service.load_config_model(config_name, user) except ConfigNotAllowedException: self.close(code=403, reason='Access to the script is denied') return if not self.config_model: self.close(code=404, reason='Could not find a script by name') return self.ioloop = tornado.ioloop.IOLoop.current() initial_config = external_model.config_to_external(self.config_model) self.safe_write(wrap_to_server_event('initialConfig', initial_config)) socket = self class ParameterListener: def on_add(self, parameter, index): socket.safe_write(wrap_to_server_event('parameterAdded', parameter_to_external(parameter))) socket._subscribe_on_parameter(parameter) def on_remove(self, parameter): socket.safe_write(wrap_to_server_event('parameterRemoved', parameter.name)) self.config_model.parameters.subscribe(ParameterListener()) for parameter in self.config_model.parameters: self._subscribe_on_parameter(parameter)
def open(self, user, config_name): try: self.config_model = self.application.config_service.create_config_model(config_name, user) active_config_models[self.config_id] = {'model': self.config_model, 'user_id': user.user_id} except ConfigNotAllowedException: self.close(code=403, reason='Access to the script is denied') return if not self.config_model: self.close(code=404, reason='Could not find a script by name') return self.ioloop = tornado.ioloop.IOLoop.current() initial_config = external_model.config_to_external(self.config_model, self.config_id) self.safe_write(wrap_to_server_event('initialConfig', initial_config)) socket = self class ParameterListener: def on_add(self, parameter, index): socket.safe_write(wrap_to_server_event('parameterAdded', parameter_to_external(parameter))) socket._subscribe_on_parameter(parameter) def on_remove(self, parameter): socket.safe_write(wrap_to_server_event('parameterRemoved', parameter.name)) self.config_model.parameters.subscribe(ParameterListener()) for parameter in self.config_model.parameters: self._subscribe_on_parameter(parameter)
def open(self, user, config_name): try: load_config_future = tornado.ioloop.IOLoop.current( ).run_in_executor( executor=None, func=functools.partial( self.application.config_service.load_config_model, config_name, user)) self.config_model = yield load_config_future active_config_models[self.config_id] = { 'model': self.config_model, 'user_id': user.user_id } except ConfigNotAllowedException: self.close(code=403, reason='Access to the script is denied') return except Exception: message = 'Failed to load script config ' + config_name LOGGER.exception(message) self.close(code=500, reason=message) return if not self.config_model: self.close(code=404, reason='Could not find a script by name') return self.ioloop = tornado.ioloop.IOLoop.current() initial_config = external_model.config_to_external( self.config_model, self.config_id) self.safe_write(wrap_to_server_event('initialConfig', initial_config)) socket = self class ParameterListener: def on_add(self, parameter, index): socket.safe_write( wrap_to_server_event('parameterAdded', parameter_to_external(parameter))) socket._subscribe_on_parameter(parameter) def on_remove(self, parameter): socket.safe_write( wrap_to_server_event('parameterRemoved', parameter.name)) self.config_model.parameters.subscribe(ParameterListener()) for parameter in self.config_model.parameters: self._subscribe_on_parameter(parameter)
def _prepare_and_send_model(self, *, parameter_values=None, external_id=None, event_type, client_state_version=None): config_model = yield self._prepare_model(self.config_name, self.user, parameter_values, skip_invalid_parameters=True) if not config_model: return if client_state_version: self._latest_client_state_version = client_state_version self._set_model(config_model) new_config = external_model.config_to_external(config_model, self.config_id, external_id) self.safe_write(self._create_event(event_type, new_config))
def get(self, user): try: name = self.get_query_argument("name") except tornado.web.MissingArgumentError: respond_error(self, 400, "Script name is not specified") return try: config = self.application.config_service.load_config_model(name, user) except ConfigNotAllowedException: raise tornado.web.HTTPError(403, reason='Access to the script is denied') if not config: respond_error(self, 400, "Couldn't find a script by name") return self.write(external_model.config_to_external(config))
def _prepare_and_send_model(self, *, parameter_values=None, external_id=None, event_type): config_model = yield self._prepare_model(self.config_name, self.user, parameter_values, skip_invalid_parameters=True) if not config_model: return self._set_model(config_model) new_config = external_model.config_to_external(config_model, self.config_id, external_id) self.safe_write(wrap_to_server_event(event_type, new_config))
def get(self, execution_id): validate_execution_id(execution_id, self) config = self.application.execution_service.get_config(execution_id) self.write(external_model.config_to_external(config))