diff --git a/site/app.py b/site/app.py index d8c5da6..fff6b97 100644 --- a/site/app.py +++ b/site/app.py @@ -152,25 +152,31 @@ class ContractsApp: mime = mimeutil.guess_mime(filename) or "application/octet-stream" cid = data.get("cid") - conn = None - if cid: - contract_id = cid - else: - conn, err = db.connect() - if err: - return jsonify({"error": f"БД: {err}"}), 500 + # Всегда одно соединение + conn, err = db.connect() + if err: + return jsonify({"error": f"БД: {err}"}), 500 + try: cur = conn.cursor() - cur.execute( - "INSERT INTO contracts (number, client) VALUES (%s, %s) RETURNING id", - ("б/н " + __import__("datetime").datetime.now().strftime("%Y%m%d-%H%M"), ""), - ) - contract_id = cur.fetchone()[0] - conn.commit() + if cid: + contract_id = cid + else: + cur.execute( + "INSERT INTO contracts (number, client) VALUES (%s, %s) RETURNING id", + ("б/н " + __import__("datetime").datetime.now().strftime("%Y%m%d-%H%M"), ""), + ) + contract_id = cur.fetchone()[0] - doc_id = _save_file_to_db(filename, file_bytes, mime, str(contract_id), conn=conn) - if conn: + doc_id = _save_file_to_db(filename, file_bytes, mime, str(contract_id), conn=conn) + conn.commit() cur.close() + except Exception as e: + try: conn.rollback() + except: pass + raise e + finally: db.put_conn(conn) + return jsonify({"contract_id": str(contract_id), "doc_id": str(doc_id) if doc_id else None}) # ── Чанковая загрузка ────────────────────────────────────── diff --git a/site/templates/upload.html b/site/templates/upload.html index b187027..4e92644 100644 --- a/site/templates/upload.html +++ b/site/templates/upload.html @@ -59,7 +59,7 @@