def _import_models_with_new_meta_rules(self, json_models): if not isinstance(json_models, list): raise InvalidJson("models shall be a list!") for json_model in json_models: logger.debug("json_model {}".format(json_model)) models = ModelManager.get_models(self._user_id) model_in_db = None model_id = None for model_key in models: if ("id" in json_model and model_key == json_model["id"]) or ( "name" in json_model and models[model_key]["name"] == json_model["name"]): model_in_db = models[model_key] model_id = model_key # this should not occur as the model has been put in db previously in _import_models_without_new_meta_rules if model_in_db is None: raise UnknownModel("Unknown model ") json_key = dict() JsonUtils.convert_names_to_ids(json_model, json_key, "meta_rules", "meta_rule_id", "meta_rule", ModelManager, self._user_id) for meta_rule_id in json_key["meta_rule_id"]: if meta_rule_id not in model_in_db["meta_rules"]: model_in_db["meta_rules"].append(meta_rule_id) ModelManager.update_model(self._user_id, model_id, model_in_db)
def _import_models_without_new_meta_rules(self, json_models): if not isinstance(json_models, list): raise InvalidJson("models shall be a list!") for json_model in json_models: json_without_new_metarules = dict() JsonUtils.copy_field_if_exists(json_model, json_without_new_metarules, "name", str) # TODO put this in moondb # model_in_db = ModelManager.get_models_by_name(json_without_new_metarules["name"]) models = ModelManager.get_models(self._user_id) model_in_db = None for model_key in models: if models[model_key]["name"] == json_without_new_metarules[ "name"]: model_in_db = models[model_key] model_id = model_key # end TODO JsonUtils.copy_field_if_exists(json_model, json_without_new_metarules, "description", str) if model_in_db is None: model_does_exist = False else: json_without_new_metarules["meta_rules"] = model_in_db[ "meta_rules"] model_does_exist = True model_override = JsonUtils.get_override(json_model) if not model_does_exist: logger.debug( "Creating model {} ".format(json_without_new_metarules)) ModelManager.add_model(self._user_id, None, json_without_new_metarules) elif model_override is True: logger.debug("Updating model with id {} : {} ".format( model_id, json_without_new_metarules)) ModelManager.update_model(self._user_id, model_id, json_without_new_metarules)
def patch(self, uuid=None, user_id=None): """Update a model :param uuid: uuid of the model to update :param user_id: user ID who do the request :return: { "model_id1": { "name": "name of the model", "description": "... (optional)", "meta_rules": ["meta_rule_id1", ] } } :internal_api: update_model """ data = ModelManager.update_model(user_id=user_id, model_id=uuid, value=request.json) return {"models": data}
def patch(self, uuid=None, user_id=None): """Update a model :param uuid: uuid of the model to update :param user_id: user ID who do the request :return: { "model_id1": { "name": "...", "description": "...", "meta_rules": ["meta_rule_id1", ] } } :internal_api: update_model """ try: data = ModelManager.update_model(user_id=user_id, model_id=uuid, value=request.json) except Exception as e: logger.error(e, exc_info=True) return {"result": False, "error": str(e)}, 500 return {"models": data}
def update_model(model_id=None, value=None): from python_moondb.core import ModelManager return ModelManager.update_model(user_id=None, model_id=model_id, value=value)