Skip to Content
Menú
This question has been flagged
1 Respondre
1086 Vistes

Hello! I'm trying to restrict the user to see other modules and also other menus in attendance except the "Kiosk Mode" and if it could be automatically it would be great!


This is my security.xml file:

<odoo>
<data noupdate="1">
<!-- User Groups -->
<record id="group_attendance_admin" model="res.groups">
<field name="name">Attendance Admin</field>
<field name="category_id" ref="base.module_category_human_resources"/>
<field name="implied_ids" eval="[(4, ref('hr_attendance.group_hr_attendance_officer'))]"/>
</record>

<record id="group_attendance_user" model="res.groups">
<field name="name">Attendance User</field>
<field name="category_id" ref="base.module_category_human_resources"/>
</record>

<!-- Model Access Rights -->
<!-- Admin Access -->
<record id="access_attendance_admin" model="ir.model.access">
<field name="name">Access Attendance Admin</field>
<field name="model_id" ref="hr_attendance.model_hr_attendance"/>
<field name="group_id" ref="group_attendance_admin"/>
<field name="perm_read" eval="1"/>
<field name="perm_write" eval="1"/>
<field name="perm_create" eval="1"/>
<field name="perm_unlink" eval="1"/>
</record>

<!-- User Access -->
<record id="access_attendance_user" model="ir.model.access">
<field name="name">Access Attendance User</field>
<field name="model_id" ref="hr_attendance.model_hr_attendance"/>
<field name="group_id" ref="group_attendance_user"/>
<field name="perm_read" eval="1"/>
<field name="perm_write" eval="1"/>
<field name="perm_create" eval="1"/>
<field name="perm_unlink" eval="0"/>
</record>

<!-- Record Rules -->
<!-- Admin Rules - Full Access -->
<record id="rule_attendance_admin" model="ir.rule">
<field name="name">Attendance Admin Full Access</field>
<field name="model_id" ref="hr_attendance.model_hr_attendance"/>
<field name="groups" eval="[(4, ref('group_attendance_admin'))]"/>
<field name="domain_force">[]</field>
</record>

<!-- User Rules - Limited Access -->
<record id="rule_attendance_user" model="ir.rule">
<field name="name">Attendance User Own Records</field>
<field name="model_id" ref="hr_attendance.model_hr_attendance"/>
<field name="groups" eval="[(4, ref('group_attendance_user'))]"/>
<field name="domain_force">[('employee_id.user_id', '=', user.id)]</field>
</record>

<!-- Menu Access Rule -->
<record id="rule_menu_kiosk_only" model="ir.rule">
<field name="name">Only Kiosk Menu Access</field>
<field name="model_id" ref="base.model_ir_ui_menu"/>
<field name="groups" eval="[(4, ref('group_attendance_user'))]"/>
<field name="domain_force">[('id', '=', ref('hr_attendance.menu_hr_attendance_kiosk_mode'))]</field>
<field name="perm_read" eval="1"/>
<field name="perm_write" eval="1"/>
<field name="perm_create" eval="1"/>
<field name="perm_unlink" eval="0"/>
</record>

<!-- Model Access Restriction -->
<record id="rule_attendance_user_model_restriction" model="ir.rule">
<field name="name">Attendance User Model Restriction</field>
<field name="model_id" ref="base.model_ir_model_access"/>
<field name="groups" eval="[(4, ref('group_attendance_user'))]"/>
<field name="domain_force">[('model_id.model', 'in', ['hr.attendance'])]</field>
</record>
</data>
</odoo>

The error I'm having:


2024-12-22 19:22:29,267 22847 ERROR payroll odoo.sql_db: bad query: SELECT "ir_ui_menu"."id" FROM "ir_ui_menu" WHERE (("ir_ui_menu"."active" = true) AND "ir_ui_menu"."parent_id" IS NULL) AND ("ir_ui_menu"."id" = 'hr_attendance.menu_hr_attendance_kiosk_no_user_mode') ORDER BY "ir_ui_menu"."sequence"  , "ir_ui_menu"."id"  
ERROR: invalid input syntax for type integer: "hr_attendance.menu_hr_attendance_kiosk_no_user_mode"
LINE 1: ...nu"."parent_id" IS NULL) AND ("ir_ui_menu"."id" = 'hr_attend...

KeyError: ('ir.ui.menu', <function IrUiMenu.load_menus at 0x728f8e7f6160>, 7, '1', ('en_US',))


psycopg2.errors.InvalidTextRepresentation: invalid input syntax for type integer: "hr_attendance.menu_hr_attendance_kiosk_no_user_mode"
LINE 1: ...nu"."parent_id" IS NULL) AND ("ir_ui_menu"."id" = 'hr_attend...









Avatar
Descartar
Best Answer

Why do some complicated ?
Odoo already has that feature, let say Marc Demo is not a admin,

Go to user -> Marc Demo -> Check the box Officer: Manage attendances. This option will let Marc Demo doesn't see the kiosk menu

Avatar
Descartar
Related Posts Respostes Vistes Activitat
0
de set. 24
954
4
de juny 25
2269
1
de des. 24
1994
3
de jul. 25
1840
0
de juny 25
305