feat(#46): add fill_codes client script
This commit is contained in:
80
scripts/fill_sale_codes.py
Normal file
80
scripts/fill_sale_codes.py
Normal file
@@ -0,0 +1,80 @@
|
|||||||
|
#!/usr/bin/env python3
|
||||||
|
import argparse
|
||||||
|
import getpass
|
||||||
|
import sys
|
||||||
|
|
||||||
|
import requests
|
||||||
|
|
||||||
|
|
||||||
|
TOKEN_URL = "/api/token/"
|
||||||
|
FILL_SALES_CODES_URL = "/don_confiao/api/sales/fill_codes/"
|
||||||
|
FILL_CATALOG_SALES_CODES_URL = "/don_confiao/api/catalog_sales/fill_codes/"
|
||||||
|
|
||||||
|
|
||||||
|
def get_credentials():
|
||||||
|
username = input("Usuario: ")
|
||||||
|
password = getpass.getpass("Contraseña: ")
|
||||||
|
return username, password
|
||||||
|
|
||||||
|
|
||||||
|
def get_token(domain, username, password):
|
||||||
|
url = domain.rstrip("/") + TOKEN_URL
|
||||||
|
response = requests.post(
|
||||||
|
url, json={"username": username, "password": password}
|
||||||
|
)
|
||||||
|
if response.status_code != 200:
|
||||||
|
print(
|
||||||
|
f"Error al obtener token: {response.status_code} {response.text}",
|
||||||
|
file=sys.stderr,
|
||||||
|
)
|
||||||
|
sys.exit(1)
|
||||||
|
return response.json()["access"]
|
||||||
|
|
||||||
|
|
||||||
|
def fill_codes(domain, token, url):
|
||||||
|
headers = {"Authorization": f"Bearer {token}"}
|
||||||
|
full_url = domain.rstrip("/") + url
|
||||||
|
response = requests.post(full_url, headers=headers)
|
||||||
|
if response.status_code != 200:
|
||||||
|
print(
|
||||||
|
f"Error al llenar códigos ({url}): {response.status_code} {response.text}",
|
||||||
|
file=sys.stderr,
|
||||||
|
)
|
||||||
|
sys.exit(1)
|
||||||
|
return response.json()
|
||||||
|
|
||||||
|
|
||||||
|
def main():
|
||||||
|
parser = argparse.ArgumentParser(
|
||||||
|
description="Asigna un código único a todas las ventas y pedidos que lo requieran."
|
||||||
|
)
|
||||||
|
parser.add_argument(
|
||||||
|
"domain", help="Dominio del backend (ej: http://localhost:8000)"
|
||||||
|
)
|
||||||
|
args = parser.parse_args()
|
||||||
|
|
||||||
|
username, password = get_credentials()
|
||||||
|
token = get_token(args.domain, username, password)
|
||||||
|
print("Token obtenido correctamente.")
|
||||||
|
|
||||||
|
print("Asignando códigos a ventas...")
|
||||||
|
sales_result = fill_codes(args.domain, token, FILL_SALES_CODES_URL)
|
||||||
|
print(f" [OK] Ventas actualizadas: {sales_result['sales_updated']}")
|
||||||
|
|
||||||
|
print("Asignando códigos a pedidos de catálogo...")
|
||||||
|
catalog_result = fill_codes(
|
||||||
|
args.domain, token, FILL_CATALOG_SALES_CODES_URL
|
||||||
|
)
|
||||||
|
print(
|
||||||
|
f" [OK] Pedidos de catálogo actualizados: "
|
||||||
|
f"{catalog_result['catalog_sales_updated']}"
|
||||||
|
)
|
||||||
|
|
||||||
|
print(
|
||||||
|
f"\nResumen: {sales_result['sales_updated']} ventas, "
|
||||||
|
f"{catalog_result['catalog_sales_updated']} pedidos de catálogo actualizados"
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
main()
|
||||||
Reference in New Issue
Block a user