Files
shcool/odoosh_connector/views/res_users_views.xml
T
2026-09-10 19:36:08 +08:00

119 lines
6.3 KiB
XML

<?xml version="1.0" encoding="utf-8"?>
<odoo>
<!-- User form: the Lab Environment tab holds every platform permission; edit and it syncs -->
<record id="view_users_form_odoosh" model="ir.ui.view">
<field name="name">res.users.form.inherit.odoosh</field>
<field name="model">res.users</field>
<field name="inherit_id" ref="base.view_users_form"/>
<field name="arch" type="xml">
<xpath expr="//notebook" position="inside">
<page string="Lab Environment" name="odoosh"
groups="base.group_system,odoosh_connector.group_odoosh_teacher">
<group>
<group string="Synchronisation">
<field name="odoosh_sync_enabled"/>
<field name="odoosh_sync_state"/>
<field name="odoosh_synced_at"/>
<field name="odoosh_platform_username"/>
</group>
<group string="Actions">
<div colspan="2" class="d-flex gap-2 flex-wrap">
<button name="action_odoosh_sync_now" type="object" string="Sync now"
class="btn-primary" icon="fa-refresh" invisible="not odoosh_sync_enabled"/>
</div>
<div colspan="2" class="text-muted small mt-2">
New users are synced automatically. Switching this off stops every push for
this user and leaves the platform account as it is.
</div>
</group>
</group>
<group string="Last error" invisible="not odoosh_last_error">
<field name="odoosh_last_error" nolabel="1" readonly="1"/>
</group>
<group invisible="not odoosh_sync_enabled">
<group string="Identity and roles">
<field name="odoosh_username" placeholder="Empty = derived from the login"/>
<field name="odoosh_tenant" placeholder="Empty = default organisation"/>
<field name="odoosh_role"/>
<field name="odoosh_tenant_role"/>
</group>
<group string="Permissions and quotas">
<field name="odoosh_shell_enabled"/>
<field name="odoosh_can_use_enterprise"/>
<field name="odoosh_auto_provision"/>
<field name="odoosh_max_envs"/>
<field name="odoosh_max_dbs"/>
</group>
<group string="Platform menus">
<field name="odoosh_menu_dashboard"/>
<field name="odoosh_menu_repos"/>
<field name="odoosh_menu_ai"/>
<field name="odoosh_menu_backups"/>
</group>
</group>
</page>
</xpath>
</field>
</record>
<record id="view_users_tree_odoosh" model="ir.ui.view">
<field name="name">res.users.list.inherit.odoosh</field>
<field name="model">res.users</field>
<field name="inherit_id" ref="base.view_users_tree"/>
<field name="arch" type="xml">
<xpath expr="//field[@name='login_date']" position="after">
<field name="odoosh_sync_enabled" optional="hide"/>
<field name="odoosh_sync_state" optional="hide"/>
<field name="odoosh_tenant_role" optional="hide"/>
</xpath>
</field>
</record>
<record id="view_users_search_odoosh" model="ir.ui.view">
<field name="name">res.users.search.inherit.odoosh</field>
<field name="model">res.users</field>
<field name="inherit_id" ref="base.view_users_search"/>
<field name="arch" type="xml">
<xpath expr="//filter[@name='Inactive']" position="after">
<separator/>
<filter name="odoosh_failed" string="Lab sync failed" domain="[('odoosh_sync_state', '=', 'failed')]"/>
<filter name="odoosh_pending" string="Lab sync pending" domain="[('odoosh_sync_state', '=', 'pending')]"/>
<filter name="odoosh_disabled" string="Lab sync disabled" domain="[('odoosh_sync_enabled', '=', False)]"/>
</xpath>
</field>
</record>
<!-- Bulk actions from the user list -->
<record id="action_server_odoosh_sync_now" model="ir.actions.server">
<field name="name">Sync to lab platform</field>
<field name="model_id" ref="base.model_res_users"/>
<field name="binding_model_id" ref="base.model_res_users"/>
<field name="binding_view_types">list,form</field>
<field name="groups_id" eval="[(4, ref('odoosh_connector.group_odoosh_teacher')), (4, ref('base.group_system'))]"/>
<field name="state">code</field>
<field name="code">action = records.action_odoosh_sync_now()</field>
</record>
<record id="action_server_odoosh_enable" model="ir.actions.server">
<field name="name">Enable lab sync</field>
<field name="model_id" ref="base.model_res_users"/>
<field name="binding_model_id" ref="base.model_res_users"/>
<field name="binding_view_types">list</field>
<field name="groups_id" eval="[(4, ref('odoosh_connector.group_odoosh_teacher')), (4, ref('base.group_system'))]"/>
<field name="state">code</field>
<field name="code">action = records.action_odoosh_enable_sync()</field>
</record>
<record id="action_server_odoosh_disable" model="ir.actions.server">
<field name="name">Disable lab sync</field>
<field name="model_id" ref="base.model_res_users"/>
<field name="binding_model_id" ref="base.model_res_users"/>
<field name="binding_view_types">list</field>
<field name="groups_id" eval="[(4, ref('odoosh_connector.group_odoosh_teacher')), (4, ref('base.group_system'))]"/>
<field name="state">code</field>
<field name="code">action = records.action_odoosh_disable_sync()</field>
</record>
</odoo>