Files
zenml/venv/lib/python3.9/site-packages/mlflow/server/auth/db/models.py
Christian Mantha 2ca0b9ef7c star
2026-03-02 19:10:52 -05:00

68 lines
2.3 KiB
Python

from sqlalchemy import (
Boolean,
Column,
ForeignKey,
Integer,
String,
UniqueConstraint,
)
from sqlalchemy.orm import declarative_base, relationship
from mlflow.server.auth.entities import ExperimentPermission, RegisteredModelPermission, User
Base = declarative_base()
class SqlUser(Base):
__tablename__ = "users"
id = Column(Integer(), primary_key=True)
username = Column(String(255), unique=True)
password_hash = Column(String(255))
is_admin = Column(Boolean, default=False)
experiment_permissions = relationship("SqlExperimentPermission", backref="users")
registered_model_permissions = relationship("SqlRegisteredModelPermission", backref="users")
def to_mlflow_entity(self):
return User(
id_=self.id,
username=self.username,
password_hash=self.password_hash,
is_admin=self.is_admin,
experiment_permissions=[p.to_mlflow_entity() for p in self.experiment_permissions],
registered_model_permissions=[
p.to_mlflow_entity() for p in self.registered_model_permissions
],
)
class SqlExperimentPermission(Base):
__tablename__ = "experiment_permissions"
id = Column(Integer(), primary_key=True)
experiment_id = Column(String(255), nullable=False)
user_id = Column(Integer, ForeignKey("users.id"), nullable=False)
permission = Column(String(255))
__table_args__ = (UniqueConstraint("experiment_id", "user_id", name="unique_experiment_user"),)
def to_mlflow_entity(self):
return ExperimentPermission(
experiment_id=self.experiment_id,
user_id=self.user_id,
permission=self.permission,
)
class SqlRegisteredModelPermission(Base):
__tablename__ = "registered_model_permissions"
id = Column(Integer(), primary_key=True)
name = Column(String(255), nullable=False)
user_id = Column(Integer, ForeignKey("users.id"), nullable=False)
permission = Column(String(255))
__table_args__ = (UniqueConstraint("name", "user_id", name="unique_name_user"),)
def to_mlflow_entity(self):
return RegisteredModelPermission(
name=self.name,
user_id=self.user_id,
permission=self.permission,
)