mirror of
https://github.com/vee1e/bulk-questionnaire-upload.git
synced 2026-09-01 09:50:06 +00:00
62 lines
1.6 KiB
Python
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
|