Ejemplo n.º 1
0
 def add_example_actions_to_schema(self):
     self.based_on_definition = "virtual_definition"
     self.add_action_to_schema(
         SingleAction("virtual action",
                      "virt descr", ["template ", "<f>"],
                      ui=("ui", "interaction.ui_fun()")))
     return True
Ejemplo n.º 2
0
 def get_example_definition(self):
     example_defi = SingleDefinition("example_defi", self.batch.logger)
     example_group_actions = MultiAction(1, "example a gr")
     example_action = SingleAction("ex_a",
                                   "desc",
                                   "templ <o>",
                                   mode="single",
                                   ui=(("Tst", "print('ex')"),
                                       ("Tst", "print('ex')")))
     example_group_actions.add_single_action(example_action)
     example_defi.add_group_action(example_group_actions)
     return example_defi
Ejemplo n.º 3
0
 def create_single_action(name,
                          description,
                          template,
                          actual_value=None,
                          mode=None,
                          ui=None):
     return SingleAction(name,
                         description,
                         template,
                         actual_value=actual_value,
                         mode=mode,
                         ui=ui)
Ejemplo n.º 4
0
 def load_schemas_from_json(self, json_file=""):
     if len(json_file) == 0:
         json_file = self.sts.store_data_json_directory_abs + self.sts.JSON_SCHEMAS_FILE_NAME
     if self.comfun.file_exists(json_file, info="schemas file"):
         self.batch.logger.inf(("loading schemas: ", json_file))
         json_schemas = self.comfun.load_json_file(json_file)
         if json_schemas is not None and "schemas" in json_schemas.keys():
             if json_schemas['schemas']['meta']['total'] > 0:
                 for li in json_schemas['schemas']['data'].values():
                     if len(li) == len(SCHEMA_ITEM_FIELDS_NAMES):
                         new_schema_actions = []
                         if "actions" in li:
                             for lia in li['actions'].values():
                                 self.batch.logger.deepdb(
                                     ("(lsfj) actions: ", lia))
                                 av = lia["actual"]
                                 new_action = SingleAction(
                                     lia["name"],
                                     lia["desc"],
                                     lia["template"],
                                     actual_value=av,
                                     mode=lia["mode"],
                                     evos_possible=lia["evos"])
                                 new_schema_actions.append(new_action)
                         new_schema_item = SchemaItem(
                             int(li['id']), li['name'], int(li['stateId']),
                             li['state'], int(li['projId']),
                             li['definition'], new_schema_actions,
                             int(li['version']), li['desc'])
                         self.add_schema(new_schema_item)
                     else:
                         self.batch.logger.err(
                             ("schema json data not consistent: ", len(li),
                              len(SCHEMA_ITEM_FIELDS_NAMES)))
             else:
                 self.batch.logger.wrn(("no projects data in: ", json_file))
             return True
         else:
             self.batch.logger.err(("wrong format data: ", json_file))
     else:
         self.batch.logger.err(("no schema file: ", json_file))
     return False
Ejemplo n.º 5
0
    def load_definitions_from_jsons(self, definitions_dir=""):
        if len(definitions_dir) == 0:
            definitions_dir = self.sts.store_definitions_directory_abs
        loading_errors = 0
        if self.comfun.file_exists(definitions_dir):
            for file_nr, json_file in enumerate(
                    self.batch.sio.get_files_from_dir(definitions_dir,
                                                      types="json")):
                self.batch.logger.inf(("loading definition: ", json_file))
                json_definition = self.comfun.load_json_file(definitions_dir +
                                                             json_file)
                if json_definition is not None and "definition" in json_definition.keys(
                ):
                    self.batch.logger.db(("definition loaded: ", json_file))

                    if self.sts.runtime_env == json_definition['definition'][
                            'meta']['name']:
                        self.current_definition_name = self.sts.runtime_env
                        self.current_definition_index = file_nr

                    if json_definition['definition']['meta'][
                            'totalActions'] > 0:
                        if "name" in json_definition['definition']['meta']:
                            definition_name = json_definition['definition'][
                                'meta']["name"]
                            new_definition = SingleDefinition(
                                definition_name, self.batch.logger)
                            if "software" in json_definition['definition'][
                                    'meta']:
                                new_definition.software = json_definition[
                                    'definition']['meta']["software"]
                            if "setupExt" in json_definition['definition'][
                                    'meta']:
                                new_definition.setup_ext = json_definition[
                                    'definition']['meta']['setupExt']
                            if "prevExt" in json_definition['definition'][
                                    'meta']:
                                new_definition.prev_ext = json_definition[
                                    'definition']['meta']['prevExt']
                            if "version" in json_definition['definition'][
                                    'meta']:
                                new_definition.version = json_definition[
                                    'definition']['meta']['version']
                            self.definitions_names.append(
                                json_definition['definition']['meta']["name"])
                            self.add_definition(new_definition)

                            if "interactionScript" in json_definition[
                                    'definition']['meta']:
                                inters_f = definitions_dir + json_definition[
                                    'definition']['meta']["interactionScript"]
                                new_definition.interactions = self.load_interaction_file(
                                    inters_f)
                                if new_definition.interactions is None:
                                    loading_errors += 1
                                    self.batch.logger.err(
                                        ("interaction file not loaded: ",
                                         inters_f),
                                        nl_after=True)

                            if "actions" in json_definition['definition']:
                                for li in json_definition['definition'][
                                        'actions'].values():
                                    new_group_action = MultiAction(
                                        li['id'], li['name'])

                                    if li['type'] == "single":  # id:1  for all single SingleAction in group
                                        li_ui = self.get_ui_values(li)
                                        new_action = SingleAction(
                                            li['name'],
                                            li['desc'],
                                            li['template'],
                                            ui=li_ui)
                                        if "params" in li:
                                            new_action.parameters = li[
                                                "params"]
                                        new_group_action.add_single_action(
                                            new_action)

                                    elif li['type'] == "multi":
                                        for ag in li["subActions"].values():
                                            ag_ui = self.get_ui_values(ag)
                                            new_action = SingleAction(
                                                li['name'],
                                                ag['desc'],
                                                ag['template'],
                                                mode=ag['mode'],
                                                ui=ag_ui)
                                            if "params" in ag:
                                                template = ag["params"][
                                                    "paramsTemplate"]
                                                new_action.parameters = ActionParameters(
                                                    ag['mode'], template)
                                                for key, val in ag["params"][
                                                        "paramsList"].items():
                                                    new_action.parameters.add_param_to_list(
                                                        key, val[0], val[1],
                                                        val[2], val[3])
                                                new_action.set_evos_possible(
                                                    True)
                                            new_group_action.add_single_action(
                                                new_action)
                                    else:
                                        self.batch.logger.err(
                                            ("wrong action type : ",
                                             li['type']))

                                    new_definition.add_group_action(
                                        new_group_action)
                            else:
                                self.batch.logger.wrn(
                                    ("No actions defined in : ", json_file,
                                     " dir:", definitions_dir))
            # self.print_all(print_children=True)
            # self.print_total(print_children=True)
            return loading_errors
        else:
            self.batch.logger.err(
                ("Definitions directory not exist: ", definitions_dir))
            return False