import flet as ft import requests from requests.auth import HTTPBasicAuth import csv from globalState import AppState import aiohttp import asyncio def administrators(page: ft.Page): page.title = "Admins" user = AppState.user password = AppState.password url = AppState.url if url.endswith("/"): url = url[:-1] url = f"{url}:1443/api/admins" response = requests.get(url, auth=HTTPBasicAuth(user, password), verify=False) if response.status_code == 200: data = response.json() admins = data['_embedded']['ngcp:admins'] rows = [] try: for admin in admins: rows.append( ft.DataRow( cells=[ ft.DataCell(ft.Text(str(admin['id']))), ft.DataCell(ft.Text(str(admin['reseller_id']))), ft.DataCell(ft.Text(admin['login'])), ft.DataCell(ft.Text(admin['role'])), ft.DataCell(ft.Text(str(admin['is_master']))), ft.DataCell(ft.Text(str(admin['is_active']))), ft.DataCell(ft.Text(str(admin['read_only']))), ft.DataCell(ft.Text(str(admin['show_passwords']))), ft.DataCell(ft.Text(str(admin['can_reset_password']))) ] ) ) table = ft.DataTable( columns=[ ft.DataColumn(ft.Text("#")), ft.DataColumn(ft.Text("Reseller")), ft.DataColumn(ft.Text("Login")), ft.DataColumn(ft.Text("Role")), ft.DataColumn(ft.Text("Master")), ft.DataColumn(ft.Text("Active")), ft.DataColumn(ft.Text("ReadOnly")), ft.DataColumn(ft.Text("Show Passwords")), ft.DataColumn(ft.Text("Can Reset Password")) ], rows=rows ) except: for admin in admins: rows.append( ft.DataRow( cells=[ ft.DataCell(ft.Text(str(admin['id']))), ft.DataCell(ft.Text(str(admin['reseller_id']))), ft.DataCell(ft.Text(admin['login'])), ft.DataCell(ft.Text(str(admin['is_master']))), ft.DataCell(ft.Text(str(admin['is_active']))), ft.DataCell(ft.Text(str(admin['read_only']))), ft.DataCell(ft.Text(str(admin['show_passwords']))), ] ) ) table = ft.DataTable( columns=[ ft.DataColumn(ft.Text("#")), ft.DataColumn(ft.Text("Reseller")), ft.DataColumn(ft.Text("Login")), ft.DataColumn(ft.Text("Master")), ft.DataColumn(ft.Text("Active")), ft.DataColumn(ft.Text("ReadOnly")), ft.DataColumn(ft.Text("Show Passwords")), ], rows=rows ) page.add(table) page.update() else: page.add(ft.Text(f"Error al obtener datos: {response.status_code}")) page.update()