İçereği Atla
Menü
Bu soru işaretlendi
1 Cevapla
1083 Görünümler

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
Vazgeç
En İyi Yanıt

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
Vazgeç
İlgili Gönderiler Cevaplar Görünümler Aktivite
0
Eyl 24
954
4
Haz 25
2269
1
Ara 24
1994
3
Tem 25
1839
0
Haz 25
304