From bf84ee2820b0ba5932c88f09f6ed6144f5933c13 Mon Sep 17 00:00:00 2001 From: Alex55 Date: Thu, 24 Apr 2025 18:52:55 +0300 Subject: [PATCH] =?UTF-8?q?=D0=9E=D0=B1=D0=BD=D0=BE=D0=B2=D0=B8=D1=82?= =?UTF-8?q?=D1=8C=20routers/client.py?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- routers/client.py | 70 ++++++++++++++--------------------------------- 1 file changed, 20 insertions(+), 50 deletions(-) diff --git a/routers/client.py b/routers/client.py index 2912053..610eb3e 100644 --- a/routers/client.py +++ b/routers/client.py @@ -9,10 +9,10 @@ from pydantic import BaseModel from sqlalchemy.orm import Session import json from model.database import get_async_session, Client -from utils.clients import upsert_client, del_jobs, add_jobs, get_applied_jobs, get_filtered_jobs, client_list, get_avtopilot, get_delite, get_update +from utils.clients import upsert_client, del_jobs, add_jobs, get_applied_jobs, get_filtered_jobs, client_list, get_avtopilot, get_delite, get_update, get_users from typing import Union import requests - +import ast import asyncio from types import SimpleNamespace @@ -97,47 +97,19 @@ class update(BaseModel): async def process_client_data( db: Session, data: JsonData, - user_id: str, - first_name: str, - last_name: str, - email_addr: str, - phone_num: str + + ): """Функция для обработки данных в фоне""" - print(f"Получены данные для {first_name} {last_name} с email {email_addr}") - async_session_maker = async_sessionmaker(bind=db.bind, expire_on_commit=False) - async with async_session_maker() as db1, async_session_maker() as db2: - print("Запускаем задачи для обновления и удаления") - client_task = upsert_client(db1, user_id, first_name, last_name, email_addr, phone_num, str(data.json_data)) - del_task = del_jobs(db2, user_id) - - client, _ = await asyncio.gather(client_task, del_task) - - job_level_values = get_filtered_values('job_level', data.json_data) - job_type_values = get_filtered_values('job_type', data.json_data) - location_type_values = get_filtered_values('location_type', data.json_data) + print(f"Получены данные для {data.user_id}") - print("Job Level:", ", ".join(job_level_values)) - print("Job Type:", ", ".join(job_type_values)) - print("Location Type:", ", ".join(location_type_values)) + up = await get_update(db, data) - jobs = await get_filtered_jobs( - db, - user_job_titles=["3D Modeler,3D Printing Technician,3D Visualizer"], - minimum_annual_salary=None, - salary_currency=None, - user_location_type=None, - user_locations=["Burnaby, Canada", "Vancouver, Canada", "Toronto, Canada"], - user_levels=["Mid", "Senior", "Manager"], - user_job_types=["Part-Time", "Permanent"] - ) - - for job in jobs: - print(job.job_title, job.location, job.job_level, job.job_type) - - ads = await add_jobs(db, user_id) - get_jobs = await get_applied_jobs(db, user_id) + del_task = await del_jobs(db, data.user_id) + user_data = ast.literal_eval(up.json_data) + ads = await add_jobs(db, data.user_id, user_data) + # get_jobs = await get_applied_jobs(db, user_id) # [ ]: NOTE Рабоиа в фоне BackgroundTasks process_client_data() @router.post("/client/", summary="Обновления json_data и переобновление вакансий", @@ -169,18 +141,16 @@ async def client( email_addr = data.json_data['email_addr'] user_id = data.json_data['user_id'] phone_num = data.json_data['phone_num'] - + print(user_id) + data = SimpleNamespace(user_id=user_id) # Добавляем фоновые задачи - # background_tasks.add_task( - # process_client_data, - # db=db, - # data=data, - # user_id=user_id, - # first_name=first_name, - # last_name=last_name, - # email_addr=email_addr, - # phone_num=phone_num - # ) + background_tasks.add_task( + process_client_data, + db=db, + data=data, + + + ) except KeyError as e: raise HTTPException(status_code=400, detail=f"Missing required field: {e}") @@ -266,7 +236,7 @@ async def client( @router.post("/client_update", summary="Обновления клиента", description="Этот эндпоинт получает ID пользователя, переходит по ссылки что бы получить json_data") async def client_update(data: update, x_api_key: str = Header(...), db: Session = Depends(get_async_session)): - + print(f"22222222{data}") if x_api_key != "4545454": raise HTTPException(status_code=403, detail="Invalid API Key")