43 lines
941 B
Python
43 lines
941 B
Python
"""
|
|
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,
|
|
)
|