2026-09-21 11:03:19 +05:30

254 lines
14 KiB
XML

<?xml version="1.0" encoding="utf-8"?>
<odoo>
<!-- LMS Categories -->
<record id="module_category_education_lms" model="ir.module.category">
<field name="name">Education LMS</field>
<field name="description">Helps you manage LMS courses and content.</field>
<field name="sequence">20</field>
</record>
<!-- Student Group -->
<record id="group_education_lms_student" model="res.groups">
<field name="name">LMS Student</field>
<field name="implied_ids" eval="[(4, ref('base.group_user'))]"/>
</record>
<!-- Faculty Group -->
<record id="group_education_lms_faculty" model="res.groups">
<field name="name">LMS Faculty</field>
<field name="implied_ids" eval="[(4, ref('base.group_user'))]"/>
</record>
<!-- Administrator Group -->
<record id="group_education_lms_admin" model="res.groups">
<field name="name">LMS Administrator</field>
<field name="implied_ids" eval="[(4, ref('group_education_lms_faculty'))]"/>
</record>
<data>
<!-- Faculty Record Rules: Strict Ownership -->
<record id="rule_lms_course_faculty" model="ir.rule">
<field name="name">Faculty Own Courses</field>
<field name="model_id" ref="model_education_lms_course"/>
<field name="domain_force">[('faculty_id', '=', user.id)]</field>
<field name="groups" eval="[(4, ref('group_education_lms_faculty'))]"/>
<field name="perm_read" eval="True"/>
<field name="perm_write" eval="True"/>
<field name="perm_create" eval="True"/>
<field name="perm_unlink" eval="True"/>
</record>
<record id="rule_lms_section_faculty" model="ir.rule">
<field name="name">Faculty Own Sections</field>
<field name="model_id" ref="model_education_lms_section"/>
<field name="domain_force">[('course_id.faculty_id', '=', user.id)]</field>
<field name="groups" eval="[(4, ref('group_education_lms_faculty'))]"/>
<field name="perm_read" eval="True"/>
<field name="perm_write" eval="True"/>
<field name="perm_create" eval="True"/>
<field name="perm_unlink" eval="True"/>
</record>
<record id="rule_lms_lesson_faculty" model="ir.rule">
<field name="name">Faculty Own Lessons</field>
<field name="model_id" ref="model_education_lms_lesson"/>
<field name="domain_force">[('course_id.faculty_id', '=', user.id)]</field>
<field name="groups" eval="[(4, ref('group_education_lms_faculty'))]"/>
<field name="perm_read" eval="True"/>
<field name="perm_write" eval="True"/>
<field name="perm_create" eval="True"/>
<field name="perm_unlink" eval="True"/>
</record>
<record id="rule_lms_material_faculty" model="ir.rule">
<field name="name">Faculty Own Materials</field>
<field name="model_id" ref="model_education_lms_material"/>
<field name="domain_force">[('lesson_id.course_id.faculty_id', '=', user.id)]</field>
<field name="groups" eval="[(4, ref('group_education_lms_faculty'))]"/>
<field name="perm_read" eval="True"/>
<field name="perm_write" eval="True"/>
<field name="perm_create" eval="True"/>
<field name="perm_unlink" eval="True"/>
</record>
<!-- Admin Record Rules: Global Access -->
<record id="rule_lms_course_admin" model="ir.rule">
<field name="name">Admin All Courses</field>
<field name="model_id" ref="model_education_lms_course"/>
<field name="domain_force">[(1, '=', 1)]</field>
<field name="groups" eval="[(4, ref('group_education_lms_admin'))]"/>
<field name="perm_read" eval="True"/>
<field name="perm_write" eval="True"/>
<field name="perm_create" eval="True"/>
<field name="perm_unlink" eval="True"/>
</record>
<record id="rule_lms_section_admin" model="ir.rule">
<field name="name">Admin All Sections</field>
<field name="model_id" ref="model_education_lms_section"/>
<field name="domain_force">[(1, '=', 1)]</field>
<field name="groups" eval="[(4, ref('group_education_lms_admin'))]"/>
<field name="perm_read" eval="True"/>
<field name="perm_write" eval="True"/>
<field name="perm_create" eval="True"/>
<field name="perm_unlink" eval="True"/>
</record>
<record id="rule_lms_lesson_admin" model="ir.rule">
<field name="name">Admin All Lessons</field>
<field name="model_id" ref="model_education_lms_lesson"/>
<field name="domain_force">[(1, '=', 1)]</field>
<field name="groups" eval="[(4, ref('group_education_lms_admin'))]"/>
<field name="perm_read" eval="True"/>
<field name="perm_write" eval="True"/>
<field name="perm_create" eval="True"/>
<field name="perm_unlink" eval="True"/>
</record>
<record id="rule_lms_material_admin" model="ir.rule">
<field name="name">Admin All Materials</field>
<field name="model_id" ref="model_education_lms_material"/>
<field name="domain_force">[(1, '=', 1)]</field>
<field name="groups" eval="[(4, ref('group_education_lms_admin'))]"/>
<field name="perm_read" eval="True"/>
<field name="perm_write" eval="True"/>
<field name="perm_create" eval="True"/>
<field name="perm_unlink" eval="True"/>
</record>
<!-- Student Record Rules: Restrict Backend -->
<record id="rule_lms_course_student" model="ir.rule">
<field name="name">Student Course Access</field>
<field name="model_id" ref="model_education_lms_course"/>
<field name="domain_force">[
('state', 'in', ['published', 'closed']),
('program_id', 'in', user.student_ids.program_id.ids),
('academic_year_id', 'in', user.student_ids.academic_year_id.ids),
'|', ('term_id', '=', False), ('term_id', 'in', user.student_ids.academic_term_id.ids),
'|', ('batch_id', '=', False), ('batch_id', 'in', user.student_ids.batch_id.ids),
]</field>
<field name="groups" eval="[(4, ref('group_education_lms_student'))]"/>
<field name="perm_read" eval="True"/>
<field name="perm_write" eval="False"/>
<field name="perm_create" eval="False"/>
<field name="perm_unlink" eval="False"/>
</record>
<record id="rule_lms_section_student" model="ir.rule">
<field name="name">Student Section Access</field>
<field name="model_id" ref="model_education_lms_section"/>
<field name="domain_force">[
('course_id.state', 'in', ['published', 'closed']),
('course_id.program_id', 'in', user.student_ids.program_id.ids),
('course_id.academic_year_id', 'in', user.student_ids.academic_year_id.ids),
'|', ('course_id.term_id', '=', False), ('course_id.term_id', 'in', user.student_ids.academic_term_id.ids),
'|', ('course_id.batch_id', '=', False), ('course_id.batch_id', 'in', user.student_ids.batch_id.ids),
]</field>
<field name="groups" eval="[(4, ref('group_education_lms_student'))]"/>
<field name="perm_read" eval="True"/>
<field name="perm_write" eval="False"/>
<field name="perm_create" eval="False"/>
<field name="perm_unlink" eval="False"/>
</record>
<record id="rule_lms_lesson_student" model="ir.rule">
<field name="name">Student Lesson Access</field>
<field name="model_id" ref="model_education_lms_lesson"/>
<field name="domain_force">[
('course_id.state', 'in', ['published', 'closed']),
('course_id.program_id', 'in', user.student_ids.program_id.ids),
('course_id.academic_year_id', 'in', user.student_ids.academic_year_id.ids),
'|', ('course_id.term_id', '=', False), ('course_id.term_id', 'in', user.student_ids.academic_term_id.ids),
'|', ('course_id.batch_id', '=', False), ('course_id.batch_id', 'in', user.student_ids.batch_id.ids),
]</field>
<field name="groups" eval="[(4, ref('group_education_lms_student'))]"/>
<field name="perm_read" eval="True"/>
<field name="perm_write" eval="False"/>
<field name="perm_create" eval="False"/>
<field name="perm_unlink" eval="False"/>
</record>
<record id="rule_lms_material_student" model="ir.rule">
<field name="name">Student Material Access</field>
<field name="model_id" ref="model_education_lms_material"/>
<field name="domain_force">[
('lesson_id.course_id.state', 'in', ['published', 'closed']),
('lesson_id.course_id.program_id', 'in', user.student_ids.program_id.ids),
('lesson_id.course_id.academic_year_id', 'in', user.student_ids.academic_year_id.ids),
'|', ('lesson_id.course_id.term_id', '=', False), ('lesson_id.course_id.term_id', 'in', user.student_ids.academic_term_id.ids),
'|', ('lesson_id.course_id.batch_id', '=', False), ('lesson_id.course_id.batch_id', 'in', user.student_ids.batch_id.ids),
]</field>
<field name="groups" eval="[(4, ref('group_education_lms_student'))]"/>
<field name="perm_read" eval="True"/>
<field name="perm_write" eval="False"/>
<field name="perm_create" eval="False"/>
<field name="perm_unlink" eval="False"/>
</record>
<!-- Assignment Rules -->
<record id="rule_lms_assignment_faculty" model="ir.rule">
<field name="name">Faculty Own Assignments</field>
<field name="model_id" ref="model_education_lms_assignment"/>
<field name="domain_force">[('course_id.faculty_id', '=', user.id)]</field>
<field name="groups" eval="[(4, ref('group_education_lms_faculty'))]"/>
<field name="perm_read" eval="True"/>
<field name="perm_write" eval="True"/>
<field name="perm_create" eval="True"/>
<field name="perm_unlink" eval="True"/>
</record>
<record id="rule_lms_assignment_admin" model="ir.rule">
<field name="name">Admin All Assignments</field>
<field name="model_id" ref="model_education_lms_assignment"/>
<field name="domain_force">[(1, '=', 1)]</field>
<field name="groups" eval="[(4, ref('group_education_lms_admin'))]"/>
<field name="perm_read" eval="True"/>
<field name="perm_write" eval="True"/>
<field name="perm_create" eval="True"/>
<field name="perm_unlink" eval="True"/>
</record>
<record id="rule_lms_assignment_student" model="ir.rule">
<field name="name">Student Assignment Access</field>
<field name="model_id" ref="model_education_lms_assignment"/>
<field name="domain_force">[
('state', 'in', ['published', 'closed']),
('course_id.state', 'in', ['published', 'closed']),
('course_id.program_id', 'in', user.student_ids.program_id.ids),
('course_id.academic_year_id', 'in', user.student_ids.academic_year_id.ids),
'|', ('course_id.term_id', '=', False), ('course_id.term_id', 'in', user.student_ids.academic_term_id.ids),
'|', ('course_id.batch_id', '=', False), ('course_id.batch_id', 'in', user.student_ids.batch_id.ids),
]</field>
<field name="groups" eval="[(4, ref('group_education_lms_student'))]"/>
<field name="perm_read" eval="True"/>
<field name="perm_write" eval="False"/>
<field name="perm_create" eval="False"/>
<field name="perm_unlink" eval="False"/>
</record>
<!-- Submission Rules -->
<record id="rule_lms_submission_faculty" model="ir.rule">
<field name="name">Faculty Own Submissions</field>
<field name="model_id" ref="model_education_lms_submission"/>
<field name="domain_force">[('assignment_id.course_id.faculty_id', '=', user.id)]</field>
<field name="groups" eval="[(4, ref('group_education_lms_faculty'))]"/>
<field name="perm_read" eval="True"/>
<field name="perm_write" eval="True"/>
<field name="perm_create" eval="True"/>
<field name="perm_unlink" eval="True"/>
</record>
<record id="rule_lms_submission_admin" model="ir.rule">
<field name="name">Admin All Submissions</field>
<field name="model_id" ref="model_education_lms_submission"/>
<field name="domain_force">[(1, '=', 1)]</field>
<field name="groups" eval="[(4, ref('group_education_lms_admin'))]"/>
<field name="perm_read" eval="True"/>
<field name="perm_write" eval="True"/>
<field name="perm_create" eval="True"/>
<field name="perm_unlink" eval="True"/>
</record>
<record id="rule_lms_submission_student" model="ir.rule">
<field name="name">Student Submission Sandbox</field>
<field name="model_id" ref="model_education_lms_submission"/>
<field name="domain_force">[('student_id.portal_user_id', '=', user.id)]</field>
<field name="groups" eval="[(4, ref('group_education_lms_student'))]"/>
<field name="perm_read" eval="True"/>
<field name="perm_write" eval="True"/>
<field name="perm_create" eval="True"/>
<field name="perm_unlink" eval="False"/>
</record>
</data>
</odoo>