old ver
This commit is contained in:
parent
bec1968df6
commit
4f871d20f1
100
app/main.py
100
app/main.py
|
@ -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}")
|
||||||
|
|
||||||
|
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"]
|
||||||
|
|
||||||
@app.post("/deal_tab/{deal_id}")
|
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")
|
||||||
|
|
|
@ -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
|
||||||
|
|
Loading…
Reference in New Issue