Spaces:
Sleeping
Sleeping
| from datetime import datetime | |
| from typing import List, Optional | |
| from bson import ObjectId | |
| from pydantic import BaseModel, Field | |
| from app.models.user import PyObjectId | |
| class UserProfile(BaseModel): | |
| class Config: | |
| allow_population_by_field_name = True | |
| arbitrary_types_allowed = True | |
| json_encoders = {ObjectId: str} | |
| id: PyObjectId = Field(default_factory=PyObjectId, alias="_id") | |
| user_id: PyObjectId | |
| knowledge_level: Optional[str] = None | |
| timezone: Optional[str] = None | |
| cyber_role: Optional[str] = None | |
| organization_type: Optional[str] = None | |
| primary_domains: List[str] = [] | |
| certifications: List[str] = [] | |
| tools_stack: List[str] = [] | |
| compliance_focus: Optional[str] = None | |
| current_goals: Optional[str] = None | |
| learning_preferences: Optional[str] = None | |
| advisor_notes: Optional[str] = None | |
| updated_at: datetime = Field(default_factory=datetime.utcnow) | |
| class UserProfileUpdate(BaseModel): | |
| knowledge_level: Optional[str] = None | |
| timezone: Optional[str] = None | |
| cyber_role: Optional[str] = None | |
| organization_type: Optional[str] = None | |
| primary_domains: Optional[List[str]] = None | |
| certifications: Optional[List[str]] = None | |
| tools_stack: Optional[List[str]] = None | |
| compliance_focus: Optional[str] = None | |
| current_goals: Optional[str] = None | |
| learning_preferences: Optional[str] = None | |
| advisor_notes: Optional[str] = None | |
| class UserProfileResponse(BaseModel): | |
| user_id: str | |
| knowledge_level: Optional[str] = None | |
| timezone: Optional[str] = None | |
| cyber_role: Optional[str] = None | |
| organization_type: Optional[str] = None | |
| primary_domains: List[str] = [] | |
| certifications: List[str] = [] | |
| tools_stack: List[str] = [] | |
| compliance_focus: Optional[str] = None | |
| current_goals: Optional[str] = None | |
| learning_preferences: Optional[str] = None | |
| advisor_notes: Optional[str] = None | |
| updated_at: Optional[datetime] = None | |
| completion_pct: int = 0 | |