77 lines
2.3 KiB
Python
77 lines
2.3 KiB
Python
import requests
|
|
import json
|
|
import traceback
|
|
import sys
|
|
import sap_utilities
|
|
from config_loader import CONFIG
|
|
|
|
###################################################
|
|
def login():
|
|
session = requests.Session()
|
|
|
|
sl_config = CONFIG.service_layer
|
|
hana_config = CONFIG.hana
|
|
|
|
body = {
|
|
"CompanyDB": hana_config.company,
|
|
"UserName": sl_config.username,
|
|
"Password": sl_config.password
|
|
}
|
|
try:
|
|
response = sap_utilities.post(session, "Login", body)
|
|
if response:
|
|
return session
|
|
except Exception as e:
|
|
print(f"❌ Error de conexión al SAP Service Layer (Login): {e}")
|
|
tb = traceback.extract_tb(sys.exc_info()[2])
|
|
print(tb[-1].name)
|
|
return None
|
|
|
|
###################################################
|
|
def logout(session):
|
|
try:
|
|
response = sap_utilities.post(session, "Logout")
|
|
if response:
|
|
return True
|
|
except Exception as e:
|
|
print(f"❌ Error de desconexión del SAP Service Layer (Logout): {e}")
|
|
tb = traceback.extract_tb(sys.exc_info()[2])
|
|
print(tb[-1].name)
|
|
return False
|
|
|
|
###################################################
|
|
def get_by_key(session, endpoint):
|
|
|
|
if not session:
|
|
print("❌ Error: No se pudo iniciar sesión en SAP Service Layer")
|
|
return None
|
|
|
|
recurso = endpoint
|
|
|
|
response = sap_utilities.get(session, recurso)
|
|
if response and response.status_code == 200:
|
|
return response.json()
|
|
|
|
print(f"❌ Error obteniendo datos de {recurso}")
|
|
|
|
return None
|
|
|
|
###################################################
|
|
def update_document(session, recurso, body):
|
|
|
|
if not session:
|
|
print("❌ Error: No se pudo iniciar sesión en SAP Service Layer")
|
|
return None
|
|
|
|
# print(f" 📤 [PATCH] Body enviado a {recurso}:")
|
|
# print(json.dumps(body, indent=2, default=str))
|
|
response = sap_utilities.patch(session, recurso, body)
|
|
if response and response.status_code == 204:
|
|
return response
|
|
|
|
status = response.status_code if response is not None else "Sin respuesta (None)"
|
|
print(f"❌ Error actualizando documento en SAP Service Layer: HTTP {status}")
|
|
|
|
return None
|
|
|
|
################################################### |