batch import csv

This commit is contained in:
debu-2 2026-10-05 04:53:45 +05:30
parent a679775f57
commit dd0ceef665
20 changed files with 1614 additions and 190 deletions

View file

@ -104,10 +104,48 @@ class OrgMemberListResponse(BaseModel):
counts: dict[str, int]
class OrgMemberImportRow(BaseModel):
first_name: str = Field(min_length=1, max_length=80)
last_name: str = Field(min_length=1, max_length=80)
work_email: str = Field(min_length=1, max_length=320)
invitation_email: EmailStr | None = None
password: str = Field(min_length=8, max_length=128)
class OrgMemberImportRequest(BaseModel):
org_role: Literal["user", "admin"] = "user"
send_invitation: bool = True
force_password_change: bool = True
rows: list[OrgMemberImportRow] = Field(min_length=1, max_length=300)
class OrgMemberImportRowResult(BaseModel):
row: int
email: str
success: bool
message: str
invitation_sent: bool = False
class OrgMemberImportResponse(BaseModel):
created: list[OrgMemberRead]
errors: list[OrgMemberImportRowResult]
created_count: int
error_count: int
class MailGroupCreate(BaseModel):
name: str = Field(min_length=1, max_length=120)
email: EmailStr
group_type: Literal["distribution", "dynamic"] = "distribution"
owner_id: UUID
send_permission: Literal[
"org_members",
"group_members",
"owners_managers",
"anyone",
] = "org_members"
description: str | None = Field(default=None, max_length=500)
member_ids: list[UUID] = Field(default_factory=list)
@ -116,12 +154,20 @@ class MailGroupRead(BaseModel):
name: str
email: EmailStr
group_type: str
owner_id: UUID | None = None
send_permission: str = "org_members"
member_count: int
created_at: datetime
model_config = ConfigDict(from_attributes=True)
class MailGroupEmailCheck(BaseModel):
email: EmailStr
available: bool
conflict_type: str | None = None
class MailGroupListResponse(BaseModel):
items: list[MailGroupRead]
counts: dict[str, int]