first commit
This commit is contained in:
0
api_validations/__init__.py
Normal file
0
api_validations/__init__.py
Normal file
58
api_validations/core_response.py
Normal file
58
api_validations/core_response.py
Normal file
@@ -0,0 +1,58 @@
|
||||
from fastapi import status
|
||||
from fastapi.responses import JSONResponse
|
||||
|
||||
|
||||
def return_json_response_from_alchemy(
|
||||
response, cls_obj=None, pagination=None, response_model=None
|
||||
):
|
||||
enums = cls_obj.__enums__ if cls_obj else []
|
||||
if response.count:
|
||||
total_count = response.query.limit(None).offset(None).count()
|
||||
total_page_number = round(total_count / int(pagination.size), 0) + 1
|
||||
pagination_dict = {
|
||||
"size/total_count": [response.count, total_count],
|
||||
"page/total_page": [pagination.page, total_page_number],
|
||||
"order_field": pagination.order_field,
|
||||
"order_type": pagination.order_type,
|
||||
}
|
||||
include_joins = dict(
|
||||
include_joins=pagination.include_joins if pagination.include_joins else None
|
||||
)
|
||||
|
||||
if not isinstance(response.data[0], dict):
|
||||
data = []
|
||||
for obj in response.data:
|
||||
data_object = obj.get_dict(**include_joins)
|
||||
if response_model:
|
||||
data_object = response_model(
|
||||
**obj.get_dict(**include_joins)
|
||||
).model_dump()
|
||||
data.append(data_object)
|
||||
else:
|
||||
data = []
|
||||
for obj in response.data:
|
||||
data_object = obj
|
||||
if response_model:
|
||||
data_object = response_model(**obj).model_dump()
|
||||
data.append(data_object)
|
||||
|
||||
return JSONResponse(
|
||||
status_code=status.HTTP_200_OK,
|
||||
content=dict(
|
||||
pagination=pagination_dict,
|
||||
message="Found records are listed",
|
||||
completed=True,
|
||||
data=data,
|
||||
),
|
||||
)
|
||||
|
||||
return JSONResponse(
|
||||
status_code=status.HTTP_404_NOT_FOUND,
|
||||
content=dict(
|
||||
total_count=0,
|
||||
count=0,
|
||||
message="No record has found",
|
||||
completed=False,
|
||||
data=[],
|
||||
),
|
||||
)
|
||||
23
api_validations/core_validations.py
Normal file
23
api_validations/core_validations.py
Normal file
@@ -0,0 +1,23 @@
|
||||
from pydantic import BaseModel
|
||||
|
||||
|
||||
def rewrite_input_data(data):
|
||||
|
||||
return {
|
||||
item[0]: item[1]
|
||||
for item in data.items()
|
||||
if not item[1] == "" and item[1] is not None
|
||||
}
|
||||
|
||||
|
||||
class BaseModelRegular(BaseModel):
|
||||
|
||||
def __init__(self, **kwargs):
|
||||
super().__init__(**rewrite_input_data(kwargs))
|
||||
|
||||
def excluded_dump(self):
|
||||
return self.model_dump(exclude_unset=True, exclude_none=True)
|
||||
|
||||
def dump(self):
|
||||
return self.model_dump()
|
||||
|
||||
0
api_validations/validations_by_user/__init__.py
Normal file
0
api_validations/validations_by_user/__init__.py
Normal file
219
api_validations/validations_request/__init__.py
Normal file
219
api_validations/validations_request/__init__.py
Normal file
@@ -0,0 +1,219 @@
|
||||
|
||||
from .core_request_validations import (
|
||||
ListOptions,
|
||||
PydanticBaseModel,
|
||||
PatchRecord,
|
||||
EndpointPydantic,
|
||||
BaseModelRegular,
|
||||
)
|
||||
from .address import (
|
||||
InsertAddress,
|
||||
InsertPostCode,
|
||||
SearchAddress
|
||||
)
|
||||
from .application import (
|
||||
SingleEnumUUID,
|
||||
SingleEnumClassKey,
|
||||
SingleEnumOnlyClass,
|
||||
SingleOccupantTypeUUID,
|
||||
SingleOccupantTypeClassKey,
|
||||
)
|
||||
from .area import (
|
||||
InsertBuildArea,
|
||||
InsertBuildSites,
|
||||
UpdateBuildArea,
|
||||
UpdateBuildSites,
|
||||
)
|
||||
from .authentication import (
|
||||
Login,
|
||||
Logout,
|
||||
ChangePassword,
|
||||
Remember,
|
||||
Forgot,
|
||||
CreatePassword,
|
||||
OccupantSelection,
|
||||
EmployeeSelection,
|
||||
)
|
||||
from .build_living_space import (
|
||||
InsertBuildLivingSpace,
|
||||
UpdateBuildLivingSpace,
|
||||
)
|
||||
from .build_part import (
|
||||
InsertBuildParts,
|
||||
InsertBuildTypes,
|
||||
UpdateBuildParts,
|
||||
UpdateBuildTypes,
|
||||
)
|
||||
from .building import (
|
||||
InsertBuild,
|
||||
UpdateBuild,
|
||||
)
|
||||
from .company import (
|
||||
MatchCompany2Company,
|
||||
InsertCompany,
|
||||
UpdateCompany,
|
||||
)
|
||||
from .decision_book import (
|
||||
DecisionBookDecisionBookInvitations,
|
||||
DecisionBookDecisionBookInvitationsUpdate,
|
||||
DecisionBookDecisionBookInvitationsAttend,
|
||||
DecisionBookDecisionBookInvitationsAssign,
|
||||
UpdateDecisionBook,
|
||||
UpdateBuildDecisionBookItems,
|
||||
UpdateBuildDecisionBookItemDebits,
|
||||
InsertBuildDecisionBookItems,
|
||||
InsertBuildDecisionBookItemDebits,
|
||||
InsertDecisionBookCompleted,
|
||||
InsertDecisionBook,
|
||||
InsertDecisionBookPerson,
|
||||
ListDecisionBook,
|
||||
RemoveDecisionBookPerson,
|
||||
)
|
||||
from .departments import (
|
||||
DepartmentsPydantic,
|
||||
)
|
||||
from .employee import (
|
||||
InsertDuties,
|
||||
UpdateDuties,
|
||||
InsertEmployees,
|
||||
SelectDuties,
|
||||
UnBindEmployees2People,
|
||||
BindEmployees2People,
|
||||
UpdateCompanyEmployees,
|
||||
InsertCompanyEmployees,
|
||||
InsertCompanyEmployeesSalaries,
|
||||
InsertCompanyDuty,
|
||||
UpdateCompanyEmployeesSalaries,
|
||||
UpdateCompanyDuty,
|
||||
)
|
||||
from .events import (
|
||||
CreateEvents,
|
||||
RegisterEvents2Employee,
|
||||
RegisterEvents2Occupant,
|
||||
)
|
||||
from .people import (
|
||||
UpdatePerson,
|
||||
InsertPerson,
|
||||
ResponsePersonSalesMange,
|
||||
)
|
||||
from .project_decision_book import (
|
||||
InsertBuildDecisionBookProjectItems,
|
||||
UpdateBuildDecisionBookProjectItems,
|
||||
InsertBuildDecisionBookProjectItemDebits,
|
||||
UpdateBuildDecisionBookProjectItemDebits,
|
||||
InsertBuildDecisionBookProjects,
|
||||
UpdateBuildDecisionBookProjects,
|
||||
)
|
||||
from .rules import (
|
||||
UpdateEndpointAccess,
|
||||
UpdateEndpointAccessList,
|
||||
InsertEndpointAccess,
|
||||
)
|
||||
from .services import (
|
||||
RegisterServices2Employee,
|
||||
RegisterServices2Occupant,
|
||||
)
|
||||
from .staff import (
|
||||
InsertStaff,
|
||||
SelectStaff,
|
||||
)
|
||||
from .user import (
|
||||
InsertUsers,
|
||||
UpdateUsers,
|
||||
QueryUsers,
|
||||
ActiveUsers,
|
||||
ListUsers,
|
||||
DeleteUsers,
|
||||
)
|
||||
|
||||
|
||||
__all__ = [
|
||||
"ListOptions",
|
||||
"PydanticBaseModel",
|
||||
"PatchRecord",
|
||||
"EndpointPydantic",
|
||||
"BaseModelRegular",
|
||||
"InsertAddress",
|
||||
"InsertPostCode",
|
||||
"SearchAddress",
|
||||
"SingleEnumUUID",
|
||||
"SingleEnumClassKey",
|
||||
"SingleEnumOnlyClass",
|
||||
"SingleOccupantTypeUUID",
|
||||
"SingleOccupantTypeClassKey",
|
||||
"InsertBuildArea",
|
||||
"InsertBuildSites",
|
||||
"UpdateBuildArea",
|
||||
"UpdateBuildSites",
|
||||
"Login",
|
||||
"Logout",
|
||||
"ChangePassword",
|
||||
"Remember",
|
||||
"Forgot",
|
||||
"CreatePassword",
|
||||
"OccupantSelection",
|
||||
"EmployeeSelection",
|
||||
"InsertBuildLivingSpace",
|
||||
"UpdateBuildLivingSpace",
|
||||
"InsertBuildParts",
|
||||
"InsertBuildTypes",
|
||||
"UpdateBuildParts",
|
||||
"UpdateBuildTypes",
|
||||
"InsertBuild",
|
||||
"UpdateBuild",
|
||||
"MatchCompany2Company",
|
||||
"InsertCompany",
|
||||
"UpdateCompany",
|
||||
"DecisionBookDecisionBookInvitations",
|
||||
"DecisionBookDecisionBookInvitationsUpdate",
|
||||
"DecisionBookDecisionBookInvitationsAttend",
|
||||
"DecisionBookDecisionBookInvitationsAssign",
|
||||
"UpdateDecisionBook",
|
||||
"UpdateBuildDecisionBookItems",
|
||||
"UpdateBuildDecisionBookItemDebits",
|
||||
"InsertBuildDecisionBookItems",
|
||||
"InsertBuildDecisionBookItemDebits",
|
||||
"InsertDecisionBookCompleted",
|
||||
"InsertDecisionBook",
|
||||
"InsertDecisionBookPerson",
|
||||
"ListDecisionBook",
|
||||
"RemoveDecisionBookPerson",
|
||||
"DepartmentsPydantic",
|
||||
"InsertDuties",
|
||||
"UpdateDuties",
|
||||
"InsertEmployees",
|
||||
"SelectDuties",
|
||||
"UnBindEmployees2People",
|
||||
"BindEmployees2People",
|
||||
"UpdateCompanyEmployees",
|
||||
"InsertCompanyEmployees",
|
||||
"InsertCompanyEmployeesSalaries",
|
||||
"InsertCompanyDuty",
|
||||
"UpdateCompanyEmployeesSalaries",
|
||||
"UpdateCompanyDuty",
|
||||
"CreateEvents",
|
||||
"RegisterEvents2Employee",
|
||||
"RegisterEvents2Occupant",
|
||||
"UpdatePerson",
|
||||
"InsertPerson",
|
||||
"ResponsePersonSalesMange",
|
||||
"InsertBuildDecisionBookProjectItems",
|
||||
"UpdateBuildDecisionBookProjectItems",
|
||||
"InsertBuildDecisionBookProjectItemDebits",
|
||||
"UpdateBuildDecisionBookProjectItemDebits",
|
||||
"InsertBuildDecisionBookProjects",
|
||||
"UpdateBuildDecisionBookProjects",
|
||||
"UpdateEndpointAccess",
|
||||
"UpdateEndpointAccessList",
|
||||
"InsertEndpointAccess",
|
||||
"RegisterServices2Employee",
|
||||
"RegisterServices2Occupant",
|
||||
"InsertStaff",
|
||||
"SelectStaff",
|
||||
"InsertUsers",
|
||||
"UpdateUsers",
|
||||
"QueryUsers",
|
||||
"ActiveUsers",
|
||||
"ListUsers",
|
||||
"DeleteUsers",
|
||||
]
|
||||
55
api_validations/validations_request/address.py
Normal file
55
api_validations/validations_request/address.py
Normal file
@@ -0,0 +1,55 @@
|
||||
from api_validations.core_validations import BaseModelRegular
|
||||
from api_validations.validations_request import (
|
||||
PydanticBaseModel,
|
||||
ListOptions,
|
||||
)
|
||||
from typing import Optional
|
||||
|
||||
|
||||
class InsertPostCode(PydanticBaseModel):
|
||||
street_uu_id: str
|
||||
post_code: str
|
||||
|
||||
|
||||
class SearchAddress(PydanticBaseModel):
|
||||
search: str
|
||||
list_options: ListOptions
|
||||
|
||||
|
||||
class InsertStreet(PydanticBaseModel):
|
||||
street_code: str
|
||||
street_name: str
|
||||
postcode: str
|
||||
|
||||
type_code: Optional[str] = None
|
||||
type_description: Optional[str] = None
|
||||
gov_code: Optional[str] = None
|
||||
address_geographic_uu_id: Optional[str] = None
|
||||
|
||||
|
||||
class InsertAddress(PydanticBaseModel):
|
||||
post_code_uu_id: str
|
||||
|
||||
comment_address: Optional[str] = None
|
||||
letter_address: Optional[str] = None
|
||||
|
||||
build_number: str
|
||||
door_number: Optional[str] = None
|
||||
floor_number: Optional[str] = None
|
||||
|
||||
short_letter_address: Optional[str] = None
|
||||
latitude: Optional[float] = None
|
||||
longitude: Optional[float] = None
|
||||
|
||||
|
||||
class _UpdateAddress(PydanticBaseModel):
|
||||
...
|
||||
# country_code: Optional[str] = None
|
||||
# city: Optional[str] = None
|
||||
# district: Optional[str] = None
|
||||
# b_state: Optional[str] = None
|
||||
# neighborhood: Optional[str] = None
|
||||
# street: Optional[str] = None
|
||||
# postcode: Optional[str] = None
|
||||
# latitude: Optional[float] = None
|
||||
# longitude: Optional[float] = None
|
||||
22
api_validations/validations_request/application.py
Normal file
22
api_validations/validations_request/application.py
Normal file
@@ -0,0 +1,22 @@
|
||||
from api_validations.core_validations import BaseModelRegular
|
||||
|
||||
|
||||
class SingleEnumClassKey(BaseModelRegular):
|
||||
class_name: str
|
||||
key_name: str
|
||||
|
||||
|
||||
class SingleEnumUUID(BaseModelRegular):
|
||||
uu_id: str
|
||||
|
||||
|
||||
class SingleEnumOnlyClass(BaseModelRegular):
|
||||
class_name: str
|
||||
|
||||
|
||||
class SingleOccupantTypeClassKey(BaseModelRegular):
|
||||
type_code: str
|
||||
|
||||
|
||||
class SingleOccupantTypeUUID(BaseModelRegular):
|
||||
uu_id: str
|
||||
39
api_validations/validations_request/area.py
Normal file
39
api_validations/validations_request/area.py
Normal file
@@ -0,0 +1,39 @@
|
||||
from typing import Optional
|
||||
from api_validations.core_validations import BaseModelRegular
|
||||
from api_validations.validations_request import (
|
||||
PydanticBaseModel,
|
||||
ListOptions,
|
||||
)
|
||||
|
||||
class InsertBuildArea(BaseModelRegular):
|
||||
build_uu_id: str
|
||||
area_name: str
|
||||
area_code: str
|
||||
area_type: str
|
||||
area_direction: Optional[str] = None
|
||||
area_gross_size: Optional[float] = None
|
||||
area_net_size: Optional[float] = None
|
||||
width: Optional[int] = None
|
||||
size: Optional[int] = None
|
||||
|
||||
|
||||
class UpdateBuildArea(PydanticBaseModel):
|
||||
area_name: Optional[str] = None
|
||||
area_code: Optional[str] = None
|
||||
area_type: Optional[str] = None
|
||||
area_direction: Optional[str] = None
|
||||
area_gross_size: Optional[float] = None
|
||||
area_net_size: Optional[float] = None
|
||||
width: Optional[int] = None
|
||||
size: Optional[int] = None
|
||||
|
||||
|
||||
class InsertBuildSites(BaseModelRegular):
|
||||
address_uu_id: str
|
||||
site_name: str
|
||||
site_no: str
|
||||
|
||||
|
||||
class UpdateBuildSites(PydanticBaseModel):
|
||||
site_name: Optional[str] = None
|
||||
site_no: Optional[str] = None
|
||||
49
api_validations/validations_request/authentication.py
Normal file
49
api_validations/validations_request/authentication.py
Normal file
@@ -0,0 +1,49 @@
|
||||
from api_validations.core_validations import BaseModelRegular
|
||||
from api_validations.validations_request import (
|
||||
PydanticBaseModel,
|
||||
ListOptions,
|
||||
)
|
||||
from typing import Optional
|
||||
from pydantic import BaseModel
|
||||
|
||||
class ChangePassword(BaseModelRegular):
|
||||
domain_name: str
|
||||
access_key: str
|
||||
old_password: str
|
||||
new_password: str
|
||||
|
||||
|
||||
class CreatePassword(BaseModelRegular):
|
||||
password_token: str
|
||||
password: str
|
||||
re_password: str
|
||||
|
||||
|
||||
class OccupantSelection(BaseModel):
|
||||
occupant_uu_id: str
|
||||
build_part_uu_id: str
|
||||
|
||||
|
||||
class EmployeeSelection(BaseModel):
|
||||
company_uu_id: str
|
||||
|
||||
|
||||
class Login(BaseModelRegular):
|
||||
domain: str
|
||||
access_key: str
|
||||
password: str
|
||||
remember_me: Optional[bool] = False
|
||||
|
||||
|
||||
class Logout(BaseModelRegular):
|
||||
domain: str
|
||||
|
||||
|
||||
class Remember(BaseModelRegular):
|
||||
domain: str
|
||||
refresh_token: str
|
||||
|
||||
|
||||
class Forgot(BaseModelRegular):
|
||||
domain: str
|
||||
access_key: str
|
||||
18
api_validations/validations_request/build_living_space.py
Normal file
18
api_validations/validations_request/build_living_space.py
Normal file
@@ -0,0 +1,18 @@
|
||||
from typing import Optional
|
||||
from api_validations.core_validations import BaseModelRegular
|
||||
from api_validations.validations_request import (
|
||||
PydanticBaseModel,
|
||||
ListOptions,
|
||||
)
|
||||
|
||||
|
||||
class InsertBuildLivingSpace(BaseModelRegular):
|
||||
person_uu_id: str
|
||||
build_parts_uu_id: str
|
||||
occupant_type_uu_id: str
|
||||
|
||||
|
||||
class UpdateBuildLivingSpace(PydanticBaseModel):
|
||||
is_tenant_live: Optional[bool] = None
|
||||
build_parts_uu_id: Optional[str] = None
|
||||
person_uu_id: Optional[str] = None
|
||||
48
api_validations/validations_request/build_part.py
Normal file
48
api_validations/validations_request/build_part.py
Normal file
@@ -0,0 +1,48 @@
|
||||
from typing import Optional
|
||||
from api_validations.core_validations import BaseModelRegular
|
||||
from api_validations.validations_request import (
|
||||
PydanticBaseModel,
|
||||
ListOptions,
|
||||
)
|
||||
|
||||
class UpdateBuildTypes(PydanticBaseModel): ...
|
||||
|
||||
|
||||
class InsertBuildTypes(PydanticBaseModel):
|
||||
function_code: str
|
||||
type_code: str
|
||||
lang: str
|
||||
type_name: str
|
||||
|
||||
|
||||
class InsertBuildParts(PydanticBaseModel):
|
||||
build_uu_id: str
|
||||
address_gov_code: str
|
||||
part_no: int
|
||||
part_level: int
|
||||
build_part_type_uu_id: str
|
||||
|
||||
part_gross_size: Optional[int] = None
|
||||
part_net_size: Optional[int] = None
|
||||
default_accessory: Optional[str] = None
|
||||
human_livable: Optional[bool] = False
|
||||
part_direction_uu_id: Optional[str] = None
|
||||
|
||||
# current_owner_person_uu_id: Optional[str] = None
|
||||
# current_tenant_person_uu_id: Optional[str] = None
|
||||
|
||||
|
||||
class UpdateBuildParts(PydanticBaseModel):
|
||||
address_gov_code: Optional[str] = None
|
||||
part_no: Optional[int] = None
|
||||
part_level: Optional[int] = None
|
||||
build_part_type_uu_id: Optional[str] = None
|
||||
|
||||
part_code: Optional[int] = None
|
||||
part_gross_size: Optional[int] = None
|
||||
part_net_size: Optional[int] = None
|
||||
default_accessory: Optional[str] = None
|
||||
human_livable: Optional[bool] = False
|
||||
part_direction: Optional[str] = None
|
||||
current_owner_person_uu_id: Optional[str] = None
|
||||
current_tenant_person_uu_id: Optional[str] = None
|
||||
44
api_validations/validations_request/building.py
Normal file
44
api_validations/validations_request/building.py
Normal file
@@ -0,0 +1,44 @@
|
||||
from typing import Optional
|
||||
from api_validations.core_validations import BaseModelRegular
|
||||
from api_validations.validations_request import (
|
||||
PydanticBaseModel,
|
||||
ListOptions,
|
||||
)
|
||||
|
||||
class InsertBuild(PydanticBaseModel):
|
||||
gov_address_code: str
|
||||
build_name: str
|
||||
build_types_uu_id: str
|
||||
max_floor: int
|
||||
underground_floor: int
|
||||
address_uu_id: str
|
||||
build_date: str
|
||||
decision_period_date: str
|
||||
|
||||
tax_no: Optional[str] = None
|
||||
lift_count: Optional[int] = None
|
||||
heating_system: Optional[bool] = None
|
||||
cooling_system: Optional[bool] = None
|
||||
hot_water_system: Optional[bool] = None
|
||||
block_service_man_count: Optional[int] = None
|
||||
security_service_man_count: Optional[int] = None
|
||||
garage_count: Optional[int] = None
|
||||
|
||||
|
||||
class UpdateBuild(PydanticBaseModel):
|
||||
gov_address_code: Optional[str] = None
|
||||
build_name: Optional[str] = None
|
||||
build_no: Optional[str] = None
|
||||
build_types: Optional[str] = None
|
||||
max_floor: Optional[int] = None
|
||||
underground_floor: Optional[int] = None
|
||||
build_date: Optional[str] = None
|
||||
tax_no: Optional[str] = None
|
||||
lift_count: Optional[int] = None
|
||||
heating_system: Optional[bool] = None
|
||||
cooling_system: Optional[bool] = None
|
||||
hot_water_system: Optional[bool] = None
|
||||
block_service_man_count: Optional[int] = None
|
||||
security_service_man_count: Optional[int] = None
|
||||
garage_count: Optional[int] = None
|
||||
address_uu_id: Optional[str] = None
|
||||
34
api_validations/validations_request/company.py
Normal file
34
api_validations/validations_request/company.py
Normal file
@@ -0,0 +1,34 @@
|
||||
from typing import Optional, List
|
||||
from api_validations.core_validations import BaseModelRegular
|
||||
from api_validations.validations_request import (
|
||||
PydanticBaseModel,
|
||||
ListOptions,
|
||||
)
|
||||
|
||||
class InsertCompany(PydanticBaseModel):
|
||||
formal_name: str
|
||||
company_type: str
|
||||
commercial_type: str
|
||||
tax_no: str
|
||||
public_name: Optional[str] = None
|
||||
company_tag: Optional[str] = None
|
||||
default_lang_type: Optional[str] = None
|
||||
default_money_type: Optional[str] = None
|
||||
official_address_uu_id: Optional[int] = None
|
||||
# parent_uu_id: Optional[int] = None
|
||||
|
||||
|
||||
class UpdateCompany(PydanticBaseModel):
|
||||
company_uu_id: str
|
||||
public_name: Optional[str] = None
|
||||
formal_name: Optional[str] = None
|
||||
tax_no: Optional[str] = None
|
||||
company_tag: Optional[str] = None
|
||||
default_lang_type: Optional[str] = None
|
||||
default_money_type: Optional[str] = None
|
||||
official_address_uu_id: Optional[int] = None
|
||||
|
||||
|
||||
class MatchCompany2Company(PydanticBaseModel):
|
||||
match_company_uu_id: List[str]
|
||||
duty_uu_id: str
|
||||
@@ -0,0 +1,34 @@
|
||||
from typing import Optional
|
||||
|
||||
from api_validations.core_validations import BaseModelRegular
|
||||
|
||||
|
||||
class ListOptions(BaseModelRegular):
|
||||
|
||||
page: Optional[int] = 1
|
||||
size: Optional[int] = 10
|
||||
order_field: Optional[str] = "id"
|
||||
order_type: Optional[str] = "asc"
|
||||
include_joins: Optional[list] = []
|
||||
query: Optional[dict] = {}
|
||||
|
||||
|
||||
class PydanticBaseModel(BaseModelRegular):
|
||||
|
||||
active: Optional[bool] = None
|
||||
deleted: Optional[bool] = None
|
||||
is_confirmed: Optional[bool] = None
|
||||
expiry_starts: Optional[str] = None
|
||||
expiry_ends: Optional[str] = None
|
||||
|
||||
|
||||
class EndpointPydantic(BaseModelRegular):
|
||||
|
||||
data: Optional[dict] = {}
|
||||
|
||||
|
||||
class PatchRecord(BaseModelRegular):
|
||||
|
||||
confirm: Optional[bool] = None
|
||||
delete: Optional[bool] = None
|
||||
active: Optional[bool] = None
|
||||
80
api_validations/validations_request/create_model.py
Normal file
80
api_validations/validations_request/create_model.py
Normal file
@@ -0,0 +1,80 @@
|
||||
import typing
|
||||
from api_validations.core_validations import BaseModelRegular
|
||||
from api_validations.validations_request import (
|
||||
PydanticBaseModel,
|
||||
ListOptions,
|
||||
)
|
||||
|
||||
from datetime import datetime
|
||||
from pydantic import create_model
|
||||
from databases import Modules
|
||||
from fastapi.exceptions import HTTPException
|
||||
|
||||
|
||||
class ConvertField:
|
||||
|
||||
def __init__(self, match, default_val=None):
|
||||
self.match = match
|
||||
self.default_val = default_val
|
||||
|
||||
def typing_return(self):
|
||||
typing_dict = {
|
||||
"<class 'float'>": float,
|
||||
"<class 'bool'>": bool,
|
||||
"<class 'int'>": int,
|
||||
"<class 'str'>": str,
|
||||
"<class 'dict'>": dict,
|
||||
"<class 'list'>": list,
|
||||
"<class 'datetime.datetime'>": datetime,
|
||||
"typing.Optional[datetime.datetime]": typing.Optional[datetime],
|
||||
"typing.Optional[bool]": typing.Optional[bool],
|
||||
"typing.Optional[list]": typing.Optional[list],
|
||||
"typing.Optional[str]": typing.Optional[str],
|
||||
"typing.Optional[int]": typing.Optional[int],
|
||||
"typing.Optional[float]": typing.Optional[float],
|
||||
"typing.Optional[dict]": typing.Optional[dict],
|
||||
}
|
||||
matches_with = typing_dict.get(self.match, typing.Optional[str])
|
||||
default_value = getattr(self.default_val, "field_default_value", None)
|
||||
return matches_with, default_value
|
||||
|
||||
#
|
||||
# def create_model_from_database(model_id: typing.Union[int, str]):
|
||||
# if isinstance(model_id, int):
|
||||
# selected_model = Models.find_one(id=model_id)
|
||||
# else:
|
||||
# selected_model = Models.find_one(uu_id=str(model_id))
|
||||
#
|
||||
# if not selected_model:
|
||||
# raise HTTPException(
|
||||
# status_code=202,
|
||||
# detail=f"Model {selected_model.model_name} not found in database. Please add model to api.",
|
||||
# )
|
||||
# pydantic_class = getattr(root_validates, selected_model.model_type, None)
|
||||
# if not pydantic_class:
|
||||
# raise HTTPException(
|
||||
# status_code=202,
|
||||
# detail=f"Pydantic class {selected_model.model_type} not found in database. Please add model to api.",
|
||||
# )
|
||||
#
|
||||
# model_entities_records = ModelEntities.filter_active(
|
||||
# ModelEntities.model_id == selected_model.id
|
||||
# ).data
|
||||
#
|
||||
# if not model_entities_records:
|
||||
# raise HTTPException(
|
||||
# status_code=202,
|
||||
# detail="Model has no entities registered. Please add entities to model.",
|
||||
# )
|
||||
#
|
||||
# fields = {}
|
||||
# for entity in model_entities_records:
|
||||
# fields[entity.field_name] = ConvertField(
|
||||
# entity.field_type, entity.field_default_value
|
||||
# ).typing_return()
|
||||
#
|
||||
# return create_model(
|
||||
# __model_name=selected_model.model_name, # pydantic_name(User)
|
||||
# __module__=pydantic_class.__module__, # field_name(uu_id)
|
||||
# **fields, # field_name = (field_type (Optional[str]), default_value(None))
|
||||
# )
|
||||
107
api_validations/validations_request/decision_book.py
Normal file
107
api_validations/validations_request/decision_book.py
Normal file
@@ -0,0 +1,107 @@
|
||||
from typing import Optional
|
||||
from api_validations.core_validations import BaseModelRegular
|
||||
from api_validations.validations_request import (
|
||||
PydanticBaseModel,
|
||||
ListOptions,
|
||||
)
|
||||
|
||||
|
||||
class DecisionBookDecisionBookInvitations(PydanticBaseModel):
|
||||
build_decision_book_uu_id: str
|
||||
message: str
|
||||
planned_date: str
|
||||
|
||||
|
||||
class DecisionBookDecisionBookInvitationsAttend(PydanticBaseModel):
|
||||
token: str
|
||||
is_attend: bool
|
||||
|
||||
|
||||
class DecisionBookDecisionBookInvitationsAssign(PydanticBaseModel):
|
||||
token: str
|
||||
build_living_space_uu_id: str
|
||||
occupant_type_uu_id: str
|
||||
|
||||
|
||||
class DecisionBookDecisionBookInvitationsUpdate(PydanticBaseModel):
|
||||
token: str
|
||||
occupant_type_uu_id: Optional[str] = None
|
||||
|
||||
|
||||
class ListDecisionBook(PydanticBaseModel):
|
||||
build_decision_book_uu_id: Optional[str] = None
|
||||
|
||||
|
||||
class InsertDecisionBook(PydanticBaseModel):
|
||||
build_uu_id: str
|
||||
decision_type: str
|
||||
meeting_date: str
|
||||
is_out_sourced: bool
|
||||
|
||||
resp_company_fix_wage: Optional[float] = None
|
||||
resp_company_uu_id: Optional[str] = None
|
||||
|
||||
|
||||
class InsertDecisionBookCompleted(PydanticBaseModel):
|
||||
build_decision_book_uu_id: str
|
||||
meeting_completed_date: str
|
||||
|
||||
|
||||
class InsertDecisionBookPerson(PydanticBaseModel):
|
||||
person_uu_id: str
|
||||
build_decision_book_uu_id: str
|
||||
management_typecode_uu_id: str
|
||||
|
||||
dues_discount_approval_date: Optional[str] = None
|
||||
dues_fix_discount: Optional[float] = None
|
||||
dues_percent_discount: Optional[int] = None
|
||||
|
||||
|
||||
class RemoveDecisionBookPerson(PydanticBaseModel):
|
||||
person_uu_id: str
|
||||
build_decision_book_person_uu_id: str
|
||||
|
||||
|
||||
class UpdateDecisionBook(PydanticBaseModel):
|
||||
decision_book_pdf_path: Optional[str] = None
|
||||
is_out_sourced: Optional[bool] = None
|
||||
contact_agreement_path: Optional[str] = None
|
||||
contact_agreement_date: Optional[str] = None
|
||||
meeting_date: Optional[str] = None
|
||||
decision_type: Optional[str] = None
|
||||
|
||||
resp_company_fix_wage: Optional[float] = None
|
||||
resp_company_uu_id: Optional[str] = None
|
||||
|
||||
|
||||
class InsertBuildDecisionBookItems(PydanticBaseModel):
|
||||
token: str
|
||||
info_type_uu_id: str
|
||||
unit_price: float
|
||||
currency: Optional[str] = "TL"
|
||||
unit_type: Optional[str] = "M2"
|
||||
debit_start_date: Optional[str] = None
|
||||
debit_end_date: Optional[str] = None
|
||||
unit_price_is_fixed: Optional[bool] = False
|
||||
item_comment: Optional[str] = None
|
||||
|
||||
# build_decision_book_uu_id: str
|
||||
# item_objection: Optional[str] = None
|
||||
|
||||
|
||||
class UpdateBuildDecisionBookItems(PydanticBaseModel):
|
||||
item_comment: Optional[str] = None
|
||||
item_objection: Optional[str] = None
|
||||
|
||||
|
||||
class InsertBuildDecisionBookItemDebits(PydanticBaseModel):
|
||||
build_decision_book_item_uu_id: str
|
||||
dues_values: dict
|
||||
# dues_types_uu_id: str
|
||||
# decision_taken: Optional[bool] = None
|
||||
|
||||
|
||||
class UpdateBuildDecisionBookItemDebits(PydanticBaseModel):
|
||||
dues_types_uu_id: Optional[str] = None
|
||||
dues_values: Optional[dict] = None
|
||||
decision_taken: Optional[bool] = None
|
||||
24
api_validations/validations_request/departments.py
Normal file
24
api_validations/validations_request/departments.py
Normal file
@@ -0,0 +1,24 @@
|
||||
from typing import Optional
|
||||
from api_validations.core_validations import BaseModelRegular
|
||||
from api_validations.validations_request import (
|
||||
PydanticBaseModel,
|
||||
ListOptions,
|
||||
)
|
||||
|
||||
|
||||
class DepartmentsPydantic(PydanticBaseModel):
|
||||
|
||||
department_code: Optional[str]
|
||||
department_name: Optional[str]
|
||||
department_description: Optional[str] = None
|
||||
company_uu_id: Optional[str] = None
|
||||
parent_department_uu_id: Optional[int] = None
|
||||
|
||||
|
||||
# class UpdateDepartments(PydanticBaseModel):
|
||||
#
|
||||
# department_code: Optional[str] = None
|
||||
# department_name: Optional[str] = None
|
||||
# department_description: Optional[str] = None
|
||||
# company_uu_id: Optional[str] = None
|
||||
# parent_department_uu_id: Optional[int] = None
|
||||
81
api_validations/validations_request/employee.py
Normal file
81
api_validations/validations_request/employee.py
Normal file
@@ -0,0 +1,81 @@
|
||||
from typing import Optional
|
||||
from api_validations.core_validations import BaseModelRegular
|
||||
from api_validations.validations_request import (
|
||||
PydanticBaseModel,
|
||||
ListOptions,
|
||||
)
|
||||
|
||||
|
||||
class BindEmployees2People(PydanticBaseModel):
|
||||
staff_uu_id: str
|
||||
people_uu_id: str
|
||||
expiry_starts: Optional[str] = None
|
||||
|
||||
|
||||
class UnBindEmployees2People(PydanticBaseModel):
|
||||
people_uu_id: str
|
||||
expiry_ends: str
|
||||
|
||||
|
||||
class InsertEmployees(PydanticBaseModel):
|
||||
staff_uu_id: str
|
||||
people_uu_id: Optional[str] = None
|
||||
|
||||
|
||||
class InsertCompanyDuty(PydanticBaseModel):
|
||||
duty_code: str
|
||||
duty_name: str
|
||||
duty_description: Optional[str] = None
|
||||
|
||||
|
||||
class SelectDuties(PydanticBaseModel):
|
||||
duty_uu_id: Optional[str] = None
|
||||
|
||||
|
||||
class InsertDuties(PydanticBaseModel):
|
||||
duties_uu_id: str
|
||||
department_uu_id: str
|
||||
is_default_duty: Optional[bool] = False
|
||||
|
||||
|
||||
class UpdateDuties(PydanticBaseModel):
|
||||
duties_uu_id: Optional[str] = None
|
||||
department_uu_id: Optional[str] = None
|
||||
is_default_duty: Optional[bool] = None
|
||||
|
||||
|
||||
class UpdateCompanyDuty(PydanticBaseModel):
|
||||
duty_code: Optional[str] = None
|
||||
duty_name: Optional[str] = None
|
||||
duty_description: Optional[str] = None
|
||||
|
||||
|
||||
class InsertCompanyEmployeesSalaries(PydanticBaseModel):
|
||||
gross_salary: float
|
||||
net_salary: float
|
||||
start_date: str
|
||||
stop_date: Optional[str] = None
|
||||
people_id: int
|
||||
|
||||
|
||||
class UpdateCompanyEmployeesSalaries(PydanticBaseModel):
|
||||
gross_salary: Optional[float] = None
|
||||
net_salary: Optional[float] = None
|
||||
start_date: Optional[str] = None
|
||||
stop_date: Optional[str] = None
|
||||
people_id: Optional[int] = None
|
||||
|
||||
|
||||
class InsertCompanyEmployees(PydanticBaseModel):
|
||||
|
||||
employee_description: Optional[str] = None
|
||||
person_uu_id: str
|
||||
duty_uu_id: str
|
||||
|
||||
start_date: Optional[str] = None
|
||||
stop_date: Optional[str] = None
|
||||
|
||||
|
||||
class UpdateCompanyEmployees(PydanticBaseModel):
|
||||
stop_date: Optional[str] = None
|
||||
employee_description: Optional[str] = None
|
||||
24
api_validations/validations_request/events.py
Normal file
24
api_validations/validations_request/events.py
Normal file
@@ -0,0 +1,24 @@
|
||||
from typing import Optional
|
||||
from api_validations.core_validations import BaseModelRegular
|
||||
from api_validations.validations_request import (
|
||||
PydanticBaseModel,
|
||||
ListOptions,
|
||||
)
|
||||
|
||||
|
||||
class CreateEvents(PydanticBaseModel):
|
||||
event_name: Optional[str] = None
|
||||
event_description: Optional[str] = None
|
||||
event_date: Optional[str] = None
|
||||
event_location: Optional[str] = None
|
||||
|
||||
|
||||
class RegisterEvents2Employee(PydanticBaseModel):
|
||||
event_uu_id_list: list[str] = []
|
||||
employee_uu_id: Optional[str] = None
|
||||
|
||||
|
||||
class RegisterEvents2Occupant(PydanticBaseModel):
|
||||
event_uu_id_list: list[str] = []
|
||||
build_part_uu_id: Optional[str] = None
|
||||
occupant_uu_id: Optional[str] = None
|
||||
79
api_validations/validations_request/people.py
Normal file
79
api_validations/validations_request/people.py
Normal file
@@ -0,0 +1,79 @@
|
||||
from typing import Optional
|
||||
from api_validations.core_validations import BaseModelRegular
|
||||
from api_validations.validations_request import (
|
||||
PydanticBaseModel,
|
||||
ListOptions,
|
||||
)
|
||||
|
||||
|
||||
class InsertPerson(PydanticBaseModel):
|
||||
firstname: str
|
||||
surname: str
|
||||
sex_code: str
|
||||
national_identity_id: str
|
||||
middle_name: Optional[str] = None
|
||||
father_name: Optional[str] = None
|
||||
mother_name: Optional[str] = None
|
||||
country_code: Optional[str] = "TR"
|
||||
birth_place: Optional[str] = None
|
||||
birth_date: Optional[str] = None
|
||||
tax_no: Optional[str] = None
|
||||
|
||||
|
||||
class ResponsePersonSalesMange(PydanticBaseModel):
|
||||
uu_id: str
|
||||
firstname: str
|
||||
surname: str
|
||||
national_identity_id: str
|
||||
birth_place: Optional[str] = None
|
||||
birth_date: Optional[str] = None
|
||||
tax_no: Optional[str] = None
|
||||
|
||||
|
||||
class UpdatePerson(PydanticBaseModel):
|
||||
firstname: Optional[str] = None
|
||||
surname: Optional[str] = None
|
||||
middle_name: Optional[str]
|
||||
father_name: Optional[str] = None
|
||||
mother_name: Optional[str] = None
|
||||
sex_code: Optional[str] = None
|
||||
country_code: Optional[str] = None
|
||||
national_identity_id: Optional[str] = None
|
||||
birth_place: Optional[str] = None
|
||||
birth_date: Optional[str] = None
|
||||
tax_no: Optional[str] = None
|
||||
|
||||
|
||||
#
|
||||
# class QueryPeople(PydanticBaseModel):
|
||||
# uu_id: Optional[str] = None
|
||||
#
|
||||
#
|
||||
# class InsertPeople(PydanticBaseModel):
|
||||
# key_id: Optional[str] = None
|
||||
# query: Optional[dict] = None
|
||||
# data: Optional[_InsertPerson] = None
|
||||
#
|
||||
#
|
||||
# class UpdatePeople(PydanticBaseModel):
|
||||
# key_id: Optional[str] = None
|
||||
# query: Optional[QueryPeople] = None
|
||||
# data: Optional[_UpdatePerson] = None
|
||||
#
|
||||
#
|
||||
# class DeletePeople(PydanticBaseModel):
|
||||
# key_id: Optional[str] = None
|
||||
# query: Optional[List[QueryPeople]] = None
|
||||
# data: Optional[dict] = None
|
||||
#
|
||||
#
|
||||
# class ListPeople(PydanticBaseModel):
|
||||
# key_id: Optional[str] = None
|
||||
# query: Optional[QueryPeople] = None
|
||||
# data: Optional[ListOptions] = None
|
||||
#
|
||||
#
|
||||
# class ActivePeople(PydanticBaseModel):
|
||||
# key_id: Optional[str] = None
|
||||
# query: Optional[List[QueryPeople]] = None
|
||||
# data: Optional[dict] = None
|
||||
75
api_validations/validations_request/project_decision_book.py
Normal file
75
api_validations/validations_request/project_decision_book.py
Normal file
@@ -0,0 +1,75 @@
|
||||
from typing import Optional
|
||||
from api_validations.core_validations import BaseModelRegular
|
||||
from api_validations.validations_request import (
|
||||
PydanticBaseModel,
|
||||
ListOptions,
|
||||
)
|
||||
|
||||
|
||||
class InsertBuildDecisionBookProjects(PydanticBaseModel):
|
||||
build_decision_book_item_uu_id: str
|
||||
project_response_person_uu_id: str
|
||||
project_name: str
|
||||
project_start_date: str
|
||||
project_stop_date: str
|
||||
project_type: str
|
||||
|
||||
is_out_sourced: Optional[bool] = False
|
||||
project_note: Optional[str] = None
|
||||
decision_book_pdf_path: Optional[str] = None
|
||||
resp_company_fix_wage: Optional[float] = None
|
||||
contact_agreement_path: Optional[str] = None
|
||||
contact_agreement_date: Optional[str] = None
|
||||
meeting_date: Optional[str] = None
|
||||
bid_price: Optional[float] = None
|
||||
approved_price: Optional[float] = None
|
||||
final_price: Optional[float] = None
|
||||
resp_company_uu_id: Optional[str] = None
|
||||
|
||||
|
||||
class UpdateBuildDecisionBookProjects(PydanticBaseModel):
|
||||
resp_company_uu_id: Optional[str] = None
|
||||
|
||||
project_response: Optional[str] = None
|
||||
project_name: Optional[str] = None
|
||||
project_type: Optional[str] = None
|
||||
project_note: Optional[str] = None
|
||||
decision_book_pdf_path: Optional[str] = None
|
||||
resp_company_fix_wage: Optional[float] = None
|
||||
is_out_sourced: Optional[bool] = None
|
||||
contact_agreement_path: Optional[str] = None
|
||||
contact_agreement_date: Optional[str] = None
|
||||
meeting_date: Optional[str] = None
|
||||
bid_price: Optional[float] = None
|
||||
approved_price: Optional[float] = None
|
||||
final_price: Optional[float] = None
|
||||
|
||||
|
||||
class InsertBuildDecisionBookProjectItems(PydanticBaseModel):
|
||||
item_order: int
|
||||
item_comment: str
|
||||
build_decision_book_project_uu_id: str
|
||||
item_objection: Optional[str] = None
|
||||
|
||||
|
||||
class UpdateBuildDecisionBookProjectItems(PydanticBaseModel):
|
||||
item_comment: Optional[str] = None
|
||||
item_objection: Optional[str] = None
|
||||
|
||||
|
||||
class InsertBuildDecisionBookProjectItemDebits(PydanticBaseModel):
|
||||
build_decision_book_project_item_uu_id: str
|
||||
payment_date: str
|
||||
dues_values: dict
|
||||
is_official: Optional[bool] = False
|
||||
discount_value: Optional[float] = None
|
||||
discount_fix: Optional[float] = None
|
||||
decision_taken: Optional[bool] = None
|
||||
|
||||
|
||||
class UpdateBuildDecisionBookProjectItemDebits(PydanticBaseModel):
|
||||
dues_values: Optional[str] = None
|
||||
discount_value: Optional[float] = None
|
||||
discount_fix: Optional[float] = None
|
||||
decision_taken: Optional[bool] = None
|
||||
is_official: Optional[bool] = None
|
||||
22
api_validations/validations_request/rules.py
Normal file
22
api_validations/validations_request/rules.py
Normal file
@@ -0,0 +1,22 @@
|
||||
from typing import Optional, List
|
||||
from api_validations.core_validations import BaseModelRegular
|
||||
from api_validations.validations_request import (
|
||||
PydanticBaseModel,
|
||||
ListOptions,
|
||||
)
|
||||
|
||||
|
||||
class InsertEndpointAccess(PydanticBaseModel):
|
||||
duty_uu_id: str
|
||||
endpoint_restriction_list_uu_ids: list
|
||||
|
||||
|
||||
class UpdateEndpointAccess(PydanticBaseModel):
|
||||
endpoint_restriction_uu_id: Optional[str] = None
|
||||
deleted: Optional[bool] = None
|
||||
active: Optional[bool] = None
|
||||
is_confirmed: Optional[bool] = None
|
||||
|
||||
|
||||
class UpdateEndpointAccessList(PydanticBaseModel):
|
||||
endpoint_restriction_list: List[UpdateEndpointAccess]
|
||||
15
api_validations/validations_request/services.py
Normal file
15
api_validations/validations_request/services.py
Normal file
@@ -0,0 +1,15 @@
|
||||
from api_validations.core_validations import BaseModelRegular
|
||||
from api_validations.validations_request import (
|
||||
PydanticBaseModel,
|
||||
ListOptions,
|
||||
)
|
||||
|
||||
class RegisterServices2Occupant(PydanticBaseModel):
|
||||
service_uu_id: str
|
||||
occupant_uu_id: str
|
||||
build_part_uu_id: str
|
||||
|
||||
|
||||
class RegisterServices2Employee(PydanticBaseModel):
|
||||
service_uu_id: str
|
||||
employee_uu_id: str
|
||||
20
api_validations/validations_request/staff.py
Normal file
20
api_validations/validations_request/staff.py
Normal file
@@ -0,0 +1,20 @@
|
||||
from typing import Optional
|
||||
from api_validations.core_validations import BaseModelRegular
|
||||
from api_validations.validations_request import (
|
||||
PydanticBaseModel,
|
||||
ListOptions,
|
||||
)
|
||||
|
||||
|
||||
class InsertStaff(PydanticBaseModel):
|
||||
|
||||
staff_name: str
|
||||
staff_description: Optional[str] = None
|
||||
staff_code: Optional[str] = None
|
||||
|
||||
duties_uu_id: str
|
||||
|
||||
|
||||
class SelectStaff(PydanticBaseModel):
|
||||
|
||||
duties_uu_id: str
|
||||
44
api_validations/validations_request/user.py
Normal file
44
api_validations/validations_request/user.py
Normal file
@@ -0,0 +1,44 @@
|
||||
from typing import Optional, List
|
||||
from api_validations.core_validations import BaseModelRegular
|
||||
from api_validations.validations_request import (
|
||||
PydanticBaseModel,
|
||||
ListOptions,
|
||||
)
|
||||
|
||||
class InsertUsers(PydanticBaseModel):
|
||||
people_uu_id: str
|
||||
user_tag: str
|
||||
email: Optional[str] = None
|
||||
phone_number: Optional[str] = None
|
||||
avatar: Optional[str] = None
|
||||
|
||||
|
||||
class UpdateUsers(PydanticBaseModel):
|
||||
people_uu_id: Optional[str] = None
|
||||
nick_name: Optional[str] = None
|
||||
domain_name: Optional[str] = None
|
||||
email: Optional[str] = None
|
||||
phone_number: Optional[str] = None
|
||||
avatar: Optional[str] = None
|
||||
|
||||
|
||||
class QueryUsers(PydanticBaseModel):
|
||||
uu_id: Optional[str] = None
|
||||
|
||||
|
||||
class DeleteUsers(PydanticBaseModel):
|
||||
key_id: Optional[str] = None
|
||||
query: Optional[List[QueryUsers]] = None
|
||||
data: Optional[dict] = None
|
||||
|
||||
|
||||
class ListUsers(PydanticBaseModel):
|
||||
key_id: Optional[str] = None
|
||||
query: Optional[QueryUsers] = None
|
||||
data: Optional[ListOptions] = None
|
||||
|
||||
|
||||
class ActiveUsers(PydanticBaseModel):
|
||||
key_id: Optional[str] = None
|
||||
query: Optional[List[QueryUsers]] = None
|
||||
data: Optional[dict] = None
|
||||
0
api_validations/validations_response/__init__.py
Normal file
0
api_validations/validations_response/__init__.py
Normal file
Reference in New Issue
Block a user