- Aggiunto supporto multi-pattern RFID (US/IT layout) - Implementata invalidazione sessioni al restart del server - Schermata "badge non trovato" con countdown 30s - Notifica quando badge validatore passato senza utente - Database aggiornato con badge reali di test - Layout ottimizzato per tablet orizzontale - Banner NumLock per desktop - Toggle visibilità password - Carosello benvenuto multilingua (10 lingue) - Pagina debug RFID (/debug)
51 lines
1.0 KiB
Python
51 lines
1.0 KiB
Python
"""
|
|
Focolari Voting System - Modelli Pydantic
|
|
"""
|
|
|
|
from typing import Optional, Literal
|
|
|
|
from pydantic import BaseModel
|
|
|
|
|
|
class LoginRequest(BaseModel):
|
|
"""Richiesta login validatore"""
|
|
badge: str
|
|
password: str
|
|
|
|
|
|
class EntryRequest(BaseModel):
|
|
"""Richiesta ingresso partecipante"""
|
|
user_badge: str
|
|
validator_password: str
|
|
|
|
|
|
class UserResponse(BaseModel):
|
|
"""Risposta dati utente"""
|
|
badge_code: str
|
|
nome: str
|
|
cognome: str
|
|
url_foto: str
|
|
ruolo: Literal["Tecnico", "Votante", "Ospite"]
|
|
ammesso: bool
|
|
warning: Optional[str] = None
|
|
|
|
|
|
class RoomInfoResponse(BaseModel):
|
|
"""Risposta info sala"""
|
|
room_name: str
|
|
meeting_id: str
|
|
server_start_time: int # Timestamp avvio server per invalidare sessioni
|
|
|
|
|
|
class LoginResponse(BaseModel):
|
|
"""Risposta login"""
|
|
success: bool
|
|
message: str
|
|
token: Optional[str] = None
|
|
|
|
|
|
class EntryResponse(BaseModel):
|
|
"""Risposta richiesta ingresso (asettica, senza welcome_message)"""
|
|
success: bool
|
|
message: str
|