Обновить routers/client.py
This commit is contained in:
parent
ebf5962926
commit
bf84ee2820
|
@ -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")
|
||||
|
||||
|
|
Loading…
Reference in New Issue