async def _get_model_by_id_or_alias(model_id, token): try: model_id = UUID(model_id) model_project = ModelProject.from_uuid(str(model_id), kg_client, api="nexus") except ValueError: model_alias = str(model_id) model_project = ModelProject.from_alias(model_alias, kg_client, api="nexus") if not model_project: raise HTTPException( status_code=status.HTTP_404_NOT_FOUND, detail=f"Model with ID or alias '{model_id}' not found.", ) # todo: fairgraph should accept UUID object as well as str await _check_model_access(model_project, token) return model_project
def is_valid(self): # check alias is unique if "alias" in self.data and self.data["alias"]: if self.obj and self.obj.alias == self.data["alias"]: return True logger.debug("Checking for model with same alias") model_with_same_alias = ModelProject.from_alias( self.data["alias"], self.client) if bool(model_with_same_alias): self.errors.append( "Another model with this alias already exists.") return False if "private" in self.data: if not isinstance(self.data["private"], bool): self.errors.append("'private' must be a boolean") return False if "author" not in self.data or not self.data["author"]: self.errors.append("This field may not be blank.") return False return True # todo
def model_alias_exists(alias, client): if alias: model_with_same_alias = ModelProject.from_alias(alias, client, api="nexus") return bool(model_with_same_alias) return False