metatroncubeswdev e5aba291f1 O4: mc_education_attendance - mobile-first bulk marking, own batches only
Serves Demo Scene 4: mc.attendance (student x date x session, unique
constraint so resubmission can never duplicate) plus a bulk-marking
wizard - pick a batch/date/session, the roster loads pre-filled
Present (or whatever was already recorded, if reopening), tap to
change an exception, Submit. Submitting again for the same
batch/date/session updates the same rows rather than creating
duplicates - verified with a real test that marks a batch present,
then reopens and corrects one student, then asserts there are still
exactly two rows, not three.

The "teachers may only mark their own batches" rule is a record rule
(ir.rule scoped to group_teacher via batch_id.class_teacher_id.
user_id), not a UI check, per CLAUDE.md sec 3 and the O4 spec line
verbatim. Verified for real, not just declared: a teacher user who
is not the class teacher of a batch gets AccessError on create *and*
on reading an existing attendance row by id directly (the actual
"cannot open another teacher's batch by editing the URL" scenario),
while Administrator remains unrestricted since the rule's `groups`
field scopes it to teacher only.

Caught two Odoo 19 search-view schema changes while installing
against a live odoo:19.0 container - a plain read of the view XML
wouldn't have caught these, only trying to actually load it did:
neither the group-by `<group>` element nor the filter groups inside
a `<search>` view accept a `string` or `expand` attribute anymore
(confirmed against hr's own search views, which use bare `<group>`).

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-11 12:49:04 -04:00

1.4 KiB

1idnamemodel_id:idgroup_id:idperm_readperm_writeperm_createperm_unlink
2access_mc_attendance_administratormc.attendance.administratormodel_mc_attendancemc_education_base.group_school_administrator1111
3access_mc_attendance_staffmc.attendance.staffmodel_mc_attendancemc_education_base.group_school_staff1110
4access_mc_attendance_teachermc.attendance.teachermodel_mc_attendancemc_education_base.group_teacher1110
5access_mc_attendance_bulk_wizard_administratormc.attendance.bulk.wizard.administratormodel_mc_attendance_bulk_wizardmc_education_base.group_school_administrator1111
6access_mc_attendance_bulk_wizard_staffmc.attendance.bulk.wizard.staffmodel_mc_attendance_bulk_wizardmc_education_base.group_school_staff1111
7access_mc_attendance_bulk_wizard_teachermc.attendance.bulk.wizard.teachermodel_mc_attendance_bulk_wizardmc_education_base.group_teacher1111
8access_mc_attendance_bulk_wizard_line_administratormc.attendance.bulk.wizard.line.administratormodel_mc_attendance_bulk_wizard_linemc_education_base.group_school_administrator1111
9access_mc_attendance_bulk_wizard_line_staffmc.attendance.bulk.wizard.line.staffmodel_mc_attendance_bulk_wizard_linemc_education_base.group_school_staff1111
10access_mc_attendance_bulk_wizard_line_teachermc.attendance.bulk.wizard.line.teachermodel_mc_attendance_bulk_wizard_linemc_education_base.group_teacher1111