update events via wrapper routers

This commit is contained in:
2025-01-16 19:32:59 +03:00
parent 049a7c1e11
commit 426b69b33c
42 changed files with 2344 additions and 460 deletions

View File

@@ -1,7 +1,7 @@
from ApiValidations.Request import BaseModelRegular
from typing import Optional
from pydantic import BaseModel
from pydantic import BaseModel, ConfigDict, Field
class ChangePasswordValidation:
@@ -10,8 +10,14 @@ class ChangePasswordValidation:
class ChangePassword(BaseModelRegular, ChangePasswordValidation):
old_password: str
new_password: str
old_password: str = Field(..., example="current123")
new_password: str = Field(..., example="newpass456")
model_config = ConfigDict(
json_schema_extra={
"example": {"old_password": "current123", "new_password": "newpass456"}
}
)
class CreatePasswordValidation:
@@ -28,30 +34,53 @@ class CreatePasswordValidation:
class CreatePassword(BaseModelRegular, CreatePasswordValidation):
password_token: str
password: str
re_password: str
password_token: str = Field(..., example="abc123token")
password: str = Field(..., example="newpass123")
re_password: str = Field(..., example="newpass123")
model_config = ConfigDict(
json_schema_extra={
"example": {
"password_token": "abc123token",
"password": "newpass123",
"re_password": "newpass123",
}
}
)
class OccupantSelectionValidation:
tr = {"occupant_uu_id": "Kiracı UU ID", "build_part_uu_id": "Bölüm UU ID"}
en = {"occupant_uu_id": "Occupant UU ID", "build_part_uu_id": "Build Part UU ID"}
class OccupantSelection(BaseModel, OccupantSelectionValidation):
occupant_uu_id: str
build_part_uu_id: str
occupant_uu_id: str = Field(..., example="123e4567-e89b-12d3-a456-426614174000")
build_part_uu_id: str = Field(..., example="987fcdeb-51a2-43e7-9876-543210987654")
model_config = ConfigDict(
json_schema_extra={
"example": {
"occupant_uu_id": "123e4567-e89b-12d3-a456-426614174000",
"build_part_uu_id": "987fcdeb-51a2-43e7-9876-543210987654",
}
}
)
class EmployeeSelectionValidation:
tr = {"company_uu_id": "Şirket UU ID"}
en = {"company_uu_id": "Company UU ID"}
class EmployeeSelection(BaseModel, EmployeeSelectionValidation):
company_uu_id: str
company_uu_id: str = Field(..., example="abcdef12-3456-7890-abcd-ef1234567890")
model_config = ConfigDict(
json_schema_extra={
"example": {"company_uu_id": "abcdef12-3456-7890-abcd-ef1234567890"}
}
)
class LoginValidation:
@@ -70,10 +99,21 @@ class LoginValidation:
class Login(BaseModelRegular, LoginValidation):
domain: str
access_key: str
password: str
remember_me: Optional[bool] = False
domain: str = Field(..., example="example.com")
access_key: str = Field(..., example="user@example.com")
password: str = Field(..., example="password123")
remember_me: Optional[bool] = Field(False, example=True)
model_config = ConfigDict(
json_schema_extra={
"example": {
"domain": "example.com",
"access_key": "user@example.com",
"password": "password123",
"remember_me": True,
}
}
)
class LogoutValidation:
@@ -82,7 +122,9 @@ class LogoutValidation:
class Logout(BaseModelRegular, LogoutValidation):
domain: str
domain: str = Field(..., example="example.com")
model_config = ConfigDict(json_schema_extra={"example": {"domain": "example.com"}})
class RememberValidation:
@@ -91,8 +133,17 @@ class RememberValidation:
class Remember(BaseModelRegular, RememberValidation):
domain: str
refresh_token: str
domain: str = Field(..., example="example.com")
refresh_token: str = Field(..., example="eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...")
model_config = ConfigDict(
json_schema_extra={
"example": {
"domain": "example.com",
"refresh_token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
}
}
)
class ForgotValidation:
@@ -101,5 +152,11 @@ class ForgotValidation:
class Forgot(BaseModelRegular, ForgotValidation):
domain: str
access_key: str
domain: str = Field(..., example="example.com")
access_key: str = Field(..., example="user@example.com")
model_config = ConfigDict(
json_schema_extra={
"example": {"domain": "example.com", "access_key": "user@example.com"}
}
)

View File

@@ -62,7 +62,6 @@ class UpdateCompanyEmployeesSalaries(PydanticBaseModel):
people_id: Optional[int] = None
class InsertCompanyEmployees(BaseModelRegular):
employee_description: Optional[str] = None
@@ -73,7 +72,6 @@ class InsertCompanyEmployees(BaseModelRegular):
stop_date: Optional[str] = None
class UpdateCompanyEmployees(PydanticBaseModel):
stop_date: Optional[str] = None
employee_description: Optional[str] = None

View File

@@ -38,9 +38,7 @@ class UpdateBuildDecisionBookProjectPerson(PydanticBaseModel):
project_team_type_uu_id: Optional[str] = None
class InsertBuildDecisionBookProjects(
BaseModelRegular
):
class InsertBuildDecisionBookProjects(BaseModelRegular):
build_decision_book_item_uu_id: str
project_responsible_person_uu_id: str
project_name: str
@@ -60,9 +58,7 @@ class InsertBuildDecisionBookProjects(
resp_company_uu_id: Optional[str] = None
class UpdateBuildDecisionBookProjects(
PydanticBaseModel
):
class UpdateBuildDecisionBookProjects(PydanticBaseModel):
build_decision_book_project_uu_id: str
is_out_sourced: Optional[bool] = False
project_note: Optional[str] = None
@@ -76,10 +72,7 @@ class UpdateBuildDecisionBookProjects(
approved_price: Optional[float] = None
class ApprovalsBuildDecisionBookProjects(
PydanticBaseModel
):
class ApprovalsBuildDecisionBookProjects(PydanticBaseModel):
build_decision_book_project_uu_id: str
project_stop_date: str
status_code: Optional[int] = None
@@ -88,9 +81,7 @@ class ApprovalsBuildDecisionBookProjects(
)
class InsertBuildDecisionBookProjectItemDebits(
PydanticBaseModel
):
class InsertBuildDecisionBookProjectItemDebits(PydanticBaseModel):
build_decision_book_project_item_uu_id: str
payment_date: str
dues_values: dict
@@ -100,9 +91,7 @@ class InsertBuildDecisionBookProjectItemDebits(
decision_taken: Optional[bool] = None
class UpdateBuildDecisionBookProjectItemDebits(
PydanticBaseModel
):
class UpdateBuildDecisionBookProjectItemDebits(PydanticBaseModel):
dues_values: Optional[str] = None
discount_value: Optional[float] = None
discount_fix: Optional[float] = None

View File

@@ -5,6 +5,7 @@ from decimal import Decimal
from uuid import UUID
from pydantic import BaseModel
class AccountBooksResponse(BaseModel):
"""Response model for account books"""

View File

@@ -1,8 +1,12 @@
from pydantic import BaseModel
"""
Base validation models and utilities.
"""
from pydantic import BaseModel, ConfigDict
def rewrite_input_data(data):
"""Remove empty and None values from input data."""
return {
item[0]: item[1]
for item in data.items()
@@ -11,6 +15,11 @@ def rewrite_input_data(data):
class BaseModelRegular(BaseModel):
"""Base model for all validation models with proper schema handling."""
model_config = ConfigDict(
json_schema_extra={"example": {}} # Will be populated by subclasses
)
def __init__(self, **kwargs):
super().__init__(**rewrite_input_data(kwargs))
@@ -20,3 +29,30 @@ class BaseModelRegular(BaseModel):
def dump(self):
return self.model_dump()
@classmethod
def model_json_schema(cls, *args, **kwargs):
"""Generate JSON schema with proper examples."""
schema = super().model_json_schema(*args, **kwargs)
# Add examples based on field types
if "properties" in schema:
example = {}
for field_name, field_schema in schema["properties"].items():
field_type = field_schema.get("type")
if field_type == "string":
example[field_name] = f"example_{field_name}"
elif field_type == "integer":
example[field_name] = 0
elif field_type == "number":
example[field_name] = 0.0
elif field_type == "boolean":
example[field_name] = False
elif field_type == "array":
example[field_name] = []
elif field_type == "object":
example[field_name] = {}
schema["example"] = example
return schema