Bỏ qua để đến Nội dung
Menu
Câu hỏi này đã bị gắn cờ
1 Trả lời
1108 Lượt xem

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...









Ảnh đại diện
Huỷ bỏ
Câu trả lời hay nhấ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

Ảnh đại diện
Huỷ bỏ
Bài viết liên quan Trả lời Lượt xem Hoạt động
0
thg 9 24
955
4
thg 6 25
2282
1
thg 12 24
2001
3
thg 7 25
1853
0
thg 6 25
309