""" Pydantic representation of database contents. """ from __future__ import annotations from enum import Enum from .. import models class UserCapability(Enum): admin = "admin" login = "login" issue = "issue" renew = "renew" def __repr__(self) -> str: return self.value @classmethod def from_value(cls, value) -> UserCapability: """ Create UserCapability from various formats """ if isinstance(value, cls): # value is already a UserCapability, use that return value elif isinstance(value, models.UserCapability): # create from db format return cls(value.capability) else: # create from string representation return cls(str(value)) @property def model(self) -> models.UserCapability: return models.UserCapability( capability=self.value, )