bemade-addons/unifi_integration/views/unifi_site_views.xml
2025-05-05 10:29:07 -04:00

523 lines
28 KiB
XML

<?xml version="1.0" encoding="utf-8"?>
<odoo>
<!-- UniFi Site List View -->
<record id="view_unifi_site_list" model="ir.ui.view">
<field name="name">unifi.site.list</field>
<field name="model">unifi.site</field>
<field name="arch" type="xml">
<list string="UniFi Sites" js_class="unifi_site_list">
<field name="name"/>
<field name="site_id"/>
<field name="api_type"/>
<field name="active"/>
<field name="last_sync" optional="show"/>
<field name="create_date" optional="show"/>
<button name="action_import_site" string="Importer" type="object" icon="fa-download" class="oe_highlight"/>
</list>
</field>
</record>
<!-- UniFi Site Form View -->
<record id="view_unifi_site_form" model="ir.ui.view">
<field name="name">unifi.site.form</field>
<field name="model">unifi.site</field>
<field name="arch" type="xml">
<form string="UniFi Site">
<sheet>
<div class="oe_button_box" name="button_box">
<!-- Boutons statistiques communs à tous les types d'API -->
<button name="action_view_api_logs"
type="object"
class="oe_stat_button"
icon="fa-history">
<div class="o_field_widget o_stat_info">
<span class="o_stat_text">API Logs</span>
</div>
</button>
<button name="action_view_sync_jobs"
type="object"
class="oe_stat_button"
icon="fa-refresh">
<div class="o_field_widget o_stat_info">
<span class="o_stat_text">Sync Jobs</span>
</div>
</button>
<!-- Boutons spécifiques au Controller -->
<button name="action_view_networks"
type="object"
class="oe_stat_button"
icon="fa-sitemap"
invisible="api_type != 'controller'">
<field name="network_count" widget="statinfo" string="Networks"/>
</button>
<button name="action_view_devices"
type="object"
class="oe_stat_button"
icon="fa-server"
invisible="api_type != 'controller'">
<field name="device_count" widget="statinfo" string="Devices"/>
</button>
<button name="action_view_users"
type="object"
class="oe_stat_button"
icon="fa-users"
invisible="api_type != 'controller'">
<field name="user_count" widget="statinfo" string="Users"/>
</button>
<button name="action_view_vlans"
type="object"
class="oe_stat_button"
icon="fa-tags"
invisible="api_type != 'controller'">
<field name="vlan_count" widget="statinfo" string="VLANs"/>
</button>
<button name="action_view_port_forwards"
type="object"
class="oe_stat_button"
icon="fa-exchange"
invisible="api_type != 'controller'">
<field name="port_forward_count" widget="statinfo" string="Port Forwards"/>
</button>
<button name="action_view_system_info"
type="object"
class="oe_stat_button"
icon="fa-info-circle"
invisible="api_type != 'controller'">
<field name="system_info_count" widget="statinfo" string="System Info"/>
</button>
<button name="action_view_dns"
type="object"
class="oe_stat_button"
icon="fa-globe"
invisible="api_type != 'controller'">
<field name="dns_count" widget="statinfo" string="DNS Entries"/>
</button>
<button name="action_view_vpn"
type="object"
class="oe_stat_button"
icon="fa-lock"
invisible="api_type != 'controller'">
<field name="vpn_count" widget="statinfo" string="VPN"/>
</button>
<!-- Boutons spécifiques au Site Manager -->
<button name="action_view_firewall_rules"
type="object"
class="oe_stat_button"
icon="fa-shield">
<field name="firewall_rule_count" widget="statinfo" string="Règles pare-feu"/>
</button>
</div>
<widget name="web_ribbon" title="Inactive" bg_color="text-bg-danger" invisible="active"/>
<div class="oe_title">
<h1 class="d-flex flex-row">
<field name="name" class="o_text_overflow" placeholder="Site Name"/>
</h1>
</div>
<group>
<group>
<field name="site_id"/>
<field name="api_type" widget="radio"/>
<field name="active" invisible="1"/>
</group>
<group>
<field name="timestamp" readonly="1"/>
<field name="last_sync" readonly="1"/>
<field name="import_status" readonly="1"/>
</group>
</group>
<!-- Informations de connexion pour Controller API -->
<group string="Informations de connexion" invisible="api_type != 'controller'">
<group>
<field name="host" required="api_type == 'controller'"/>
<field name="port" required="api_type == 'controller'"/>
</group>
<group>
<field name="username" required="api_type == 'controller'"/>
<field name="password" password="True" required="api_type == 'controller'"/>
<field name="verify_ssl"/>
</group>
</group>
<!-- Informations de connexion pour Site Manager API -->
<group string="Informations de connexion" invisible="api_type != 'site_manager'">
<group>
<field name="api_key" required="api_type == 'site_manager'"/>
</group>
<group>
<field name="mfa_enabled" invisible="api_type != 'site_manager'"/>
<field name="mfa_token" password="True"
invisible="api_type != 'site_manager' or not mfa_enabled"
required="api_type == 'site_manager' and mfa_enabled"/>
</group>
</group>
<notebook>
<page string="Site Information" name="site_info">
<group>
<field name="description" placeholder="Description of this site"/>
<field name="address" placeholder="Physical address of this site"/>
</group>
</page>
<!-- Onglets spécifiques au Controller -->
<page string="Networks" name="networks" invisible="api_type != 'controller'">
<group>
<div class="w-100 mb-2">
<button name="action_sync_networks" string="Synchronize Networks" type="object" class="btn btn-secondary"/>
</div>
<field name="network_ids" readonly="1" nolabel="1">
<list>
<field name="name"/>
<field name="purpose"/>
<field name="subnet"/>
</list>
</field>
</group>
</page>
<page string="Devices" name="devices" invisible="api_type != 'controller'">
<group>
<div class="w-100 mb-2">
<button name="action_sync_devices" string="Synchronize Devices" type="object" class="btn btn-secondary"/>
</div>
<field name="device_ids" readonly="1" nolabel="1">
<list>
<field name="name"/>
<field name="model"/>
<field name="ip_address"/>
</list>
</field>
</group>
</page>
<page string="Users" name="users" invisible="api_type != 'controller'">
<group>
<div class="w-100 mb-2">
<button name="action_sync_users" string="Synchronize Users" type="object" class="btn btn-secondary"/>
</div>
<field name="user_ids" readonly="1" nolabel="1">
<list>
<field name="name"/>
<field name="email"/>
</list>
</field>
</group>
</page>
<page string="WiFi Networks" name="wifi_networks" invisible="api_type != 'controller'">
<group>
<div class="w-100 mb-2">
<button name="action_sync_wifi" string="Synchronize WiFi Networks" type="object" class="btn btn-secondary"/>
</div>
<field name="wifi_ids" readonly="1" nolabel="1">
<list>
<field name="name"/>
<field name="security"/>
<field name="band"/>
<field name="is_guest"/>
<field name="enabled"/>
</list>
</field>
</group>
</page>
<page string="VLANs" name="vlans_controller" invisible="api_type != 'controller'">
<group>
<div class="w-100 mb-2">
<button name="action_sync_vlans" string="Synchronize VLANs" type="object" class="btn btn-secondary"/>
</div>
<field name="vlan_ids" readonly="1" nolabel="1">
<list>
<field name="name"/>
<field name="vlan_id"/>
</list>
</field>
</group>
</page>
<page string="Firewall Rules" name="firewall_rules_controller" invisible="api_type != 'controller'">
<group>
<div class="w-100 mb-2">
<button name="action_sync_firewall_rules" string="Synchronize Firewall Rules" type="object" class="btn btn-secondary"/>
</div>
<field name="firewall_rule_ids" readonly="1" nolabel="1">
<list>
<field name="name"/>
<field name="rule_type"/>
</list>
</field>
</group>
</page>
<page string="Port Forwarding" name="port_forwarding_controller" invisible="api_type != 'controller'">
<group>
<div class="w-100 mb-2">
<button name="action_sync_port_forwards" string="Synchronize Port Forwards" type="object" class="btn btn-secondary"/>
</div>
<field name="port_forward_ids" readonly="1" nolabel="1">
<list>
<field name="name"/>
<field name="fwd_port"/>
<field name="dst_port"/>
</list>
</field>
</group>
</page>
<page string="Routing" name="routing_controller" invisible="api_type != 'controller'">
<group>
<div class="w-100 mb-2">
<button name="action_sync_routing" string="Synchronize Routing" type="object" class="btn btn-secondary"/>
</div>
<field name="routing_config_ids" readonly="1" nolabel="1">
<list>
<field name="name"/>
</list>
</field>
</group>
</page>
<page string="DNS" name="dns_controller" invisible="api_type != 'controller'">
<group>
<div class="w-100 mb-2">
<button name="action_sync_dns" string="Synchronize DNS" type="object" class="btn btn-secondary"/>
</div>
<field name="dns_ids" readonly="1" nolabel="1">
<list>
<field name="hostname"/>
<field name="ip_address"/>
</list>
</field>
</group>
</page>
<page string="System Info" name="system_info_controller" invisible="api_type != 'controller'">
<group>
<div class="w-100 mb-2">
<button name="action_sync_system_info" string="Synchronize System Info" type="object" class="btn btn-secondary"/>
</div>
<field name="system_info_ids" readonly="1" nolabel="1">
<list>
<field name="hostname"/>
<field name="version"/>
</list>
</field>
</group>
</page>
<!-- Onglets spécifiques au Site Manager -->
<page string="VLANs" name="vlans" invisible="api_type != 'site_manager'">
<group>
<div class="w-100 mb-2">
<button name="action_sync_vlans" string="Synchronize VLANs" type="object" class="btn btn-secondary"/>
</div>
<field name="vlan_ids" readonly="1" nolabel="1">
<list>
<field name="name"/>
<field name="vlan_id"/>
</list>
</field>
</group>
</page>
<page string="Firewall Rules" name="firewall_rules" invisible="api_type != 'site_manager'">
<group>
<div class="w-100 mb-2">
<button name="action_sync_firewall_rules" string="Synchronize Firewall Rules" type="object" class="btn btn-secondary"/>
</div>
<field name="firewall_rule_ids" readonly="1" nolabel="1">
<list>
<field name="name"/>
<field name="rule_type"/>
</list>
</field>
</group>
</page>
<page string="Port Forwarding" name="port_forwarding" invisible="api_type != 'site_manager'">
<group>
<div class="w-100 mb-2">
<button name="action_sync_port_forwards" string="Synchronize Port Forwards" type="object" class="btn btn-secondary"/>
</div>
<field name="port_forward_ids" readonly="1" nolabel="1">
<list>
<field name="name"/>
<field name="fwd_port"/>
<field name="dst_port"/>
</list>
</field>
</group>
</page>
<page string="Routing" name="routing" invisible="api_type != 'site_manager'">
<group>
<div class="w-100 mb-2">
<button name="action_sync_routing" string="Synchronize Routing" type="object" class="btn btn-secondary"/>
</div>
<field name="routing_config_ids" readonly="1" nolabel="1">
<list>
<field name="name"/>
</list>
</field>
</group>
</page>
<page string="DNS" name="dns" invisible="api_type != 'site_manager'">
<group>
<div class="w-100 mb-2">
<button name="action_sync_dns" string="Synchronize DNS" type="object" class="btn btn-secondary"/>
</div>
<field name="dns_ids" readonly="1" nolabel="1">
<list>
<field name="hostname"/>
<field name="ip_address"/>
</list>
</field>
</group>
</page>
<page string="System Info" name="system_info" invisible="api_type != 'site_manager'">
<group>
<div class="w-100 mb-2">
<button name="action_sync_system_info" string="Synchronize System Info" type="object" class="btn btn-secondary"/>
</div>
<field name="system_info_ids" readonly="1" nolabel="1">
<list>
<field name="hostname"/>
<field name="version"/>
</list>
</field>
</group>
</page>
<page string="DNS Config" name="dns_config">
<group>
<field name="dns_config_ids" readonly="1" nolabel="1">
<list>
<field name="site_id"/>
<field name="enabled"/>
<field name="filters_enabled"/>
<field name="custom_dns"/>
<field name="forwarding_enabled"/>
</list>
</field>
</group>
</page>
<page string="Auth Sessions" name="auth_sessions">
<group>
<field name="auth_session_id" readonly="1"/>
</group>
</page>
<page string="Settings" name="settings">
<group>
<group string="API Connection Settings" name="api_settings">
<field name="verify_ssl"/>
<field name="timeout" widget="float_time"/>
<field name="max_retries"/>
</group>
<group string="Sync Settings" name="sync_settings">
<field name="auto_sync"/>
<field name="sync_interval" invisible="not auto_sync"/>
<div class="text-muted o_row ps-1" invisible="not auto_sync">
<i class="fa fa-info-circle"/> L'automatisation s'exécutera tous les <field name="sync_interval" class="oe_inline" nolabel="1"/> minutes
</div>
<field name="last_update" readonly="1"/>
</group>
</group>
<group>
<group string="Controller API Settings" invisible="api_type != 'controller'">
<field name="controller_type" widget="radio"/>
<button string="Configure Controller API" name="action_configure_controller" type="object" class="btn-primary"/>
</group>
<group string="Site Manager API Settings" invisible="api_type != 'site_manager'">
<button string="Configure Site Manager API" name="action_configure_site_manager" type="object" class="btn-primary"/>
</group>
</group>
</page>
<page string="Sync Jobs" name="sync_jobs">
<field name="sync_job_ids" readonly="1" nolabel="1">
<list>
<field name="name"/>
<field name="state"/>
<field name="start_time"/>
<field name="end_time"/>
<field name="duration" widget="float_time"/>
</list>
</field>
</page>
<page string="API Logs" name="api_logs">
<field name="api_log_ids" readonly="1" nolabel="1">
<list>
<field name="create_date"/>
<field name="api_type"/>
<field name="method"/>
<field name="endpoint"/>
<field name="status_code"/>
<field name="success"/>
<field name="duration" widget="float_time"/>
</list>
</field>
</page>
<!-- Page temporairement désactivée pour permettre la mise à niveau du module
<page string="Données brutes" name="raw_data" groups="base.group_system">
<field name="raw_data" widget="ace" options="{'language': 'json'}" invisible="1"/>
<field name="raw_data_json" readonly="1"/>
</page>
-->
</notebook>
</sheet>
<chatter>
<field name="message_follower_ids"/>
<field name="message_ids"/>
</chatter>
</form>
</field>
</record>
<!-- Import UniFi Site Form View -->
<record id="view_unifi_site_import_form" model="ir.ui.view">
<field name="name">unifi.site.import.form</field>
<field name="model">unifi.site</field>
<field name="arch" type="xml">
<form string="Import UniFi Site">
<group>
<field name="name" required="1" placeholder="Site Name"/>
<field name="site_id" required="1" default="default"/>
<field name="api_type" widget="radio" required="1"/>
</group>
<group invisible="api_type != 'controller'">
<group string="Controller API Settings">
<button string="Configure Controller API" name="action_configure_controller" type="object" class="btn-primary"/>
</group>
</group>
<group invisible="api_type != 'site_manager'">
<group string="Site Manager API Settings">
<button string="Configure Site Manager API" name="action_configure_site_manager" type="object" class="btn-primary"/>
</group>
</group>
<footer>
<button string="Import" name="action_test_connection" type="object" class="btn-primary"/>
<button string="Cancel" class="btn-secondary" special="cancel"/>
</footer>
</form>
</field>
</record>
<!-- Actions moved to unifi_actions.xml -->
</odoo>