brotherton-erpnext/erpnext/education/setup.py

61 lines
1.8 KiB
Python
Raw Normal View History

# Copyright (c) 2017, Frappe Technologies Pvt. Ltd. and contributors
# For license information, please see license.txt
import frappe
def setup_education():
disable_desk_access_for_student_role()
if frappe.db.exists("Academic Year", "2015-16"):
# already setup
return
create_academic_sessions()
2022-01-21 16:10:47 +00:00
def insert_record(records):
for r in records:
doc = frappe.new_doc(r.get("doctype"))
doc.update(r)
try:
doc.insert(ignore_permissions=True)
except frappe.DuplicateEntryError as e:
# pass DuplicateEntryError and continue
2022-03-28 13:22:46 +00:00
if e.args and e.args[0] == doc.doctype and e.args[1] == doc.name:
2022-01-21 16:10:47 +00:00
# make sure DuplicateEntryError is for the exact same doc and not a related doc
pass
else:
raise
2022-03-28 13:22:46 +00:00
def create_academic_sessions():
data = [
{"doctype": "Academic Year", "academic_year_name": "2015-16"},
{"doctype": "Academic Year", "academic_year_name": "2016-17"},
{"doctype": "Academic Year", "academic_year_name": "2017-18"},
{"doctype": "Academic Year", "academic_year_name": "2018-19"},
{"doctype": "Academic Term", "academic_year": "2016-17", "term_name": "Semester 1"},
{"doctype": "Academic Term", "academic_year": "2016-17", "term_name": "Semester 2"},
{"doctype": "Academic Term", "academic_year": "2017-18", "term_name": "Semester 1"},
2022-03-28 13:22:46 +00:00
{"doctype": "Academic Term", "academic_year": "2017-18", "term_name": "Semester 2"},
]
insert_record(data)
2022-03-28 13:22:46 +00:00
def disable_desk_access_for_student_role():
try:
student_role = frappe.get_doc("Role", "Student")
except frappe.DoesNotExistError:
create_student_role()
return
student_role.desk_access = 0
student_role.save()
2022-03-28 13:22:46 +00:00
def create_student_role():
2022-03-28 13:22:46 +00:00
student_role = frappe.get_doc(
{"doctype": "Role", "role_name": "Student", "desk_access": 0, "restrict_to_domain": "Education"}
)
2019-06-05 12:22:21 +00:00
student_role.insert()