brewman/brewman/brewman/models/permission.py

28 lines
772 B
Python

from __future__ import annotations
import uuid
from typing import List, Optional
from sqlalchemy import Column, Unicode
from sqlalchemy.dialects.postgresql import UUID
from sqlalchemy.orm import relationship
from .meta import Base
from .role import Role
from .role_permission import role_permission
class Permission(Base):
__tablename__ = "permissions"
id: uuid.UUID = Column("id", UUID(as_uuid=True), primary_key=True, default=uuid.uuid4)
name: str = Column("name", Unicode(255), unique=True)
roles: List[Role] = relationship("Role", secondary=role_permission, back_populates="permissions")
def __init__(self, name: str, id_: Optional[uuid.UUID] = None) -> None:
self.name = name
if id_ is not None:
self.id = id_