Пример #1
0
    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)
Пример #2
0
    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)
Пример #3
0
    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)
Пример #4
0
    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))
Пример #5
0
    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))
Пример #6
0
    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))
Пример #7
0
    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))