49 lines
2.5 KiB
Python
49 lines
2.5 KiB
Python
import re
|
|
|
|
with open('addons/education_lms/security/security.xml', 'r') as f:
|
|
text = f.read()
|
|
|
|
# Replace all student rules to explicitly have perm_read="True"
|
|
# We will do this by finding </field>\n <field name="groups" eval="[(4, ref('group_education_lms_student'))]"/>
|
|
# and adding perm_read="True" after it.
|
|
|
|
def replace_perms(match):
|
|
return match.group(0) + '\n <field name="perm_read" eval="True"/>\n <field name="perm_write" eval="False"/>\n <field name="perm_create" eval="False"/>\n <field name="perm_unlink" eval="False"/>'
|
|
|
|
# First, remove existing perms to avoid duplicates
|
|
text = re.sub(r' *<field name="perm_(read|write|create|unlink)".*?/>\n', '', text)
|
|
|
|
# Now add default perms back to Faculty
|
|
text = re.sub(
|
|
r'(<field name="groups" eval="\[\(4, ref\(\'group_education_lms_faculty\'\)\)\]"/>)',
|
|
r'\1\n <field name="perm_read" eval="True"/>\n <field name="perm_write" eval="True"/>\n <field name="perm_create" eval="True"/>\n <field name="perm_unlink" eval="True"/>',
|
|
text
|
|
)
|
|
|
|
# And Admin
|
|
text = re.sub(
|
|
r'(<field name="groups" eval="\[\(4, ref\(\'group_education_lms_admin\'\)\)\]"/>)',
|
|
r'\1\n <field name="perm_read" eval="True"/>\n <field name="perm_write" eval="True"/>\n <field name="perm_create" eval="True"/>\n <field name="perm_unlink" eval="True"/>',
|
|
text
|
|
)
|
|
|
|
# And Student (Read Only except for submission)
|
|
text = re.sub(
|
|
r'(<record id="rule_lms_.*?_student" model="ir.rule">.*?<field name="groups" eval="\[\(4, ref\(\'group_education_lms_student\'\)\)\]"/>)',
|
|
r'\1\n <field name="perm_read" eval="True"/>\n <field name="perm_write" eval="False"/>\n <field name="perm_create" eval="False"/>\n <field name="perm_unlink" eval="False"/>',
|
|
text,
|
|
flags=re.DOTALL
|
|
)
|
|
|
|
# Exception for Student Submission Sandbox (needs write, create, unlink maybe?)
|
|
# Actually Submission Sandbox might need create/write
|
|
text = re.sub(
|
|
r'(<record id="rule_lms_submission_student" model="ir.rule">.*?)<field name="perm_write" eval="False"/>\n <field name="perm_create" eval="False"/>\n <field name="perm_unlink" eval="False"/>',
|
|
r'\1<field name="perm_write" eval="True"/>\n <field name="perm_create" eval="True"/>\n <field name="perm_unlink" eval="False"/>',
|
|
text,
|
|
flags=re.DOTALL
|
|
)
|
|
|
|
with open('addons/education_lms/security/security.xml', 'w') as f:
|
|
f.write(text)
|