203 lines
3.3 KiB
Python
203 lines
3.3 KiB
Python
from pydantic import BaseModel
|
|
from datetime import datetime
|
|
import typing as t
|
|
|
|
from app.core.security import chacha20Decrypt, chacha20Encrypt
|
|
|
|
class Base(BaseModel):
|
|
create_time: datetime
|
|
update_time: datetime
|
|
|
|
|
|
class Permission(BaseModel):
|
|
id: int
|
|
menu:str
|
|
function:str
|
|
privilege:str
|
|
|
|
class Role(BaseModel):
|
|
id: int
|
|
name:str
|
|
description:str
|
|
permissions:t.List[Permission] = []
|
|
|
|
class UserBase(BaseModel):
|
|
email: str
|
|
is_active: bool = True
|
|
is_superuser: bool = False
|
|
first_name: str = None
|
|
last_name: str = None
|
|
roles:t.List[Role] = []
|
|
|
|
class UserOut(UserBase):
|
|
pass
|
|
|
|
|
|
class UserCreate(UserBase):
|
|
email:str
|
|
password: str
|
|
first_name: str
|
|
last_name: str
|
|
is_active:bool
|
|
is_superuser:bool
|
|
|
|
class ConfigDict:
|
|
orm_mode = True
|
|
|
|
|
|
class UserEdit(UserBase):
|
|
password: t.Optional[str] = None
|
|
|
|
class ConfigDict:
|
|
orm_mode = True
|
|
|
|
|
|
class User(UserBase):
|
|
id: int
|
|
|
|
class ConfigDict:
|
|
orm_mode = True
|
|
|
|
|
|
class Token(BaseModel):
|
|
access_token: str
|
|
token_type: str
|
|
|
|
class AppList(Base):
|
|
domainurl: str
|
|
appname: str
|
|
appid:str
|
|
updateuser: UserOut
|
|
version:int
|
|
|
|
class AppVersion(BaseModel):
|
|
domainurl: str
|
|
appname: str
|
|
versionname: str
|
|
comment:str
|
|
appid:str
|
|
|
|
|
|
class TokenData(BaseModel):
|
|
id:int = 0
|
|
email: str = None
|
|
permissions: str = "user"
|
|
|
|
|
|
class AppEdit(BaseModel):
|
|
setting: str = None
|
|
|
|
class AppBase(BaseModel):
|
|
appid: str
|
|
setting: str = None
|
|
|
|
|
|
class App(AppBase):
|
|
id: int
|
|
|
|
class ConfigDict:
|
|
orm_mode = True
|
|
|
|
|
|
class Kintone(BaseModel):
|
|
id: int
|
|
type: int
|
|
name: str = None
|
|
desc: str = None
|
|
content: str = None
|
|
|
|
class ConfigDict:
|
|
orm_mode = True
|
|
|
|
class Action(BaseModel):
|
|
id: int
|
|
name: str = None
|
|
title: str = None
|
|
subtitle: str = None
|
|
outputpoints: str = None
|
|
property: str = None
|
|
categoryid: int = None
|
|
nosort: int
|
|
categoryname : str =None
|
|
class ConfigDict:
|
|
orm_mode = True
|
|
|
|
class FlowIn(BaseModel):
|
|
flowid: str
|
|
# domainurl:str
|
|
appid: str
|
|
appname:str
|
|
eventid: str
|
|
name: str = None
|
|
content: str = None
|
|
|
|
class Flow(Base):
|
|
id: int
|
|
flowid: str
|
|
appid: str
|
|
eventid: str
|
|
domainurl: str
|
|
name: str = None
|
|
content: str = None
|
|
|
|
class ConfigDict:
|
|
orm_mode = True
|
|
|
|
class DomainIn(BaseModel):
|
|
id: int
|
|
tenantid: str
|
|
name: str
|
|
url: str
|
|
kintoneuser: str
|
|
kintonepwd: str
|
|
is_active: bool
|
|
ownerid:int
|
|
|
|
def encrypt_kintonepwd(self):
|
|
encrypted_pwd = chacha20Encrypt(self.kintonepwd)
|
|
self.kintonepwd = encrypted_pwd
|
|
|
|
class DomainOut(BaseModel):
|
|
id: int
|
|
tenantid: str
|
|
name: str
|
|
url: str
|
|
is_active: bool
|
|
ownerid:int
|
|
|
|
|
|
class ActiveDomain(BaseModel):
|
|
id: int
|
|
tenantid: str
|
|
name: str
|
|
url: str
|
|
is_active: bool
|
|
|
|
class Domain(Base):
|
|
id: int
|
|
tenantid: str
|
|
name: str
|
|
url: str
|
|
kintoneuser: str
|
|
kintonepwd: str
|
|
is_active: bool
|
|
owner:UserOut
|
|
class ConfigDict:
|
|
orm_mode = True
|
|
|
|
class Event(Base):
|
|
id: int
|
|
category: str
|
|
type: str
|
|
eventid: str
|
|
function: str
|
|
mobile: bool
|
|
eventgroup: bool
|
|
|
|
class ConfigDict:
|
|
orm_mode = True
|
|
|
|
class ErrorCreate(BaseModel):
|
|
title:str
|
|
location:str
|
|
content:str |