Files
leocrm/app/plugins/builtins/dms/schemas.py
T

71 lines
1.6 KiB
Python
Raw Normal View History

"""Pydantic schemas for the DMS plugin."""
from __future__ import annotations
from datetime import datetime
from pydantic import BaseModel, Field
class FolderCreate(BaseModel):
name: str = Field(..., min_length=1, max_length=255)
parent_id: str | None = None
class FolderUpdate(BaseModel):
name: str | None = Field(None, min_length=1, max_length=255)
parent_id: str | None = None
class FolderResponse(BaseModel):
id: str
name: str
parent_id: str | None = None
created_by: str
deleted_at: datetime | None = None
path: str = ""
children: list[dict] = []
class FileMetadataResponse(BaseModel):
id: str
name: str
folder_id: str | None = None
uploaded_by: str
mime_type: str
size_bytes: int
storage_path: str
deleted_at: datetime | None = None
created_at: datetime | None = None
updated_at: datetime | None = None
class FileUpdate(BaseModel):
name: str | None = Field(None, min_length=1, max_length=255)
folder_id: str | None = None
class ShareRequest(BaseModel):
user_ids: list[str] = Field(default_factory=list)
group_ids: list[str] = Field(default_factory=list)
access_level: str = Field("read", pattern="^(read|write)$")
class ShareRemoveRequest(BaseModel):
user_id: str | None = None
group_id: str | None = None
class BulkMoveRequest(BaseModel):
file_ids: list[str] = Field(..., min_length=1)
target_folder_id: str | None = None
class BulkDeleteRequest(BaseModel):
file_ids: list[str] = Field(..., min_length=1)
class OnlyOfficeConfig(BaseModel):
document: dict
editorConfig: dict # noqa: N815