update events via wrapper routers
This commit is contained in:
@@ -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"}
|
||||
}
|
||||
)
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -5,6 +5,7 @@ from decimal import Decimal
|
||||
from uuid import UUID
|
||||
from pydantic import BaseModel
|
||||
|
||||
|
||||
class AccountBooksResponse(BaseModel):
|
||||
"""Response model for account books"""
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user