diff --git a/education/desktop_icon/education.json b/education/desktop_icon/education.json new file mode 100644 index 00000000..6881abef --- /dev/null +++ b/education/desktop_icon/education.json @@ -0,0 +1,21 @@ +{ + "app": "education", + "bg_color": "gray", + "creation": "2026-03-24 17:21:10.011412", + "docstatus": 0, + "doctype": "Desktop Icon", + "hidden": 0, + "icon_type": "App", + "idx": 0, + "label": "Education", + "link_to": "Education", + "link_type": "Workspace Sidebar", + "logo_url": "/assets/education/edu-logo.svg", + "modified": "2026-03-24 17:21:10.011412", + "modified_by": "Administrator", + "name": "Education", + "owner": "Administrator", + "restrict_removal": 0, + "roles": [], + "standard": 1 +} diff --git a/education/education/doctype/fee_schedule/fee_schedule.py b/education/education/doctype/fee_schedule/fee_schedule.py index 890c2b0e..c8291e59 100644 --- a/education/education/doctype/fee_schedule/fee_schedule.py +++ b/education/education/doctype/fee_schedule/fee_schedule.py @@ -105,7 +105,8 @@ def validate_fee_components(self): if component not in fee_structure_components: frappe.msgprint( _("Fee Component {0} is not part of Fee Structure {1}").format( - component, frappe.bold(getlink("Fee Structure", self.fee_structure)) + component, + frappe.bold(getlink("Fee Structure", self.fee_structure)), ), alert=True, ) @@ -115,7 +116,7 @@ def validate_total_against_fee_strucuture(self): frappe.db.get_all( "Fee Schedule", filters={"fee_structure": self.fee_structure}, - fields=["sum(total_amount) as total"], + fields=[{"SUM": "total_amount", "as": "total"}], )[0]["total"] or 0 ) @@ -277,9 +278,9 @@ def get_fees_mapped_doc(fee_schedule, doctype, student_id, customer): }, }, "Fee Component": { - "doctype": "Sales Invoice Item" - if doctype == "Sales Invoice" - else "Sales Order Item", + "doctype": ( + "Sales Invoice Item" if doctype == "Sales Invoice" else "Sales Order Item" + ), "field_map": { # Fee Component Field : Child doctype Field "item": "item_code", diff --git a/education/education/workspace/education/education.json b/education/education/workspace/education/education.json index fec00285..0fc9a6f3 100644 --- a/education/education/workspace/education/education.json +++ b/education/education/workspace/education/education.json @@ -1,6 +1,6 @@ { "charts": [], - "content": "[{\"id\":\"kPDXosF_36\",\"type\":\"spacer\",\"data\":{\"col\":12}},{\"id\":\"M9f80RiBg-\",\"type\":\"header\",\"data\":{\"text\":\"Your Shortcuts\",\"col\":12}},{\"id\":\"kjn-PeQqa1\",\"type\":\"shortcut\",\"data\":{\"shortcut_name\":\"Student\",\"col\":3}},{\"id\":\"HkSo_TH74e\",\"type\":\"shortcut\",\"data\":{\"shortcut_name\":\"Instructor\",\"col\":3}},{\"id\":\"PCMoc9tc_K\",\"type\":\"shortcut\",\"data\":{\"shortcut_name\":\"Program\",\"col\":3}},{\"id\":\"Xq6CSAeATl\",\"type\":\"shortcut\",\"data\":{\"shortcut_name\":\"Course\",\"col\":3}},{\"id\":\"xxjcSj__5e\",\"type\":\"shortcut\",\"data\":{\"shortcut_name\":\"Sales Invoice\",\"col\":3}},{\"id\":\"VkVspJGqYQ\",\"type\":\"shortcut\",\"data\":{\"shortcut_name\":\"Student Monthly Attendance Sheet\",\"col\":3}},{\"id\":\"vfDR1CThl5\",\"type\":\"shortcut\",\"data\":{\"shortcut_name\":\"Course Scheduling Tool\",\"col\":3}},{\"id\":\"25LD73fDQ5\",\"type\":\"shortcut\",\"data\":{\"shortcut_name\":\"Student Attendance Tool\",\"col\":3}},{\"id\":\"syV1UYrgXd\",\"type\":\"spacer\",\"data\":{\"col\":12}},{\"id\":\"_iVVUE4qZL\",\"type\":\"header\",\"data\":{\"text\":\"Reports & Masters\",\"col\":12}},{\"id\":\"WhCpeh8evz\",\"type\":\"card\",\"data\":{\"card_name\":\"Student and Instructor\",\"col\":4}},{\"id\":\"zuYoZvBO0_\",\"type\":\"card\",\"data\":{\"card_name\":\"Masters\",\"col\":4}},{\"id\":\"3gGgyWyn0r\",\"type\":\"card\",\"data\":{\"card_name\":\"Content Masters\",\"col\":4}},{\"id\":\"9dBmFwGKS6\",\"type\":\"card\",\"data\":{\"card_name\":\"Settings\",\"col\":4}},{\"id\":\"qRTpZK9024\",\"type\":\"card\",\"data\":{\"card_name\":\"Admission\",\"col\":4}},{\"id\":\"CcvHgLgyYi\",\"type\":\"card\",\"data\":{\"card_name\":\"Fees\",\"col\":4}},{\"id\":\"kydSuuZSdB\",\"type\":\"card\",\"data\":{\"card_name\":\"Schedule\",\"col\":4}},{\"id\":\"WGne39384b\",\"type\":\"card\",\"data\":{\"card_name\":\"Attendance\",\"col\":4}},{\"id\":\"fQ0TQuXwz9\",\"type\":\"card\",\"data\":{\"card_name\":\"Assessment\",\"col\":4}},{\"id\":\"shkmvB71Ov\",\"type\":\"card\",\"data\":{\"card_name\":\"Assessment Reports\",\"col\":4}},{\"id\":\"ZWW4wtFwLa\",\"type\":\"card\",\"data\":{\"card_name\":\"Tools\",\"col\":4}},{\"id\":\"Y_MEmzWdEh\",\"type\":\"card\",\"data\":{\"card_name\":\"Other Reports\",\"col\":4}}]", + "content": "[{\"id\":\"kPDXosF_36\",\"type\":\"spacer\",\"data\":{\"col\":12}},{\"id\":\"M9f80RiBg-\",\"type\":\"header\",\"data\":{\"text\":\"Your Shortcuts\",\"col\":12}},{\"id\":\"kjn-PeQqa1\",\"type\":\"shortcut\",\"data\":{\"shortcut_name\":\"Student\",\"col\":3}},{\"id\":\"HkSo_TH74e\",\"type\":\"shortcut\",\"data\":{\"shortcut_name\":\"Instructor\",\"col\":3}},{\"id\":\"PCMoc9tc_K\",\"type\":\"shortcut\",\"data\":{\"shortcut_name\":\"Program\",\"col\":3}},{\"id\":\"Xq6CSAeATl\",\"type\":\"shortcut\",\"data\":{\"shortcut_name\":\"Course\",\"col\":3}},{\"id\":\"xxjcSj__5e\",\"type\":\"shortcut\",\"data\":{\"shortcut_name\":\"Sales Invoice\",\"col\":3}},{\"id\":\"VkVspJGqYQ\",\"type\":\"shortcut\",\"data\":{\"shortcut_name\":\"Student Monthly Attendance Sheet\",\"col\":3}},{\"id\":\"vfDR1CThl5\",\"type\":\"shortcut\",\"data\":{\"shortcut_name\":\"Course Scheduling Tool\",\"col\":3}},{\"id\":\"25LD73fDQ5\",\"type\":\"shortcut\",\"data\":{\"shortcut_name\":\"Student Attendance Tool\",\"col\":3}},{\"id\":\"syV1UYrgXd\",\"type\":\"spacer\",\"data\":{\"col\":12}},{\"id\":\"_iVVUE4qZL\",\"type\":\"header\",\"data\":{\"text\":\"Reports & Masters\",\"col\":12}},{\"id\":\"EBsRU2xcFw\",\"type\":\"card\",\"data\":{\"card_name\":\"Student Management\",\"col\":4}},{\"id\":\"OufyhhmN6N\",\"type\":\"card\",\"data\":{\"card_name\":\"Academics\",\"col\":4}},{\"id\":\"D8GDqhZ9sE\",\"type\":\"card\",\"data\":{\"card_name\":\"Admissions\",\"col\":4}},{\"id\":\"A0nnPR2NgO\",\"type\":\"card\",\"data\":{\"card_name\":\"Assessment\",\"col\":4}},{\"id\":\"qcYpKBL_rO\",\"type\":\"card\",\"data\":{\"card_name\":\"Fee Management\",\"col\":4}},{\"id\":\"-djWdXpYyb\",\"type\":\"card\",\"data\":{\"card_name\":\"Attendance\",\"col\":4}},{\"id\":\"lCibI7SZyl\",\"type\":\"card\",\"data\":{\"card_name\":\"Tools\",\"col\":4}},{\"id\":\"IJwDTQpPXg\",\"type\":\"card\",\"data\":{\"card_name\":\"Setup\",\"col\":4}},{\"id\":\"q7SnWm7FQK\",\"type\":\"card\",\"data\":{\"card_name\":\"Settings\",\"col\":4}},{\"id\":\"3gGgyWyn0r\",\"type\":\"card\",\"data\":{\"card_name\":\"Content Masters\",\"col\":4}},{\"id\":\"shkmvB71Ov\",\"type\":\"card\",\"data\":{\"card_name\":\"Assessment Reports\",\"col\":4}},{\"id\":\"U6oxKHCedI\",\"type\":\"card\",\"data\":{\"card_name\":\"Fee Reports\",\"col\":4}},{\"id\":\"fZCeeIc93M\",\"type\":\"card\",\"data\":{\"card_name\":\"Attendance Reports\",\"col\":4}},{\"id\":\"Y_MEmzWdEh\",\"type\":\"card\",\"data\":{\"card_name\":\"Other Reports\",\"col\":4}}]", "creation": "2020-03-02 17:22:57.066401", "custom_blocks": [], "docstatus": 0, @@ -12,14 +12,6 @@ "is_hidden": 0, "label": "Education", "links": [ - { - "hidden": 0, - "is_query_report": 0, - "label": "Student and Instructor", - "link_count": 0, - "onboard": 0, - "type": "Card Break" - }, { "dependencies": "", "hidden": 0, @@ -75,14 +67,6 @@ "onboard": 0, "type": "Link" }, - { - "hidden": 0, - "is_query_report": 0, - "label": "Masters", - "link_count": 0, - "onboard": 0, - "type": "Card Break" - }, { "dependencies": "", "hidden": 0, @@ -130,40 +114,89 @@ { "hidden": 0, "is_query_report": 0, - "label": "Content Masters", + "label": "Assessment Reports", "link_count": 0, "onboard": 0, "type": "Card Break" }, + { + "dependencies": "Assessment Result", + "hidden": 0, + "is_query_report": 1, + "label": "Course wise Assessment Report", + "link_count": 0, + "link_to": "Course wise Assessment Report", + "link_type": "Report", + "onboard": 0, + "type": "Link" + }, + { + "dependencies": "Assessment Result", + "hidden": 0, + "is_query_report": 1, + "label": "Final Assessment Grades", + "link_count": 0, + "link_to": "Final Assessment Grades", + "link_type": "Report", + "onboard": 0, + "type": "Link" + }, + { + "dependencies": "Assessment Plan", + "hidden": 0, + "is_query_report": 1, + "label": "Assessment Plan Status", + "link_count": 0, + "link_to": "Assessment Plan Status", + "link_type": "Report", + "onboard": 0, + "type": "Link" + }, { "dependencies": "", "hidden": 0, "is_query_report": 0, - "label": "Article", + "label": "Student Report Generation Tool", "link_count": 0, - "link_to": "Article", + "link_to": "Student Report Generation Tool", "link_type": "DocType", "onboard": 0, "type": "Link" }, { - "dependencies": "", "hidden": 0, "is_query_report": 0, - "label": "Video", + "label": "Other Reports", "link_count": 0, - "link_to": "Video", - "link_type": "DocType", + "onboard": 0, + "type": "Card Break" + }, + { + "dependencies": "Program Enrollment", + "hidden": 0, + "is_query_report": 1, + "label": "Student and Guardian Contact Details", + "link_count": 0, + "link_to": "Student and Guardian Contact Details", + "link_type": "Report", "onboard": 0, "type": "Link" }, { - "dependencies": "", "hidden": 0, "is_query_report": 0, - "label": "Quiz", + "label": "Admissions", + "link_count": 2, + "link_type": "DocType", + "onboard": 0, + "type": "Card Break" + }, + { + "hidden": 0, + "is_query_report": 0, + "label": "Student Applicant", "link_count": 0, - "link_to": "Quiz", + "link_to": "Student Applicant", "link_type": "DocType", "onboard": 0, "type": "Link" @@ -171,24 +204,43 @@ { "hidden": 0, "is_query_report": 0, - "label": "Settings", + "label": "Student Admission", "link_count": 0, + "link_to": "Student Admission", + "link_type": "DocType", + "onboard": 0, + "type": "Link" + }, + { + "hidden": 0, + "is_query_report": 0, + "label": "Student Management", + "link_count": 8, + "link_type": "DocType", "onboard": 0, "type": "Card Break" }, { - "dependencies": "", "hidden": 0, "is_query_report": 0, - "label": "Education Settings", + "label": "Student", "link_count": 0, - "link_to": "Education Settings", + "link_to": "Student", + "link_type": "DocType", + "onboard": 0, + "type": "Link" + }, + { + "hidden": 0, + "is_query_report": 0, + "label": "Student Group", + "link_count": 0, + "link_to": "Student Group", "link_type": "DocType", "onboard": 0, "type": "Link" }, { - "dependencies": "", "hidden": 0, "is_query_report": 0, "label": "Student Category", @@ -199,7 +251,6 @@ "type": "Link" }, { - "dependencies": "", "hidden": 0, "is_query_report": 0, "label": "Student Batch Name", @@ -210,34 +261,31 @@ "type": "Link" }, { - "dependencies": "", "hidden": 0, "is_query_report": 0, - "label": "Grading Scale", + "label": "Program Enrollment", "link_count": 0, - "link_to": "Grading Scale", + "link_to": "Program Enrollment", "link_type": "DocType", - "onboard": 1, + "onboard": 0, "type": "Link" }, { - "dependencies": "", "hidden": 0, "is_query_report": 0, - "label": "Academic Term", + "label": "Course Enrollment", "link_count": 0, - "link_to": "Academic Term", + "link_to": "Course Enrollment", "link_type": "DocType", "onboard": 0, "type": "Link" }, { - "dependencies": "", "hidden": 0, "is_query_report": 0, - "label": "Academic Year", + "label": "Student Log", "link_count": 0, - "link_to": "Academic Year", + "link_to": "Student Log", "link_type": "DocType", "onboard": 0, "type": "Link" @@ -245,51 +293,58 @@ { "hidden": 0, "is_query_report": 0, - "label": "Admission", + "label": "Guardian", "link_count": 0, + "link_to": "Guardian", + "link_type": "DocType", + "onboard": 0, + "type": "Link" + }, + { + "hidden": 0, + "is_query_report": 0, + "label": "Assessment", + "link_count": 5, + "link_type": "DocType", "onboard": 0, "type": "Card Break" }, { - "dependencies": "", "hidden": 0, "is_query_report": 0, - "label": "Student Applicant", + "label": "Assessment Plan", "link_count": 0, - "link_to": "Student Applicant", + "link_to": "Assessment Plan", "link_type": "DocType", "onboard": 0, "type": "Link" }, { - "dependencies": "", "hidden": 0, "is_query_report": 0, - "label": "Student Admission", + "label": "Assessment Criteria", "link_count": 0, - "link_to": "Student Admission", + "link_to": "Assessment Criteria", "link_type": "DocType", "onboard": 0, "type": "Link" }, { - "dependencies": "", "hidden": 0, "is_query_report": 0, - "label": "Program Enrollment", + "label": "Assessment Group", "link_count": 0, - "link_to": "Program Enrollment", + "link_to": "Assessment Group", "link_type": "DocType", "onboard": 0, "type": "Link" }, { - "dependencies": "", "hidden": 0, "is_query_report": 0, - "label": "Course Enrollment", + "label": "Assessment Result", "link_count": 0, - "link_to": "Course Enrollment", + "link_to": "Assessment Result", "link_type": "DocType", "onboard": 0, "type": "Link" @@ -297,103 +352,97 @@ { "hidden": 0, "is_query_report": 0, - "label": "Fees", + "label": "Grading Scale", "link_count": 0, + "link_to": "Grading Scale", + "link_type": "DocType", "onboard": 0, - "type": "Card Break" + "type": "Link" }, { - "dependencies": "", "hidden": 0, "is_query_report": 0, - "label": "Fee Structure", - "link_count": 0, - "link_to": "Fee Structure", + "label": "Fee Management", + "link_count": 5, "link_type": "DocType", "onboard": 0, - "type": "Link" + "type": "Card Break" }, { - "dependencies": "", "hidden": 0, "is_query_report": 0, - "label": "Fee Category", + "label": "Fees", "link_count": 0, - "link_to": "Fee Category", + "link_to": "Fees", "link_type": "DocType", "onboard": 0, "type": "Link" }, { - "dependencies": "", "hidden": 0, "is_query_report": 0, - "label": "Fee Schedule", + "label": "Fee Structure", "link_count": 0, - "link_to": "Fee Schedule", + "link_to": "Fee Structure", "link_type": "DocType", "onboard": 0, "type": "Link" }, { - "dependencies": "", "hidden": 0, "is_query_report": 0, - "label": "Fees", + "label": "Fee Category", "link_count": 0, - "link_to": "Fees", + "link_to": "Fee Category", "link_type": "DocType", "onboard": 0, "type": "Link" }, { - "dependencies": "Fees", "hidden": 0, - "is_query_report": 1, - "label": "Student Fee Collection Report", + "is_query_report": 0, + "label": "Sales Invoice", "link_count": 0, - "link_to": "Student Fee Collection", - "link_type": "Report", + "link_to": "Sales Invoice", + "link_type": "DocType", "onboard": 0, "type": "Link" }, { - "dependencies": "Fees", "hidden": 0, - "is_query_report": 1, - "label": "Program wise Fee Collection Report", + "is_query_report": 0, + "label": "Sales Order", "link_count": 0, - "link_to": "Program wise Fee Collection", - "link_type": "Report", + "link_to": "Sales Order", + "link_type": "DocType", "onboard": 0, "type": "Link" }, { "hidden": 0, "is_query_report": 0, - "label": "Schedule", - "link_count": 0, + "label": "Attendance", + "link_count": 2, + "link_type": "DocType", "onboard": 0, "type": "Card Break" }, { - "dependencies": "", "hidden": 0, "is_query_report": 0, - "label": "Course Schedule", + "label": "Student Attendance", "link_count": 0, - "link_to": "Course Schedule", + "link_to": "Student Attendance", "link_type": "DocType", "onboard": 0, "type": "Link" }, { - "dependencies": "", "hidden": 0, "is_query_report": 0, - "label": "Course Scheduling Tool", + "label": "Student Leave Application", "link_count": 0, - "link_to": "Course Scheduling Tool", + "link_to": "Student Leave Application", "link_type": "DocType", "onboard": 0, "type": "Link" @@ -401,95 +450,97 @@ { "hidden": 0, "is_query_report": 0, - "label": "Attendance", - "link_count": 0, + "label": "Tools", + "link_count": 6, + "link_type": "DocType", "onboard": 0, "type": "Card Break" }, { - "dependencies": "", "hidden": 0, "is_query_report": 0, - "label": "Student Attendance", + "label": "Program Enrollment", "link_count": 0, - "link_to": "Student Attendance", + "link_to": "Program Enrollment Tool", "link_type": "DocType", "onboard": 0, "type": "Link" }, { - "dependencies": "", "hidden": 0, "is_query_report": 0, - "label": "Student Leave Application", + "label": "Student Group Creation Tool", "link_count": 0, - "link_to": "Student Leave Application", + "link_to": "Student Group Creation Tool", "link_type": "DocType", "onboard": 0, "type": "Link" }, { - "dependencies": "Student Attendance", "hidden": 0, - "is_query_report": 1, - "label": "Student Monthly Attendance Sheet", + "is_query_report": 0, + "label": "Student Attendance Tool", "link_count": 0, - "link_to": "Student Monthly Attendance Sheet", - "link_type": "Report", + "link_to": "Student Attendance Tool", + "link_type": "DocType", "onboard": 0, "type": "Link" }, { - "dependencies": "Student Attendance", "hidden": 0, - "is_query_report": 1, - "label": "Absent Student Report", + "is_query_report": 0, + "label": "Student Report Generation Tool", "link_count": 0, - "link_to": "Absent Student Report", - "link_type": "Report", + "link_to": "Student Report Generation Tool", + "link_type": "DocType", "onboard": 0, "type": "Link" }, { - "dependencies": "Student Attendance", "hidden": 0, - "is_query_report": 1, - "label": "Student Batch-Wise Attendance", + "is_query_report": 0, + "label": "Assessment Result Tool", "link_count": 0, - "link_to": "Student Batch-Wise Attendance", - "link_type": "Report", + "link_to": "Assessment Result Tool", + "link_type": "DocType", "onboard": 0, "type": "Link" }, { - "dependencies": "", "hidden": 0, "is_query_report": 0, - "label": "Course Enrollment", + "label": "Course Scheduling Tool", "link_count": 0, - "link_to": "Course Enrollment", + "link_to": "Course Scheduling Tool", "link_type": "DocType", "onboard": 0, "type": "Link" }, { - "dependencies": "", "hidden": 0, "is_query_report": 0, - "label": "Course Activity", + "label": "Setup", + "link_count": 2, + "link_type": "DocType", + "onboard": 0, + "type": "Card Break" + }, + { + "hidden": 0, + "is_query_report": 0, + "label": "Instructor", "link_count": 0, - "link_to": "Course Activity", + "link_to": "Instructor", "link_type": "DocType", "onboard": 0, "type": "Link" }, { - "dependencies": "", "hidden": 0, "is_query_report": 0, - "label": "Quiz Activity", + "label": "Room", "link_count": 0, - "link_to": "Quiz Activity", + "link_to": "Room", "link_type": "DocType", "onboard": 0, "type": "Link" @@ -497,29 +548,38 @@ { "hidden": 0, "is_query_report": 0, - "label": "Assessment", - "link_count": 0, + "label": "Settings", + "link_count": 1, + "link_type": "DocType", "onboard": 0, "type": "Card Break" }, { - "dependencies": "", "hidden": 0, "is_query_report": 0, - "label": "Assessment Plan", + "label": "Education Settings", "link_count": 0, - "link_to": "Assessment Plan", + "link_to": "Education Settings", "link_type": "DocType", "onboard": 0, "type": "Link" }, + { + "hidden": 0, + "is_query_report": 0, + "label": "Content Masters", + "link_count": 3, + "link_type": "DocType", + "onboard": 0, + "type": "Card Break" + }, { "dependencies": "", "hidden": 0, "is_query_report": 0, - "label": "Assessment Group", + "label": "Article", "link_count": 0, - "link_to": "Assessment Group", + "link_to": "Article", "link_type": "DocType", "onboard": 0, "type": "Link" @@ -528,9 +588,9 @@ "dependencies": "", "hidden": 0, "is_query_report": 0, - "label": "Assessment Result", + "label": "Video", "link_count": 0, - "link_to": "Assessment Result", + "link_to": "Video", "link_type": "DocType", "onboard": 0, "type": "Link" @@ -539,9 +599,9 @@ "dependencies": "", "hidden": 0, "is_query_report": 0, - "label": "Assessment Criteria", + "label": "Quiz", "link_count": 0, - "link_to": "Assessment Criteria", + "link_to": "Quiz", "link_type": "DocType", "onboard": 0, "type": "Link" @@ -549,114 +609,129 @@ { "hidden": 0, "is_query_report": 0, - "label": "Assessment Reports", - "link_count": 0, + "label": "Fee Reports", + "link_count": 2, + "link_type": "DocType", "onboard": 0, "type": "Card Break" }, { - "dependencies": "Assessment Result", "hidden": 0, "is_query_report": 1, - "label": "Course wise Assessment Report", + "label": "Student Fee Collection", "link_count": 0, - "link_to": "Course wise Assessment Report", + "link_to": "Student Fee Collection", "link_type": "Report", "onboard": 0, "type": "Link" }, { - "dependencies": "Assessment Result", "hidden": 0, - "is_query_report": 1, - "label": "Final Assessment Grades", + "is_query_report": 0, + "label": "Program wise Fee Collection", "link_count": 0, - "link_to": "Final Assessment Grades", + "link_to": "Program wise Fee Collection", "link_type": "Report", "onboard": 0, + "report_ref_doctype": "Fees", "type": "Link" }, { - "dependencies": "Assessment Plan", + "hidden": 0, + "is_query_report": 0, + "label": "Attendance Reports", + "link_count": 3, + "link_type": "DocType", + "onboard": 0, + "type": "Card Break" + }, + { "hidden": 0, "is_query_report": 1, - "label": "Assessment Plan Status", + "label": "Absent Student Report", "link_count": 0, - "link_to": "Assessment Plan Status", + "link_to": "Absent Student Report", "link_type": "Report", "onboard": 0, "type": "Link" }, { - "dependencies": "", "hidden": 0, "is_query_report": 0, - "label": "Student Report Generation Tool", + "label": "Student Monthly Attendance Sheet", "link_count": 0, - "link_to": "Student Report Generation Tool", - "link_type": "DocType", + "link_to": "Student Monthly Attendance Sheet", + "link_type": "Report", "onboard": 0, + "report_ref_doctype": "Student Attendance", "type": "Link" }, { "hidden": 0, "is_query_report": 0, - "label": "Tools", + "label": "Student Batch-Wise Attendance", "link_count": 0, + "link_to": "Student Batch-Wise Attendance", + "link_type": "Report", + "onboard": 0, + "report_ref_doctype": "Student Attendance", + "type": "Link" + }, + { + "hidden": 0, + "is_query_report": 0, + "label": "Academics", + "link_count": 7, + "link_type": "DocType", "onboard": 0, "type": "Card Break" }, { - "dependencies": "", "hidden": 0, "is_query_report": 0, - "label": "Student Attendance Tool", + "label": "Academic Year", "link_count": 0, - "link_to": "Student Attendance Tool", + "link_to": "Academic Year", "link_type": "DocType", "onboard": 0, "type": "Link" }, { - "dependencies": "", "hidden": 0, "is_query_report": 0, - "label": "Assessment Result Tool", + "label": "Academic Term", "link_count": 0, - "link_to": "Assessment Result Tool", + "link_to": "Academic Term", "link_type": "DocType", "onboard": 0, "type": "Link" }, { - "dependencies": "", "hidden": 0, "is_query_report": 0, - "label": "Student Group Creation Tool", + "label": "Program", "link_count": 0, - "link_to": "Student Group Creation Tool", + "link_to": "Program", "link_type": "DocType", "onboard": 0, "type": "Link" }, { - "dependencies": "", "hidden": 0, "is_query_report": 0, - "label": "Program Enrollment Tool", + "label": "Course", "link_count": 0, - "link_to": "Program Enrollment Tool", + "link_to": "Course", "link_type": "DocType", "onboard": 0, "type": "Link" }, { - "dependencies": "", "hidden": 0, "is_query_report": 0, - "label": "Course Scheduling Tool", + "label": "Topic", "link_count": 0, - "link_to": "Course Scheduling Tool", + "link_to": "Topic", "link_type": "DocType", "onboard": 0, "type": "Link" @@ -664,24 +739,25 @@ { "hidden": 0, "is_query_report": 0, - "label": "Other Reports", + "label": "Course Schedule", "link_count": 0, + "link_to": "Course Schedule", + "link_type": "DocType", "onboard": 0, - "type": "Card Break" + "type": "Link" }, { - "dependencies": "Program Enrollment", "hidden": 0, - "is_query_report": 1, - "label": "Student and Guardian Contact Details", + "is_query_report": 0, + "label": "Course Activity", "link_count": 0, - "link_to": "Student and Guardian Contact Details", - "link_type": "Report", + "link_to": "Course Activity", + "link_type": "DocType", "onboard": 0, "type": "Link" } ], - "modified": "2024-03-13 16:18:41.360391", + "modified": "2026-03-24 23:52:50.532752", "modified_by": "Administrator", "module": "Education", "name": "Education", @@ -735,6 +811,7 @@ { "label": "Student Monthly Attendance Sheet", "link_to": "Student Monthly Attendance Sheet", + "report_ref_doctype": "Student Attendance", "type": "Report" }, { diff --git a/education/hooks.py b/education/hooks.py index b1cded08..0764632c 100644 --- a/education/hooks.py +++ b/education/hooks.py @@ -13,15 +13,6 @@ required_apps = ["erpnext"] -add_to_apps_screen = [ - { - "name": "education", - "logo": "/assets/education/edu-logo.svg", - "title": "Education", - "route": "/app/education", - "has_permission": "education.api.permissions.has_app_permission", - } -] # Includes in # ------------------ @@ -44,73 +35,73 @@ website_generators = ["Student Admission"] website_route_rules = [ - {"from_route": "/admissions", "to_route": "Student Admission"}, - {"from_route": "/student-portal/", "to_route": "student-portal"}, + {"from_route": "/admissions", "to_route": "Student Admission"}, + {"from_route": "/student-portal/", "to_route": "student-portal"}, ] treeviews = ["Assessment Group"] calendars = [ - "Course Schedule", + "Course Schedule", ] standard_portal_menu_items = [ - { - "title": "Admission", - "route": "/admissions", - "reference_doctype": "Student Admission", - "role": "Student", - }, + { + "title": "Admission", + "route": "/admissions", + "reference_doctype": "Student Admission", + "role": "Student", + }, ] default_roles = [ - {"role": "Student", "doctype": "Student", "email_field": "student_email_id"}, + {"role": "Student", "doctype": "Student", "email_field": "student_email_id"}, ] accounting_dimension_doctypes = ["Fee Schedule", "Fee Structure"] global_search_doctypes = { - "Education": [ - {"doctype": "Article", "index": 1}, - {"doctype": "Video", "index": 2}, - {"doctype": "Topic", "index": 3}, - {"doctype": "Course", "index": 4}, - {"doctype": "Program", "index": 5}, - {"doctype": "Quiz", "index": 6}, - {"doctype": "Question", "index": 7}, - {"doctype": "Fee Schedule", "index": 8}, - {"doctype": "Fee Structure", "index": 9}, - {"doctype": "Student Group", "index": 10}, - {"doctype": "Student", "index": 11}, - {"doctype": "Instructor", "index": 12}, - {"doctype": "Course Activity", "index": 13}, - {"doctype": "Quiz Activity", "index": 14}, - {"doctype": "Course Enrollment", "index": 15}, - {"doctype": "Program Enrollment", "index": 16}, - {"doctype": "Student Language", "index": 17}, - {"doctype": "Student Applicant", "index": 18}, - {"doctype": "Assessment Result", "index": 19}, - {"doctype": "Assessment Plan", "index": 20}, - {"doctype": "Grading Scale", "index": 21}, - {"doctype": "Guardian", "index": 22}, - {"doctype": "Student Leave Application", "index": 23}, - {"doctype": "Student Log", "index": 24}, - {"doctype": "Room", "index": 25}, - {"doctype": "Course Schedule", "index": 26}, - {"doctype": "Student Attendance", "index": 27}, - {"doctype": "Announcement", "index": 28}, - {"doctype": "Student Category", "index": 29}, - {"doctype": "Assessment Group", "index": 30}, - {"doctype": "Student Batch Name", "index": 31}, - {"doctype": "Assessment Criteria", "index": 32}, - {"doctype": "Academic Year", "index": 33}, - {"doctype": "Academic Term", "index": 34}, - {"doctype": "School House", "index": 35}, - {"doctype": "Student Admission", "index": 36}, - {"doctype": "Fee Category", "index": 37}, - {"doctype": "Assessment Code", "index": 38}, - {"doctype": "Discussion", "index": 39}, - ] + "Education": [ + {"doctype": "Article", "index": 1}, + {"doctype": "Video", "index": 2}, + {"doctype": "Topic", "index": 3}, + {"doctype": "Course", "index": 4}, + {"doctype": "Program", "index": 5}, + {"doctype": "Quiz", "index": 6}, + {"doctype": "Question", "index": 7}, + {"doctype": "Fee Schedule", "index": 8}, + {"doctype": "Fee Structure", "index": 9}, + {"doctype": "Student Group", "index": 10}, + {"doctype": "Student", "index": 11}, + {"doctype": "Instructor", "index": 12}, + {"doctype": "Course Activity", "index": 13}, + {"doctype": "Quiz Activity", "index": 14}, + {"doctype": "Course Enrollment", "index": 15}, + {"doctype": "Program Enrollment", "index": 16}, + {"doctype": "Student Language", "index": 17}, + {"doctype": "Student Applicant", "index": 18}, + {"doctype": "Assessment Result", "index": 19}, + {"doctype": "Assessment Plan", "index": 20}, + {"doctype": "Grading Scale", "index": 21}, + {"doctype": "Guardian", "index": 22}, + {"doctype": "Student Leave Application", "index": 23}, + {"doctype": "Student Log", "index": 24}, + {"doctype": "Room", "index": 25}, + {"doctype": "Course Schedule", "index": 26}, + {"doctype": "Student Attendance", "index": 27}, + {"doctype": "Announcement", "index": 28}, + {"doctype": "Student Category", "index": 29}, + {"doctype": "Assessment Group", "index": 30}, + {"doctype": "Student Batch Name", "index": 31}, + {"doctype": "Assessment Criteria", "index": 32}, + {"doctype": "Academic Year", "index": 33}, + {"doctype": "Academic Term", "index": 34}, + {"doctype": "School House", "index": 35}, + {"doctype": "Student Admission", "index": 36}, + {"doctype": "Fee Category", "index": 37}, + {"doctype": "Assessment Code", "index": 38}, + {"doctype": "Discussion", "index": 39}, + ] } # include js, css files in header of web form diff --git a/education/workspace_sidebar/education.json b/education/workspace_sidebar/education.json new file mode 100644 index 00000000..4425bb12 --- /dev/null +++ b/education/workspace_sidebar/education.json @@ -0,0 +1,659 @@ +{ + "app": "education", + "creation": "2026-03-24 11:56:33.005452", + "docstatus": 0, + "doctype": "Workspace Sidebar", + "header_icon": "education", + "idx": 0, + "items": [ + { + "child": 0, + "collapsible": 1, + "icon": "home", + "indent": 0, + "keep_closed": 0, + "label": "Home", + "link_to": "Education", + "link_type": "Workspace", + "show_arrow": 0, + "type": "Link" + }, + { + "child": 0, + "collapsible": 1, + "icon": "graduation-cap", + "indent": 1, + "keep_closed": 1, + "label": "Admissions", + "link_type": "DocType", + "show_arrow": 0, + "type": "Section Break" + }, + { + "child": 1, + "collapsible": 1, + "indent": 0, + "keep_closed": 0, + "label": "Student Applicant", + "link_to": "Student Applicant", + "link_type": "DocType", + "show_arrow": 0, + "type": "Link" + }, + { + "child": 1, + "collapsible": 1, + "indent": 0, + "keep_closed": 0, + "label": "Student Admission", + "link_to": "Student Admission", + "link_type": "DocType", + "show_arrow": 0, + "type": "Link" + }, + { + "child": 0, + "collapsible": 1, + "icon": "users-round", + "indent": 1, + "keep_closed": 1, + "label": "Student Management", + "link_type": "DocType", + "show_arrow": 0, + "type": "Section Break" + }, + { + "child": 1, + "collapsible": 1, + "indent": 0, + "keep_closed": 0, + "label": "Student", + "link_to": "Student", + "link_type": "DocType", + "show_arrow": 0, + "type": "Link" + }, + { + "child": 1, + "collapsible": 1, + "indent": 0, + "keep_closed": 0, + "label": "Student Group", + "link_to": "Student Group", + "link_type": "DocType", + "show_arrow": 0, + "type": "Link" + }, + { + "child": 1, + "collapsible": 1, + "indent": 0, + "keep_closed": 0, + "label": "Student Category", + "link_to": "Student Category", + "link_type": "DocType", + "show_arrow": 0, + "type": "Link" + }, + { + "child": 1, + "collapsible": 1, + "indent": 0, + "keep_closed": 0, + "label": "Student Batch Name", + "link_to": "Student Batch Name", + "link_type": "DocType", + "show_arrow": 0, + "type": "Link" + }, + { + "child": 1, + "collapsible": 1, + "indent": 0, + "keep_closed": 0, + "label": "Guardian", + "link_to": "Guardian", + "link_type": "DocType", + "show_arrow": 0, + "type": "Link" + }, + { + "child": 1, + "collapsible": 1, + "indent": 0, + "keep_closed": 0, + "label": "Program Enrollment", + "link_to": "Program Enrollment", + "link_type": "DocType", + "show_arrow": 0, + "type": "Link" + }, + { + "child": 1, + "collapsible": 1, + "indent": 0, + "keep_closed": 0, + "label": "Course Enrollment", + "link_to": "Course Enrollment", + "link_type": "DocType", + "show_arrow": 0, + "type": "Link" + }, + { + "child": 1, + "collapsible": 1, + "indent": 0, + "keep_closed": 0, + "label": "Student Log", + "link_to": "Student Log", + "link_type": "DocType", + "show_arrow": 0, + "type": "Link" + }, + { + "child": 0, + "collapsible": 1, + "icon": "book-open-text", + "indent": 1, + "keep_closed": 1, + "label": "Academics", + "link_type": "DocType", + "show_arrow": 0, + "type": "Section Break" + }, + { + "child": 1, + "collapsible": 1, + "indent": 0, + "keep_closed": 0, + "label": "Academic Year", + "link_to": "Academic Year", + "link_type": "DocType", + "show_arrow": 0, + "type": "Link" + }, + { + "child": 1, + "collapsible": 1, + "indent": 0, + "keep_closed": 0, + "label": "Academic Term", + "link_to": "Academic Term", + "link_type": "DocType", + "show_arrow": 0, + "type": "Link" + }, + { + "child": 1, + "collapsible": 1, + "indent": 0, + "keep_closed": 0, + "label": "Program", + "link_to": "Program", + "link_type": "DocType", + "show_arrow": 0, + "type": "Link" + }, + { + "child": 1, + "collapsible": 1, + "indent": 0, + "keep_closed": 0, + "label": "Course", + "link_to": "Course", + "link_type": "DocType", + "show_arrow": 0, + "type": "Link" + }, + { + "child": 1, + "collapsible": 1, + "indent": 0, + "keep_closed": 0, + "label": "Topic", + "link_to": "Topic", + "link_type": "DocType", + "show_arrow": 0, + "type": "Link" + }, + { + "child": 1, + "collapsible": 1, + "indent": 0, + "keep_closed": 0, + "label": "Course Schedule", + "link_to": "Course Schedule", + "link_type": "DocType", + "show_arrow": 0, + "type": "Link" + }, + { + "child": 1, + "collapsible": 1, + "indent": 0, + "keep_closed": 0, + "label": "Course Activity", + "link_to": "Course Activity", + "link_type": "DocType", + "show_arrow": 0, + "type": "Link" + }, + { + "child": 0, + "collapsible": 1, + "icon": "book-open-check", + "indent": 1, + "keep_closed": 1, + "label": "Assessment", + "link_type": "DocType", + "show_arrow": 0, + "type": "Section Break" + }, + { + "child": 1, + "collapsible": 1, + "indent": 0, + "keep_closed": 0, + "label": "Assessment Plan", + "link_to": "Assessment Plan", + "link_type": "DocType", + "show_arrow": 0, + "type": "Link" + }, + { + "child": 1, + "collapsible": 1, + "indent": 0, + "keep_closed": 0, + "label": "Assessment Criteria", + "link_to": "Assessment Criteria", + "link_type": "DocType", + "show_arrow": 0, + "type": "Link" + }, + { + "child": 1, + "collapsible": 1, + "indent": 0, + "keep_closed": 0, + "label": "Assessment Group", + "link_to": "Assessment Group", + "link_type": "DocType", + "show_arrow": 0, + "type": "Link" + }, + { + "child": 1, + "collapsible": 1, + "indent": 0, + "keep_closed": 0, + "label": "Assessment Result", + "link_to": "Assessment Result", + "link_type": "DocType", + "show_arrow": 0, + "type": "Link" + }, + { + "child": 1, + "collapsible": 1, + "indent": 0, + "keep_closed": 0, + "label": "Grading Scale", + "link_to": "Grading Scale", + "link_type": "DocType", + "show_arrow": 0, + "type": "Link" + }, + { + "child": 0, + "collapsible": 1, + "icon": "circle-dollar-sign", + "indent": 1, + "keep_closed": 1, + "label": "Fee Management", + "link_type": "DocType", + "show_arrow": 0, + "type": "Section Break" + }, + { + "child": 1, + "collapsible": 1, + "indent": 0, + "keep_closed": 0, + "label": "Fees", + "link_to": "Fees", + "link_type": "DocType", + "show_arrow": 0, + "type": "Link" + }, + { + "child": 1, + "collapsible": 1, + "indent": 0, + "keep_closed": 0, + "label": "Fee Structure", + "link_to": "Fee Structure", + "link_type": "DocType", + "show_arrow": 0, + "type": "Link" + }, + { + "child": 1, + "collapsible": 1, + "indent": 0, + "keep_closed": 0, + "label": "Fee Category", + "link_to": "Fee Category", + "link_type": "DocType", + "show_arrow": 0, + "type": "Link" + }, + { + "child": 1, + "collapsible": 1, + "indent": 0, + "keep_closed": 0, + "label": "Fee Schedule", + "link_to": "Fee Schedule", + "link_type": "DocType", + "show_arrow": 0, + "type": "Link" + }, + { + "child": 1, + "collapsible": 1, + "filters": "[[\"Sales Invoice\",\"student\",\"is\",\"set\"]]", + "indent": 0, + "keep_closed": 0, + "label": "Sales Invoice", + "link_to": "Sales Invoice", + "link_type": "DocType", + "show_arrow": 0, + "type": "Link" + }, + { + "child": 1, + "collapsible": 1, + "indent": 0, + "keep_closed": 0, + "label": "Sales Order", + "link_to": "Sales Order", + "link_type": "DocType", + "show_arrow": 0, + "type": "Link" + }, + { + "child": 0, + "collapsible": 1, + "icon": "calendar-days", + "indent": 1, + "keep_closed": 1, + "label": "Attendance", + "link_type": "DocType", + "show_arrow": 0, + "type": "Section Break" + }, + { + "child": 1, + "collapsible": 1, + "indent": 0, + "keep_closed": 0, + "label": "Student Attendance", + "link_to": "Student Attendance", + "link_type": "DocType", + "show_arrow": 0, + "type": "Link" + }, + { + "child": 1, + "collapsible": 1, + "indent": 0, + "keep_closed": 0, + "label": "Student Leave Application", + "link_to": "Student Leave Application", + "link_type": "DocType", + "show_arrow": 0, + "type": "Link" + }, + { + "child": 0, + "collapsible": 1, + "icon": "tool", + "indent": 1, + "keep_closed": 1, + "label": "Tools", + "link_type": "DocType", + "show_arrow": 0, + "type": "Section Break" + }, + { + "child": 1, + "collapsible": 1, + "indent": 0, + "keep_closed": 0, + "label": "Program Enrollment Tool", + "link_to": "Program Enrollment Tool", + "link_type": "DocType", + "show_arrow": 0, + "type": "Link" + }, + { + "child": 1, + "collapsible": 1, + "indent": 0, + "keep_closed": 0, + "label": "Student Group Creation Tool", + "link_to": "Student Group Creation Tool", + "link_type": "DocType", + "show_arrow": 0, + "type": "Link" + }, + { + "child": 1, + "collapsible": 1, + "indent": 0, + "keep_closed": 0, + "label": "Student Attendance Tool", + "link_to": "Student Attendance Tool", + "link_type": "DocType", + "show_arrow": 0, + "type": "Link" + }, + { + "child": 1, + "collapsible": 1, + "indent": 0, + "keep_closed": 0, + "label": "Student Report Generation Tool", + "link_to": "Student Report Generation Tool", + "link_type": "DocType", + "show_arrow": 0, + "type": "Link" + }, + { + "child": 1, + "collapsible": 1, + "indent": 0, + "keep_closed": 0, + "label": "Assessment Result Tool", + "link_to": "Assessment Result Tool", + "link_type": "DocType", + "show_arrow": 0, + "type": "Link" + }, + { + "child": 1, + "collapsible": 1, + "indent": 0, + "keep_closed": 0, + "label": "Course Scheduling Tool", + "link_to": "Course Scheduling Tool", + "link_type": "DocType", + "show_arrow": 0, + "type": "Link" + }, + { + "child": 0, + "collapsible": 1, + "icon": "database", + "indent": 1, + "keep_closed": 1, + "label": "Setup", + "link_type": "DocType", + "show_arrow": 0, + "type": "Section Break" + }, + { + "child": 1, + "collapsible": 1, + "icon": "", + "indent": 0, + "keep_closed": 0, + "label": "Instructor", + "link_to": "Instructor", + "link_type": "DocType", + "show_arrow": 0, + "type": "Link" + }, + { + "child": 1, + "collapsible": 1, + "indent": 0, + "keep_closed": 0, + "label": "Room", + "link_to": "Room", + "link_type": "DocType", + "show_arrow": 0, + "type": "Link" + }, + { + "child": 0, + "collapsible": 1, + "icon": "setting-gear", + "indent": 0, + "keep_closed": 0, + "label": "Settings", + "link_to": "Education Settings", + "link_type": "DocType", + "show_arrow": 0, + "type": "Link" + }, + { + "child": 0, + "collapsible": 1, + "icon": "sheet", + "indent": 1, + "keep_closed": 1, + "label": "Reports", + "link_type": "DocType", + "show_arrow": 0, + "type": "Section Break" + }, + { + "child": 1, + "collapsible": 1, + "indent": 0, + "keep_closed": 0, + "label": "Course wise Assessment Report", + "link_to": "Course wise Assessment Report", + "link_type": "Report", + "show_arrow": 0, + "type": "Link" + }, + { + "child": 1, + "collapsible": 1, + "indent": 0, + "keep_closed": 0, + "label": "Final Assessment Grades", + "link_to": "Final Assessment Grades", + "link_type": "Report", + "show_arrow": 0, + "type": "Link" + }, + { + "child": 1, + "collapsible": 1, + "indent": 0, + "keep_closed": 0, + "label": "Assessment Plan Status", + "link_to": "Assessment Plan Status", + "link_type": "Report", + "show_arrow": 0, + "type": "Link" + }, + { + "child": 1, + "collapsible": 1, + "indent": 0, + "keep_closed": 0, + "label": "Student Fee Collection", + "link_to": "Student Fee Collection", + "link_type": "Report", + "show_arrow": 0, + "type": "Link" + }, + { + "child": 1, + "collapsible": 1, + "indent": 0, + "keep_closed": 0, + "label": "Program wise Fee Collection", + "link_to": "Program wise Fee Collection", + "link_type": "Report", + "show_arrow": 0, + "type": "Link" + }, + { + "child": 1, + "collapsible": 1, + "indent": 0, + "keep_closed": 0, + "label": "Absent Student Report", + "link_to": "Absent Student Report", + "link_type": "Report", + "show_arrow": 0, + "type": "Link" + }, + { + "child": 1, + "collapsible": 1, + "indent": 0, + "keep_closed": 0, + "label": "Student Monthly Attendance Sheet", + "link_to": "Student Monthly Attendance Sheet", + "link_type": "Report", + "show_arrow": 0, + "type": "Link" + }, + { + "child": 1, + "collapsible": 1, + "indent": 0, + "keep_closed": 0, + "label": "Student Batch-Wise Attendance", + "link_to": "Student Batch-Wise Attendance", + "link_type": "Report", + "show_arrow": 0, + "type": "Link" + }, + { + "child": 1, + "collapsible": 1, + "indent": 0, + "keep_closed": 0, + "label": "Student and Guardian Contact Details", + "link_to": "Student and Guardian Contact Details", + "link_type": "Report", + "show_arrow": 0, + "type": "Link" + } + ], + "modified": "2026-03-24 23:52:05.716008", + "modified_by": "Administrator", + "module": "Education", + "name": "Education", + "owner": "Administrator", + "standard": 1, + "title": "Education" +} diff --git a/pyproject.toml b/pyproject.toml index f7495cf2..3f46c647 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,16 +1,56 @@ [project] name = "education" authors = [ - { name = "Frappe Technologies Pvt Ltd", email = "hello@frappe.io" } + { name = "Frappe Technologies Pvt. Ltd.", email = "hello@frappe.io"} ] description = "Education module for Frappe" -readme = "README.md" requires-python = ">=3.10" +readme = "README.md" dynamic = ["version"] [build-system] requires = ["flit_core >=3.4,<4"] build-backend = "flit_core.buildapi" +[tool.ruff] +line-length = 110 +target-version = "py310" + +[tool.ruff.lint] +select = [ + "F", + "E", + "W", + "I", + "UP", + "B", + "RUF", +] +ignore = [ + "B017", # assertRaises(Exception) - should be more specific + "B018", # useless expression, not assigned to anything + "B023", # function doesn't bind loop variable - will have last iteration's value + "B904", # raise inside except without from + "E101", # indentation contains mixed spaces and tabs + "E402", # module level import not at top of file + "E501", # line too long + "E741", # ambiguous variable name + "F401", # "unused" imports + "F403", # can't detect undefined names from * import + "F405", # can't detect undefined names from * import + "F722", # syntax error in forward type annotation + "W191", # indentation contains tabs + "RUF001", # string contains ambiguous unicode character + "UP030", # Use implicit references for positional format fields (translations) + "UP031", # Use format specifiers instead of percent format + "UP032", # Use f-string instead of `format` call (translations) +] +typing-modules = ["frappe.types.DF"] + +[tool.ruff.format] +quote-style = "double" +indent-style = "tab" +docstring-code-format = true + [tool.bench.frappe-dependencies] -frappe = ">=15.0.0-dev,<16.0.0-dev" +frappe = ">=16.0.0,<17.0.0" \ No newline at end of file diff --git a/requirements.txt b/requirements.txt deleted file mode 100644 index 7668191f..00000000 --- a/requirements.txt +++ /dev/null @@ -1 +0,0 @@ -# frappe -- https://github.com/frappe/frappe is installed via 'bench init' \ No newline at end of file diff --git a/setup.py b/setup.py deleted file mode 100644 index defc035b..00000000 --- a/setup.py +++ /dev/null @@ -1,19 +0,0 @@ -from setuptools import setup, find_packages - -with open("requirements.txt") as f: - install_requires = f.read().strip().split("\n") - -# get version from __version__ variable in education/__init__.py -from education import __version__ as version - -setup( - name="education", - version=version, - description="Education", - author="Frappe Technologies Pvt. Ltd.", - author_email="hello@frappe.io", - packages=find_packages(), - zip_safe=False, - include_package_data=True, - install_requires=install_requires, -)