events updated

This commit is contained in:
berkay 2024-11-13 20:53:06 +03:00
parent 4199cc16b4
commit 83b3a5989e
9 changed files with 48 additions and 45 deletions

View File

@ -1,6 +1,7 @@
from fastapi import status from fastapi import status
from fastapi.responses import JSONResponse from fastapi.responses import JSONResponse
from api_validations.core_response import AlchemyJsonResponse
from api_validations.validations_request import ( from api_validations.validations_request import (
InsertDuties, InsertDuties,
UpdateDuties, UpdateDuties,
@ -32,12 +33,11 @@ class DutiesListEventMethods(MethodToEvent):
records = Duties.filter_all( records = Duties.filter_all(
Duties.company_id == token_dict.selected_company.company_id, Duties.company_id == token_dict.selected_company.company_id,
) )
return { return AlchemyJsonResponse(
"completed": True if records.count else False, completed=True,
"status": "success", result=records,
"data": records.get_dict(), message="List of Duties records",
} )
class DutiesGetByUUIDEventMethods(MethodToEvent): class DutiesGetByUUIDEventMethods(MethodToEvent):

View File

@ -45,7 +45,7 @@ class DecisionBookDecisionBookItemsListEventMethods(MethodToEvent):
decision_book = BuildDecisionBook.filter_one( decision_book = BuildDecisionBook.filter_one(
BuildDecisionBook.uu_id == data.build_decision_book_uu_id, BuildDecisionBook.uu_id == data.build_decision_book_uu_id,
*BuildDecisionBook.valid_record_args(BuildDecisionBook), *BuildDecisionBook.valid_record_args(BuildDecisionBook),
) ).data
if not decision_book: if not decision_book:
raise HTTPException( raise HTTPException(
status_code=status.HTTP_404_NOT_FOUND, status_code=status.HTTP_404_NOT_FOUND,
@ -55,7 +55,7 @@ class DecisionBookDecisionBookItemsListEventMethods(MethodToEvent):
Build.pre_query = Build.select_action( Build.pre_query = Build.select_action(
employee_id=token_dict.selected_company.employee_id, employee_id=token_dict.selected_company.employee_id,
filter_expr=[ filter_expr=[
Build.uu_id == decision_book.build_decision_book_uu_id, Build.uu_id == str(decision_book.uu_id),
], ],
) )
reachable_building = Build.filter_all() reachable_building = Build.filter_all()
@ -70,7 +70,7 @@ class DecisionBookDecisionBookItemsListEventMethods(MethodToEvent):
token_dict.selected_company.duty_id, token_dict.selected_company.duty_id,
token_dict.selected_company.bulk_duties_id, token_dict.selected_company.bulk_duties_id,
], ],
filter_expr=[Companies.id == decision_book.company_id], filter_expr=[Companies.id == decision_book.resp_company_id],
) )
reachable_companies = Companies.filter_all() reachable_companies = Companies.filter_all()
if not reachable_companies.data: if not reachable_companies.data:

View File

@ -34,10 +34,13 @@ class UserListEventMethods(MethodToEvent):
list_options: ListOptions, list_options: ListOptions,
token_dict: typing.Union[EmployeeTokenObject, OccupantTokenObject], token_dict: typing.Union[EmployeeTokenObject, OccupantTokenObject],
): ):
# Users.pre_query = Users.select_action(duty_id_list=[ if isinstance(token_dict, OccupantTokenObject):
# token_dict.selected_company.duty_id, raise Users.raise_http_exception(
# token_dict.selected_company.bulk_duties_id status_code="HTTP_403_FORBIDDEN",
# ]) message="Occupant object can not list users",
error_case="NOTAUTHORIZED",
data={},
)
if "user_uu_id_list" in list_options.query: if "user_uu_id_list" in list_options.query:
people_ids = list_options.query.pop("user_uu_id_list") people_ids = list_options.query.pop("user_uu_id_list")
people_id_list = ( people_id_list = (
@ -46,11 +49,11 @@ class UserListEventMethods(MethodToEvent):
Users.uu_id.in_(people_ids), *Users.valid_record_args(Users) Users.uu_id.in_(people_ids), *Users.valid_record_args(Users)
).data ).data
) )
People.filter_attr = list_options Users.filter_attr = list_options
records = People.filter_all( records = Users.filter_all(
People.id.in_(people_id_list), Users.person_id.in_(people_id_list),
*People.valid_record_args(People), *Users.valid_record_args(Users),
).data )
return AlchemyJsonResponse( return AlchemyJsonResponse(
completed=True, completed=True,
message="Users are listed successfully", message="Users are listed successfully",
@ -59,7 +62,7 @@ class UserListEventMethods(MethodToEvent):
Users.filter_attr = list_options Users.filter_attr = list_options
records = Users.filter_all( records = Users.filter_all(
*Users.valid_record_args(Users), *Users.valid_record_args(Users),
).data )
return AlchemyJsonResponse( return AlchemyJsonResponse(
completed=True, completed=True,
message="Users are listed successfully", message="Users are listed successfully",

View File

@ -14,7 +14,7 @@ def parse_token_object_to_dict(request): # from requests import Request
return valid_token return valid_token
endpoint_active = EndpointRestriction.filter_one( endpoint_active = EndpointRestriction.filter_one(
EndpointRestriction.endpoint_name.ilike(f"%{endpoint_name}%"), EndpointRestriction.endpoint_name.ilike(f"%{endpoint_name}%"),
*EndpointRestriction.valid_record_args(EndpointRestriction), system=True,
).data ).data
if not endpoint_active: if not endpoint_active:
raise HTTPException( raise HTTPException(
@ -24,7 +24,7 @@ def parse_token_object_to_dict(request): # from requests import Request
if valid_token.user_type == 1: if valid_token.user_type == 1:
if not valid_token.selected_company: if not valid_token.selected_company:
raise HTTPException( raise HTTPException(
status_code=status.HTTP_418_IM_A_TEAPOT, status_code=status.HTTP_401_UNAUTHORIZED,
detail="Selected company is not found in the token object.", detail="Selected company is not found in the token object.",
) )
selected_event = Events.filter_one( selected_event = Events.filter_one(

View File

@ -68,7 +68,7 @@ class AlchemyJsonResponse:
filter_model = first_item.filter_attr filter_model = first_item.filter_attr
total_count = cls.result.query.limit(None).offset(None).count() total_count = cls.result.query.limit(None).offset(None).count()
total_page_number = round(total_count / int(first_item.filter_attr.size), 0) + 1 total_page_number = round(total_count / int(first_item.filter_attr.size), 0)
pagination_dict = { pagination_dict = {
"size/total_count": [cls.result.count, total_count], "size/total_count": [cls.result.count, total_count],

View File

@ -10,13 +10,12 @@ engine_config = {
"pool_size": 10, "pool_size": 10,
"max_overflow": 0, "max_overflow": 0,
"echo": False, "echo": False,
"isolation_level": "READ COMMITTED"
} }
engine = create_engine(**engine_config) engine = create_engine(**engine_config)
session_config = {"autoflush": True, "bind": engine, "echo": True} SessionLocal = sessionmaker(bind=engine, autoflush=False, autocommit=False, echo=True)
SessionLocal = sessionmaker(**session_config)
session = scoped_session(sessionmaker(bind=engine)) session = scoped_session(sessionmaker(bind=engine))
session.expunge_all()
Base = declarative_base() Base = declarative_base()
Base.session = session Base.session = session

View File

@ -19,8 +19,18 @@ class AlchemyResponse:
@property @property
def data(self): def data(self):
if self.first: if self.first:
return self.__query.first() try:
return self.__query.all() return self.__query.first()
except Exception as e:
err = e
self.__query.session.expunge_all()
return None
try:
return self.__query.all()
except Exception as e:
err = e
self.__query.session.expunge_all()
return []
@property @property
def count(self): def count(self):

View File

@ -21,10 +21,13 @@ def exception_handler_http(request: Request, exc: HTTPException):
}, },
) )
except Exception as e: except Exception as e:
err = e
return JSONResponse( return JSONResponse(
status_code=exc.status_code, status_code=exc.status_code,
content={"detail": str(exc_detail), "mesasage": f"{e}"}, content={
"Error": str(exc_detail),
"Message": f"{str(e)}",
"Data": {}
},
) )

View File

@ -16,39 +16,27 @@ modules_route.include_router(modules_route, include_in_schema=True)
@modules_route.post(path="/list", summary="List Active/Delete/Confirm Modules") @modules_route.post(path="/list", summary="List Active/Delete/Confirm Modules")
def modules_list(request: Request, list_options: ListOptions): def modules_list(request: Request, list_options: ListOptions):
from events.events_modules import ModulesEvents
token_dict = parse_token_object_to_dict(request=request) token_dict = parse_token_object_to_dict(request=request)
active_function = getattr(ModulesEvents, "modules_list") return token_dict.available_event(list_options=list_options, token_dict=token_dict)
return active_function(list_options=list_options, token_dict=token_dict)
@modules_route.post(path="/create", summary="Create Modules with given auth levels") @modules_route.post(path="/create", summary="Create Modules with given auth levels")
def modules_create(request: Request, data: DepartmentsPydantic): def modules_create(request: Request, data: DepartmentsPydantic):
from events.events_modules import ModulesEvents
token_dict = parse_token_object_to_dict(request=request) token_dict = parse_token_object_to_dict(request=request)
active_function = getattr(ModulesEvents, "modules_create") return token_dict.available_event(data=data, token_dict=token_dict)
return active_function(data=data, token_dict=token_dict)
@modules_route.post( @modules_route.post(
path="/update/{module_uu_id}", summary="Update Modules with given auth levels" path="/update/{module_uu_id}", summary="Update Modules with given auth levels"
) )
def modules_update(request: Request, module_uu_id: str, data: DepartmentsPydantic): def modules_update(request: Request, module_uu_id: str, data: DepartmentsPydantic):
from events.events_modules import ModulesEvents
token_dict = parse_token_object_to_dict(request=request) token_dict = parse_token_object_to_dict(request=request)
active_function = getattr(ModulesEvents, "modules_update") return token_dict.available_event(data=data, module_uu_id=module_uu_id, token_dict=token_dict)
return active_function(data=data, module_uu_id=module_uu_id, token_dict=token_dict)
@modules_route.patch( @modules_route.patch(
path="/patch/{module_uu_id}", summary="Patch Modules with given auth levels" path="/patch/{module_uu_id}", summary="Patch Modules with given auth levels"
) )
def modules_patch(request: Request, module_uu_id: str, data: PatchRecord): def modules_patch(request: Request, module_uu_id: str, data: PatchRecord):
from events.events_modules import ModulesEvents
token_dict = parse_token_object_to_dict(request=request) token_dict = parse_token_object_to_dict(request=request)
active_function = getattr(ModulesEvents, "modules_patch") return token_dict.available_event(data=data, module_uu_id=module_uu_id, token_dict=token_dict)
return active_function(data=data, token_dict=token_dict)