init defaults completed

This commit is contained in:
2024-11-10 20:14:13 +03:00
parent aeda315119
commit c42a19c262
37 changed files with 582 additions and 308 deletions

View File

@@ -5,16 +5,14 @@ from fastapi.exceptions import HTTPException
from middlewares.token_middleware import AuthHeaderMiddleware
from application.create_file import create_app
from application.app_runner_init import create_endpoints_from_api_functions
from handlers_exception import (
exception_handler_http,
exception_handler_exception,
)
from prometheus_fastapi_instrumentator import Instrumentator
# from prometheus_client import Counter, Histogram
import routers
app = create_app()
app = create_app(routers=routers)
Instrumentator().instrument(app=app).expose(app=app)
app.add_middleware(
@@ -30,7 +28,6 @@ app.add_middleware(AuthHeaderMiddleware)
app.add_exception_handler(HTTPException, exception_handler_http)
app.add_exception_handler(Exception, exception_handler_exception)
create_endpoints_from_api_functions(api_app=app)
if __name__ == "__main__":
uvicorn_config = {

View File

@@ -1,34 +0,0 @@
from databases import EndpointRestriction
def create_endpoints_from_api_functions(api_app):
for route in api_app.routes:
route_path, route_summary = (
str(getattr(route, "path")),
str(getattr(route, "name")) or "",
)
# if route_path in Config.INSECURE_PATHS:
# continue
# print('route_path ', route_path, 'route_summary', route_summary)
create_dict = dict(
is_confirmed=True,
active=True,
deleted=False,
is_notification_send=True,
)
methods = [method.lower() for method in getattr(route, "methods")]
for route_method in methods:
restriction = EndpointRestriction.find_or_create(
**dict(
endpoint_method=route_method,
endpoint_name=route_path,
endpoint_desc=route_summary.replace("_", " "),
endpoint_function=route_summary,
**create_dict,
)
)
if not restriction.is_found:
restriction.endpoint_code = f"AR{str(restriction.id).zfill(3)}"
restriction.save()
return

View File

@@ -1,11 +1,10 @@
def create_app():
def create_app(routers):
from fastapi import FastAPI
from fastapi.responses import JSONResponse
from fastapi.openapi.utils import get_openapi
from fastapi.responses import RedirectResponse
from api_configs import Config
import routers
api_app = FastAPI(title=str(Config.TITLE), default_response_class=JSONResponse)

View File

@@ -1,4 +1,5 @@
arrow
requests
Deprecated
fastapi
python-dotenv

View File

@@ -1 +1,89 @@
__all__ = []
from .authentication.router import login_route
from .people.router import people_router
from .users.router import user_route
from .company.company.router import company_route
from .company.department.router import department_route
from .company.duty.router import duty_route
from .company.duties.router import duties_route
from .building.build.router import build_route
from .building.buildparts.router import build_parts_route
from .building.buildarea.router import build_area_route
from .building.buildsites.router import build_sites_route
from .building.buildtypes.router import build_types_route
from .building.livingspaces.router import build_living_space
from .decision_book.decision_book.router import build_decision_book_route
from .decision_book.decision_book_person.router import (
build_decision_book_people_route,
)
from .decision_book.decision_book_items.router import (
build_decision_book_items_route,
)
from .project_decision_book.project_decision_book.router import (
build_project_decision_book_route,
)
from .project_decision_book.project_decision_book_person.router import (
build_project_decision_book_person_route,
)
from .api.router import internal_route
from .events.events.router import event_route
from .company.staff.router import staff_route
from .company.employee.router import employee_route
from .events.events.bind_events_router import bind_events_route
from .events.models.router import model_route
from .events.models.bind_events_router import bind_modules_route
from .events.modelentities.router import model_entities_route
from .events.modules.router import modules_route
from .events.services.bind_services_router import bind_services_route
from .events.services.router import services_route
from .rules.router import endpoint_restriction_route
from .address.address.router import address_router
from .address.post_code.router import post_code_router
from .application.enums_and_drops.router import enums_route
from .application.occupants.router import occupant_types_route
from .decision_book.decision_book_invitations.router import build_decision_book_invitations
__all__ = [
"enums_route",
"occupant_types_route",
"internal_route",
"address_router",
"post_code_router",
"login_route",
"duty_route",
"duties_route",
"people_router",
"user_route",
"company_route",
"department_route",
"build_route",
"build_parts_route",
"build_sites_route",
"build_area_route",
"build_living_space",
"build_decision_book_route",
"build_decision_book_people_route",
"build_decision_book_items_route",
"build_project_decision_book_route",
"staff_route",
"employee_route",
"build_types_route",
"bind_events_route",
"event_route",
"model_route",
"model_entities_route",
"modules_route",
"bind_services_route",
"bind_modules_route",
"services_route",
"build_project_decision_book_person_route",
"endpoint_restriction_route",
"build_decision_book_invitations",
]

View File

@@ -39,7 +39,7 @@ class BankReceive(BaseModel):
summary="Receive isbank xls service from mail reader service",
)
def is_bank_retrieve_account_records(request: Request, bank_data: ApiReceive):
from database_sql_models import AccountRecords
from databases import AccountRecords
data_dict = bank_data.model_dump()
data_bulk = json.loads(zlib.decompress(b64decode(data_dict["data"])))

View File

@@ -0,0 +1,35 @@
from fastapi.routing import APIRouter
from fastapi.requests import Request
from api_services.redis.auth_actions.token import parse_token_object_to_dict
from api_validations.validations_request import (
RegisterModules2Occupant,
RegisterModules2Employee,
PatchRecord,
)
bind_modules_route = APIRouter(prefix="/bind/modules", tags=["Binds"])
bind_modules_route.include_router(bind_modules_route, include_in_schema=True)
@bind_modules_route.post(path="/occupant", summary="Register Event to Occupant")
def bind_events_occupant(request: Request, data: RegisterModules2Occupant):
token_dict = parse_token_object_to_dict(request=request)
return token_dict.available_event(data=data, token_dict=token_dict)
@bind_modules_route.post(path="/employee", summary="Register Event to Employee")
def bind_events_employee(request: Request, data: RegisterModules2Employee):
token_dict = parse_token_object_to_dict(request=request)
return token_dict.available_event(data=data, token_dict=token_dict)
@bind_modules_route.patch(
path="/patch/{event_uu_id}", summary="Patch Bind Events with given auth levels"
)
def bind_events_patch(request: Request, event_uu_id: str, data: PatchRecord):
token_dict = parse_token_object_to_dict(request=request)
return token_dict.available_event(
data=data, event_uu_id=event_uu_id, token_dict=token_dict
)