bulk-questionnaire-upload/backend/models/form.py

62 lines
1.6 KiB
Python

from pydantic import BaseModel
from typing import List, Dict, Any, Optional
class ValidationError(BaseModel):
type: str
message: str
location: str
row: Optional[int] = None
column: Optional[str] = None
class ValidationWarning(BaseModel):
type: str
message: str
location: str
row: Optional[int] = None
column: Optional[str] = None
class SheetValidation(BaseModel):
name: str
exists: bool
columns: List[str]
required_columns: List[str]
missing_columns: List[str]
row_count: int
class FormValidation(BaseModel):
valid: bool
message: str
sheets: Optional[List[SheetValidation]] = None
form_metadata: Optional[Dict[str, Any]] = None
questions_count: Optional[int] = None
options_count: Optional[int] = None
errors: Optional[List[ValidationError]] = None
warnings: Optional[List[ValidationWarning]] = None
class Question(BaseModel):
type: str
name: str
label: Dict[str, str]
required: bool = False
constraints: Optional[Dict[str, Any]] = None
choices: Optional[List[Dict[str, Any]]] = None
appearance: Optional[str] = None
relevant: Optional[str] = None
calculation: Optional[str] = None
default: Optional[Any] = None
hint: Optional[Dict[str, str]] = None
class FormGroup(BaseModel):
name: str
label: Dict[str, str]
questions: List[Question]
appearance: Optional[str] = None
relevant: Optional[str] = None
class ParsedForm(BaseModel):
id: str
title: Dict[str, str]
version: str
groups: List[FormGroup]
settings: Optional[Dict[str, Any]] = None
metadata: Optional[Dict[str, Any]] = None