appointment.type: apt internal rule (read self-staff and resources) [ '|', ('staff_user_ids', 'in', [user.id, False]), ('schedule_based_on', '=', 'resources')] appointment.type: apt internal rule (read published) [('is_published', '=', True)] appointment.type: apt user rule (read self-create, self-staff and resources) [ '|', '|', ('create_uid', '=', user.id), ('staff_user_ids', 'in', [user.id, False]), ('schedule_based_on', '=', 'resources')] appointment.type: apt user rule (write/unlink = own only) [('create_uid', '=', user.id)] appointment.type: apt administrator rule [(1, '=', 1)] appointment.slot: apt internal rule (read self-staff and resources) [ ('appointment_type_id', 'any', [ '|', ('staff_user_ids', 'in', [user.id, False]), ('schedule_based_on', '=', 'resources') ]) ] appointment.slot: apt internal rule (read published) [('appointment_type_id.is_published', '=', True)] appointment.slot: apt user rule (read self-create, self-staff and resources) [ ('appointment_type_id', 'any', [ '|', '|', ('create_uid', '=', user.id), ('staff_user_ids', 'in', [user.id, False]), ('schedule_based_on', '=', 'resources'), ]) ] appointment.slot: apt user rule (write/unlink = own only) [ '|', ('appointment_type_id.create_uid', '=', user.id), ('create_uid', '=', user.id)] appointment.slot: apt administrator rule [(1, '=', 1)] appointment.invite: user and internal rule (read self-create and self-staff) ['|', ('create_uid', '=', user.id), ('staff_user_ids', '=', user.id)] appointment.invite: apt user and internal rule (write/unlink = own only) [('create_uid', '=', user.id)] appointment.invite: apt administrator rule [(1, '=', 1)]