2 chained application designed and new stage inited

This commit is contained in:
2025-06-24 12:41:06 +03:00
parent 311736ce06
commit a9655c5f48
45 changed files with 3090 additions and 386 deletions

View File

@@ -13,6 +13,9 @@ from Validations.defaults.validations import CommonHeaders
from Schemas import (
Build,
BuildParts,
ApiEnumDropdown,
BuildTypes,
BuildParts,
AccountRecords,
)
@@ -55,17 +58,43 @@ SuperPartsDeleteEvent = Event(
def super_parts_list_callable(list_options: PaginateOnly, headers: CommonHeaders):
return {
"message": "MSG0003-LIST",
"data": None,
"completed": True,
}
list_options = PaginateOnly(**list_options.model_dump())
# TODO: Pydantic Model must be implemnted for list_options.query
with Build.new_session() as db_session:
BuildParts.set_session(db_session)
base_query = BuildParts.query.filter()
build_parts_records_query = base_query
if list_options.query:
build_parts_records_query = BuildParts.query.filter(*BuildParts.convert(list_options.query))
pagination = Pagination(data=build_parts_records_query, base_query=base_query)
pagination.change(**list_options.model_dump())
pagination_result = PaginationResult(data=build_parts_records_query, pagination=pagination, response_model=None)
return EndpointResponse(message="MSG0003-LIST", pagination_result=pagination_result).response
SuperPartsListEvent.event_callable = super_parts_list_callable
def super_parts_create_callable(data, headers: CommonHeaders):
with Build.new_session() as db_session:
Build.set_session(db_session)
BuildParts.set_session(db_session)
BuildTypes.set_session(db_session)
ApiEnumDropdown.set_session(db_session)
build = Build.query.filter(Build.uu_id == data.build_uu_id).first()
part_direction = ApiEnumDropdown.query.filter(ApiEnumDropdown.uu_id == data.part_direction_uu_id).first()
part_type = BuildTypes.query.filter(BuildTypes.uu_id == data.part_type_uu_id).first()
build_parts_created = BuildParts.create(
**data.model_dump(),
build_id=getattr(build, "id", None),
part_direction_id=getattr(part_direction, "id", None),
part_type_id=getattr(part_type, "id", None)
)
build_parts_created.save()
return {
"message": "MSG0001-INSERT",
"data": None,
@@ -77,6 +106,25 @@ SuperPartsCreateEvent.event_callable = super_parts_create_callable
def super_parts_update_callable(data, headers: CommonHeaders):
with Build.new_session() as db_session:
Build.set_session(db_session)
BuildParts.set_session(db_session)
BuildTypes.set_session(db_session)
ApiEnumDropdown.set_session(db_session)
build = Build.query.filter(Build.uu_id == data.build_uu_id).first()
part_direction = ApiEnumDropdown.query.filter(ApiEnumDropdown.uu_id == data.part_direction_uu_id).first()
part_type = BuildTypes.query.filter(BuildTypes.uu_id == data.part_type_uu_id).first()
build_parts_updated = BuildParts.query.filter(BuildParts.uu_id == data.uu_id).first()
build_parts_updated.update(
**data.model_dump(exclude_unset=True, exclude_none=True),
build_id=getattr(build, "id", None),
part_direction_id=getattr(part_direction, "id", None),
part_type_id=getattr(part_type, "id", None)
)
build_parts_updated.save()
return {
"message": "MSG0002-UPDATE",
"data": None,

View File

@@ -11,9 +11,13 @@ from Validations.response import (
)
from Validations.defaults.validations import CommonHeaders
from Schemas import (
Addresses,
BuildTypes,
Build,
BuildSites,
BuildParts,
AccountRecords,
Companies,
# AccountRecords,
)
@@ -53,32 +57,16 @@ SuperBuildDeleteEvent = Event(
def super_build_list_callable(list_options: PaginateOnly, headers: CommonHeaders):
list_options = PaginateOnly(**list_options.model_dump())
if token.is_employee:
raise Exception("Forbidden for employees")
# TODO: Pydantic Model must be implemnted for list_options.query
with AccountRecords.new_session() as db_session:
AccountRecords.set_session(db_session)
list_of_fields = [
AccountRecords.iban,
AccountRecords.bank_date,
AccountRecords.currency,
AccountRecords.currency_value,
AccountRecords.process_comment,
AccountRecords.add_comment_note,
AccountRecords.receive_debit,
AccountRecords.is_email_send,
AccountRecords.is_notification_send,
]
account_records_query = db_session.query(*list_of_fields
).join(BuildParts, BuildParts.id == AccountRecords.build_parts_id
).filter(BuildParts.id == token.selected_occupant.build_part_id)
with Build.new_session() as db_session:
Build.set_session(db_session)
base_query = Build.query.filter()
build_records_query = base_query
if list_options.query:
account_records_query = account_records_query.filter(*AccountRecords.convert(list_options.query))
pagination = Pagination(data=account_records_query)
build_records_query = Build.query.filter(*Build.convert(list_options.query))
pagination = Pagination(data=build_records_query, base_query=base_query)
pagination.change(**list_options.model_dump())
pagination_result = PaginationResult(data=account_records_query, pagination=pagination)
pagination_result = PaginationResult(data=build_records_query, pagination=pagination, response_model=None)
return EndpointResponse(message="MSG0003-LIST", pagination_result=pagination_result).response
@@ -86,6 +74,19 @@ SuperBuildListEvent.event_callable = super_build_list_callable
def super_build_create_callable(data, headers: CommonHeaders):
with Build.new_session() as db_session:
Build.set_session(db_session)
Addresses.set_session(db_session)
BuildTypes.set_session(db_session)
BuildSites.set_session(db_session)
address_id = Addresses.query.filter(Addresses.uu_id == data.address_uu_id).first()
build_types_id = BuildTypes.query.filter(BuildTypes.uu_id == data.build_types_uu_id).first()
sites_id = BuildSites.query.filter(BuildSites.uu_id == data.site_uu_id).first()
build = Build.create(**data.model_dump(), address_id=getattr(address_id, "id", None), build_types_id=getattr(build_types_id, "id", None), site_id=getattr(sites_id, "id", None))
build.save()
return {
"message": "MSG0001-INSERT",
"data": None,
@@ -96,7 +97,23 @@ def super_build_create_callable(data, headers: CommonHeaders):
SuperBuildCreateEvent.event_callable = super_build_create_callable
def super_build_update_callable(data, headers: CommonHeaders):
def super_build_update_callable(uu_id: str, data, headers: CommonHeaders):
data_dict = data.model_dump(exclude_unset=True, exclude_none=True)
data_dict.pop("uu_id", None)
data_dict.pop("uuid", None)
with Build.new_session() as db_session:
Build.set_session(db_session)
Addresses.set_session(db_session)
BuildTypes.set_session(db_session)
BuildSites.set_session(db_session)
address_id = Addresses.query.filter(Addresses.uu_id == data.address_uu_id).first()
build_types_id = BuildTypes.query.filter(BuildTypes.uu_id == data.build_types_uu_id).first()
sites_id = BuildSites.query.filter(BuildSites.uu_id == data.site_uu_id).first()
build = Build.query.filter(Build.uu_id == uu_id).first()
build.update(**data_dict, address_id=getattr(address_id, "id", None), build_types_id=getattr(build_types_id, "id", None), site_id=getattr(sites_id, "id", None))
build.save()
return {
"message": "MSG0002-UPDATE",
"data": None,
@@ -108,6 +125,10 @@ SuperBuildUpdateEvent.event_callable = super_build_update_callable
def super_build_delete_callable(uu_id: str, headers: CommonHeaders):
with Build.new_session() as db_session:
Build.set_session(db_session)
build = Build.query.filter(Build.uu_id == uu_id).first()
build.delete()
return {
"message": "MSG0003-DELETE",
"data": None,