diff --git a/scripts/fill_sale_codes.py b/scripts/fill_sale_codes.py new file mode 100644 index 0000000..5666b35 --- /dev/null +++ b/scripts/fill_sale_codes.py @@ -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()