wag-managment-api-service-v.../databases/no_sql_models/login_handlers.py

89 lines
2.9 KiB
Python

# from loggers.loggers import LoginLogger
def get_menu_from_mongo(user_id, company_name):
from databases.no_sql_models.mongo_database import MongoQuery
mongo = MongoQuery(
table_name=company_name.replace(" ", ""), database_name="mongo_database"
)
mongo_dict = mongo.parse_json(mongo.get_one(match=user_id, field="user_id")) or {}
return mongo_dict.get("menu", [])
def load_user_with_erp_details(found_user, access_dict: dict = None):
duties = []
employee = found_user.person.employee
duty_dict = {}
try:
duty_dict = employee.duty.get_dict(
include=["duty_name", "duty_code", "duty_description"]
)
duty_dict["buildings"] = []
duty_dict["response_buildings"] = []
duty_dict["department"] = employee.duty.department.get_dict(
include=["department_name", "department_code"]
)
duty_dict["company"] = employee.duty.department.company.get_dict(
include=["formal_name", "public_name", "tax_no", "default_lang_type"]
)
except Exception as e:
# LoginLogger.log_exception(
# {
# "exc": e,
# "user": found_user.uu_id,
# "function": "load_user_with_erp_details",
# }
# )
err = e
print("MongoQuery load_user_with_erp_details", err)
for building in list(set(employee.duty.department.company.response_buildings)):
build_parts = []
for part in building.parts:
build_parts.append(
part.get_dict(
include=["uu_id", "part_name", "part_code", "part_description"]
)
)
duty_dict["response_buildings"].append(
{
"build": building.get_dict(include=["build_name", "uu_id"]),
"parts": build_parts,
}
)
for building in list(set(employee.duty.department.company.buildings)):
build_parts = []
for part in building.parts:
build_parts.append(
part.get_dict(
include=[
"uu_id",
"part_name",
"part_code",
"part_description",
]
)
)
duty_dict["buildings"].append(
{
"build": building.get_dict(include=["build_name", "uu_id"]),
"parts": build_parts,
}
)
duties.append(duty_dict)
return_dict = access_dict if access_dict else {}
return_dict.update(
{
"data": {
"profile": found_user.get_dict(),
"employee_info": duties,
"menu": get_menu_from_mongo(
found_user.id,
company_name=duty_dict.get("company", {}).get("public_name", ""),
),
},
}
)
return return_dict