from globalState import AppState import openpyxl import requests from requests.auth import HTTPBasicAuth def download_all(): user = AppState.user password = AppState.password url = AppState.url base_url = url.rstrip("/") endpoints = { 'admins': { 'url': f"{base_url}:1443/api/admins", 'headers': ['ID', 'Reseller_id', 'Login', 'Role', 'Is_Master', 'Is_Active', 'Read_Only', 'Show_Passwords', 'Can_Reset_Password'] }, 'customers': { 'url': f"{base_url}:1443/api/customers", 'headers': ["id", "external_id", "contact_id", "billing_profile_id", "status"] }, 'domains': { 'url': f"{base_url}:1443/api/domains", 'headers': ["id", "reseller_id", "domain"] }, 'peeringgroups': { 'url': f"{base_url}:1443/api/peeringgroups", 'headers': ["id", "contract_id", "name", "priority", "description"] }, 'rewriterulesets': { 'url': f"{base_url}:1443/api/rewriterulesets", 'headers': ["id", "reseller_id", "name", "description"] }, 'subscribers': { 'url': f"{base_url}:1443/api/subscribers", 'headers': ['id', "customer_id", "email", "username", "domain", "uuid", "status", "subscriber_number"] } } wb = openpyxl.Workbook() for sheet_name, info in endpoints.items(): url = info['url'] headers = info['headers'] try: response = requests.get(url, auth=HTTPBasicAuth(user, password), verify=False) response.raise_for_status() data = response.json()['_embedded'].get(f'ngcp:{sheet_name}', []) ws = wb.create_sheet(title=sheet_name) ws.append(headers) for item in data: row = [] for header in headers: if header == "subscriber_number" and sheet_name == "subscribers": ac = item.get('primary_number', {}).get('ac', '') cc = item.get('primary_number', {}).get('cc', '') sn = item.get('primary_number', {}).get('sn', '') value = f"{ac}{cc}{sn}" else: value = item.get(header.lower(), '') row.append(value) ws.append(row) except requests.exceptions.RequestException as e: print(f"Error al acceder a {url}: {e}") if 'Sheet' in wb.sheetnames: wb.remove(wb['Sheet']) wb.save('data.xlsx')