This commit is contained in:
Kseninia Mikhaylova 2024-11-20 16:00:51 +03:00
parent bec1968df6
commit 4f871d20f1
2 changed files with 71 additions and 31 deletions

View File

@ -157,29 +157,79 @@ async def tg_intgr_get(request: Request):
logger.info(e) logger.info(e)
return {"status": "error"} return {"status": "error"}
def extract_id(params):
json_strings = params.get("PLACEMENT_OPTIONS", [])
for json_str in json_strings:
try:
data = json.loads(json_str)
if "ID" in data:
return data["ID"]
except json.JSONDecodeError:
print(f"Ошибка: Некорректная JSON-строка - {json_str}")
@app.post("/deal_tab/{deal_id}") def get_task_by_deal(deal_id):
select = [
"ID",
"TITLE",
"RESPONSIBLE_ID",
"CREATED_DATE",
"DEADLINE",
"STATUS",
"GROUP_ID",
]
get_task_hook = f"{WEBHOOK}/tasks.task.list?{'&'.join([f'select[]={s}' for s in select])}&filter[UF_CRM_TASK]=D_{deal_id}"
task_data = requests.get(get_task_hook)
task_data_json = task_data.json()
result = task_data_json["result"]["tasks"]
while len(task_data_json["result"]["tasks"]) == 50 and len(result) < 50 * 4:
limit = (len(result) // 50) * 50
task_data = requests.get(get_task_hook + f"&start={limit}")
task_data_json = task_data.json()
result += task_data_json["result"]["tasks"]
return result
@app.post("/deal_tab")
async def deal_tab(
request: Request,
DOMAIN: str | None = None,
PROTOCOL: str | None = None,
LANG: str | None = None,
APP_SID: str | None = None,
):
try:
body = await request.body()
b_str = body.decode()
result = parse_qs(b_str)
q = [DOMAIN, PROTOCOL, LANG, APP_SID]
deal_id = extract_id(result)
if not deal_id:
raise('not deal id')
deal_id = 49
result = get_task_by_deal(deal_id)
# logger.info(task_data_json["result"]["tasks"])
parts = WEBHOOK.split("/")
domain = f"https://{parts[2]}"
return templates.TemplateResponse(
request=request,
name="deal_tab.html",
context={"tasks": result, "domain": domain},
)
return {"status": "success", "result": task_data_json}
except Exception as e:
logger.error(e)
return {"status": "error"}
@app.post("/widget/deal_tab/{deal_id}")
async def deal_tab(request: Request, deal_id): async def deal_tab(request: Request, deal_id):
try: try:
select = [ result = get_task_by_deal(deal_id)
"ID",
"TITLE",
"RESPONSIBLE_ID",
"CREATED_DATE",
"DEADLINE",
"STATUS",
"GROUP_ID",
]
get_task_hook = f"{WEBHOOK}/tasks.task.list?{'&'.join([f'select[]={s}' for s in select])}&filter[UF_CRM_TASK]=D_{deal_id}"
task_data = requests.get(get_task_hook)
task_data_json = task_data.json()
result = task_data_json["result"]["tasks"]
while len(task_data_json["result"]["tasks"]) == 50 and len(result) < 50 * 4:
limit = (len(result) // 50) * 50
task_data = requests.get(get_task_hook + f"&start={limit}")
task_data_json = task_data.json()
result += task_data_json["result"]["tasks"]
# logger.info(task_data_json["result"]["tasks"]) # logger.info(task_data_json["result"]["tasks"])
parts = WEBHOOK.split("/") parts = WEBHOOK.split("/")
@ -206,16 +256,6 @@ async def handle_widget_post(request: Request):
b_str = body.decode() b_str = body.decode()
result = parse_qs(b_str) result = parse_qs(b_str)
def extract_id(params):
json_strings = params.get("PLACEMENT_OPTIONS", [])
for json_str in json_strings:
try:
data = json.loads(json_str)
if "ID" in data:
return data["ID"]
except json.JSONDecodeError:
print(f"Ошибка: Некорректная JSON-строка - {json_str}")
deal_id = extract_id(result) deal_id = extract_id(result)
if not deal_id: if not deal_id:
raise ("not deal id") raise ("not deal id")

View File

@ -38,7 +38,7 @@ export interface GroupClass {
} }
const loadData = async (deal_id: number) => { const loadData = async (deal_id: number) => {
const res = await $fetch<Data>(`${config.public.apiBase}/deal_tab/${deal_id}`, { method: 'POST' }) const res = await $fetch<Data>(`${config.public.apiBase}/widget/deal_tab/${deal_id}`, { method: 'POST' })
if (res.status == 'success') { if (res.status == 'success') {
data.value = res.result data.value = res.result
formatter.value = res.format formatter.value = res.format