Giter Site home page Giter Site logo

frappe / education Goto Github PK

View Code? Open in Web Editor NEW
115.0 20.0 109.0 11 MB

Open source education / school management system

License: Other

Python 60.23% JavaScript 21.16% HTML 4.83% Vue 12.73% CSS 1.05%
education erp erpnext frappe school-erp school-management

education's Introduction

Frappe Education Logo

Open Source, Easy to Use, Education Management System.

Documentation

Frappe Education is an open-source and user-friendly Education Management System designed to streamline the administrative and academic processes of educational institutions. It is a powerful module based on the ERPNext software.

Frappe Education is dedicated to making education management more efficient and less time-consuming. The module offers a range of features that cater to the needs of educators and administrators, facilitating a more organized and effective learning environment.

Table of Contents

Key Features

Education Sub modules
  1. Student Master

    Maintain comprehensive profiles for students, guardians, and siblings. πŸ‘¨β€πŸ‘©β€πŸ‘§β€πŸ‘¦

    Screenshot 2024-03-16 at 4 15 33 PM

  1. Instructor Master

    Maintain comprehensive profiles for Instructor,and Instructor Log. πŸ§‘β€πŸ«

    Screenshot 2023-11-22 at 11 42 46 AM

  1. Student Admission

    Streamline the admission process for new students. πŸŽ“

    Screenshot 2024-03-08 at 1 18 55 AM

  1. Student Promotion

    Promote Students from one class to another. πŸ“‹

    Screenshot 2024-03-08 at 1 21 27 AM

  1. Fee Structure

    Organize and manage the fee structure and schedule payments. πŸ’°

    Screenshot 2024-03-08 at 1 21 58 AM

  1. Fee Plans

    Manage fee structure and divide it based on fee plans, such as "Term Wise/Quaterly/Half Yearly/Yearly".

    Screenshot 2024-03-16 at 4 19 48 PM

  1. Course Scheduling

    Efficiently schedule courses and manage course calendars. πŸ—“οΈ

    Screenshot 2024-03-08 at 1 31 28 AM

  1. Student Attendance

    Track and manage student attendance records. βœ”οΈ

    Screenshot 2024-03-16 at 4 28 38 PM

  1. Exam Planning

    Plan Exams effectively. πŸ“

    Screenshot 2024-03-16 at 4 28 38 PM

  1. Exam Results

    Manage results for the exams scheduled.

    Screenshot 2024-03-08 at 1 26 25 AM

  1. Student Portal

    Students can visit portal to check their time table, attendance, pay fees online and see current and previous grades.

    • Student Time Table

      Screenshot 2024-02-21 at 6 03 02 PM
    • Grades/Results

      Screenshot 2024-02-21 at 6 03 09 PM
    • Fee Payment History

      Screenshot 2024-02-21 at 6 03 20 PM
    • Fee Payment via Razorpay

      Screenshot 2024-02-21 at 6 03 54 PM
    • Student Attendance

      Screenshot 2024-02-21 at 6 04 12 PM
    • Apply for Leave

      Screenshot 2024-02-21 at 6 04 27 PM
    • Student Profile Date

      Screenshot 2024-02-21 at 6 09 03 PM

Installation

  1. Install bench on your local machine

  2. Install ERPNext

  3. Once ERPNext is installed, install the Education App by using:

    $ bench get-app education
  4. After that, you can install the Education app on the required site by running

    $ bench --site sitename install-app education

Deployment

Frappe Education is an app built on top of the Frappe Framework & ERPNext.

Managed Hosting

Frappe Education can be deployed in few clicks by using Frappe Cloud.

Self Hosting

You can self host the module by following Frappe Bench Installation Instructions.

Contributions & Community

  1. If you find any bugs while using the app or have a feature request for the app, you can report/add them here Github Issues. Make sure to add proper information and screenshots.
  2. Follow the Contribution Guidelines & Issue Guidelines - create an issue.

Links

  1. Telegram GroupΒ - Join our Telegram group to connect with us where can discuss everything regarding the Education Module. Feel free to share ideas and issues you face while using the Education Module.
  2. DocumentationΒ - This link will take you to our comprehensive documentation, where you can find all the information you need to understand and use the Education Module effectively. It includes all the workflows, masters and DocTypes which currently Exists

License

GNU GPL V3. See license.txt for more information.

education's People

Contributors

achillesrasquinha avatar ankush avatar anupamvs avatar codingcoffee avatar deepeshgarg007 avatar frappe-bot avatar jigneshpshah avatar jprashant09 avatar khushalti avatar manassolanki avatar marination avatar mujeerhashmi avatar nabinhait avatar netchampfaris avatar niyazrazak avatar pateljannat avatar ritviksardana avatar rmehta avatar rohitwaghchaure avatar rtdany10 avatar ruchamahabal avatar sagarvora avatar sahil28297 avatar saurabh6790 avatar scmmishra avatar shariquerik avatar shreyashah115 avatar surajshetty3416 avatar vr-greycube avatar zlash65 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

education's Issues

You do not have Read or Select Permissions for Academic Term v13.19.0

Information about bug

When Instructors try to use Student Attendance Tool by link .../app/student-attendance-tool
They have the error:
You do not have Read or Select Permissions for Academic Term
QIP Shot - Screen 148

On v13.18.0 was no problem with it. Maybe something changed?

Module

education

Version

ERPNext: v13.19.0 (version-13)
Frappe Framework: v13.19.0 (version-13)

Installation method

No response

Relevant log output / Stack trace / Full Error Message.

No response

Can't attach Department for Instructor in Education Domain.

Description of the issue

Can't attach Department to Instructor in Education Domain. I choose Department and click Save button, but after reloading of page I have no department.

Context information (for bug reports)

Output of bench version

ERPNext: v13.13.0 (version-13)

Frappe Framework: v13.13.0 (version-13)

Steps to reproduce the issue

  1. Go to Instructor page ../app/instructor
  2. Choose one Instructor.
  3. Choose some department for Instructor in Department field.
  4. Click Save button.
  5. Reload page.

Observed result

No value in Department.

Expected result

Department value equal choosed department.

bandicam.2021-12-09.20-56-00-891.mp4

Stacktrace / full error message

(paste here)

Additional information

OS version / distribution, ERPNext install method, etc.

Mandatory field property failed to work based on the selection of field 'Group Based on' on 'Student Group' Page

Steps:

  1. Login and proceed to Student Group page.
  2. Click on New to create new Student Group.
  3. Select 'Group Based on' as 'Batch' and add 'Student Group Name'.
  4. Noticed that Program field does not have mandatory field property and if user is clicking on Save button validation message throws as 'Please select Program'
  5. Same is applicable with 'Group Based on' as 'Course'. After selection of course, 'Course' field should have mandatory field property.

Expected Result:
All mandatory fields should show in red colored text box so that user will be intimated as red color text box fields are mandatory fields on form.

image

image

Student applicant (from student admission)

Description of the issue

A user can enter an academic term that is not linked to the default displayed academic year. (terms should be filtered to only displays those that belong to the academic year).

A user should not be able to change the academic year in the webform. That should be fixed in function of the student admission form.

A user should not be able to enter academic year / academic term from the past.

The gender in the student application webform is not correct. It should be select from Male / Female as per doctype Student applicant.

Taking student attendance for a student group when not schedule

Description of the issue

Using the student attendance tool, you are able to take attendance for a student group based on course for any day you want (even weekend). You should only be able to take attendance when the course based student group has been scheduled for.
If there is a course schedule, attendance should only be taken against that course schedule.

Steps to reproduce the issue

  1. student attendace tool
    2.select Based on "Student Group" , select any student group, select Group based on "Course"
  2. pick any date you want and you can record attendance.

bug: Cancelled enrollment should not be fetched

One Enrollment is cancelled
image
In the student group its showing 12 Student
image
But in the fees schedule its showing 13 enrollments including that cancelled document
image
so cancelled enrollment should not be fetched

Bug+: Payment Entry no longer recognizes Fees docs

On the latest ERPNext Beta (v14-beta5), the payment entry doctype no longer recognizes Students as a Party Type nor Fees as an Invoice. This was a deliberate change.

Going forward, how should we accept payment on Fees documents?

Error creating Assessment Group

Information about bug

In Assessment Group there is no default Parent Assessment Group field which is [All Assessment Group]-> Cannot create Assessment Group.

Education.-.Google.Chrome.2022-10-12.08-44-48.mp4

Requirement: Create a parent field [All Assessment Group]. Or turn off mandatory feature for Parent Assessment Group field

Module

education

Version

Frappe Framework: v14.2.0 (version-14)
ERPNext: v14.0.0 (version-14)

Installation method

No response

Relevant log output / Stack trace / Full Error Message.

No response

How to pass a Fees Exemption with refund entry

Fee exemption:-the government issues some fee concession to students of school that is called Fees-Exemption.

Two option to do fee-Exemption in ERPNext

First Option:-
Fees is created for a student:-
image
Payment is received regarding the fees:-
image
A fee exemption journal entry is created:-
image
A Refund Journal entry is also created
image

Second option:-
Fees is created for a student:-
image
Payment is received regarding the fees:-
image
A negative fee exemption is created for student:-
image
A Journal entry for refund is also created:-
image

Which option would be better for doing fees-Exemption from these two?????

Program Enrollment Tool overlays modal layers in div "alert-container"

Description of the issue

Hello! This is my first bug report here.
Program Enrollment Tool overlays modal layers in div "alert-container" and you should close all modal layers after submitting. If you have many students it will need many clicks do,

Context information (for bug reports)

Output of bench version

ERPNext: v13.13.0 (version-13)

Frappe Framework: v13.13.0 (version-13)

Steps to reproduce the issue

  1. Go here .../app/program-enrollment-tool
  2. Get Students From: Student Applicant
  3. Choose program and Academic year.
  4. Add many rows of students in the table Students
  5. Click on Submit button.

Observed result

Many modal layers.

Expected result

One modal layer.

Stacktrace / full error message

No error

Additional information

Google Chrome

Future date of birth accepted in Student Application

Steps to reproduce the issue:
1] Go to Student Application form
2] Create new Student Application
3] Enter future date on date of birth field

Description:
Future date of birth accepted in Student Application

Expected Result:
Throw error on save for date of birth cannot be a future date on Student Application

AttributeError: 'EducationSettings' object has no attribute 'user_creation_skip'

Description of the issue

I have a student applicant. After Approving I want to enroll him/her in the program, but I get this error:
AttributeError: 'EducationSettings' object has no attribute 'user_creation_skip'

Context information (for bug reports)

Output of bench version

erpnext 12.2.2
frappe 12.0.20

Steps to reproduce the issue

  1. Create a new student applicant
  2. Approve him/her
  3. Try to enroll him / her

Observed result

AttributeError: 'EducationSettings' object has no attribute 'user_creation_skip'

Expected result

Student should be enrolled and a new student should be created.

Stacktrace

Traceback (most recent call last):
  File "/home/frappe/frappe-bench/apps/frappe/frappe/app.py", line 60, in application
    response = frappe.api.handle()
  File "/home/frappe/frappe-bench/apps/frappe/frappe/api.py", line 55, in handle
    return frappe.handler.handle()
  File "/home/frappe/frappe-bench/apps/frappe/frappe/handler.py", line 22, in handle
    data = execute_cmd(cmd)
  File "/home/frappe/frappe-bench/apps/frappe/frappe/handler.py", line 61, in execute_cmd
    return frappe.call(method, **frappe.form_dict)
  File "/home/frappe/frappe-bench/apps/frappe/frappe/__init__.py", line 1042, in call
    return fn(*args, **newargs)
  File "/home/frappe/frappe-bench/apps/frappe/frappe/model/mapper.py", line 30, in make_mapped_doc
    return method(source_name)
  File "/home/frappe/frappe-bench/apps/erpnext/erpnext/education/api.py", line 36, in enroll_student
    student.save()
  File "/home/frappe/frappe-bench/apps/frappe/frappe/model/document.py", line 272, in save
    return self._save(*args, **kwargs)
  File "/home/frappe/frappe-bench/apps/frappe/frappe/model/document.py", line 295, in _save
    self.insert()
  File "/home/frappe/frappe-bench/apps/frappe/frappe/model/document.py", line 253, in insert
    self.run_method("after_insert")
  File "/home/frappe/frappe-bench/apps/frappe/frappe/model/document.py", line 787, in run_method
    out = Document.hook(fn)(self, *args, **kwargs)
  File "/home/frappe/frappe-bench/apps/frappe/frappe/model/document.py", line 1058, in composer
    return composed(self, method, *args, **kwargs)
  File "/home/frappe/frappe-bench/apps/frappe/frappe/model/document.py", line 1041, in runner
    add_to_return_value(self, fn(self, *args, **kwargs))
  File "/home/frappe/frappe-bench/apps/frappe/frappe/model/document.py", line 781, in 
    fn = lambda self, *args, **kwargs: getattr(self, method)(*args, **kwargs)
  File "/home/frappe/frappe-bench/apps/erpnext/erpnext/education/doctype/student/student.py", line 43, in after_insert
    if not frappe.get_single('Education Settings').user_creation_skip:
AttributeError: 'EducationSettings' object has no attribute 'user_creation_skip'

Student guardian contact details not working if student has no guardian

Description of the issue

Student guardian contact details report is not working if the students has not been assigned any guardian.

erpnext/education/report/student_and_guardian_contact_details/student_and_guardian_contact_details.py

Context information (for bug reports)

Output of bench version

(paste here)

Steps to reproduce the issue

Observed result

Expected result

Stacktrace / full error message

(paste here)

Additional information

OS version / distribution, ERPNext install method, etc.

Fee Status Not Update After Success Payment [Education Domain] v.13

Description of the issue

Fee status is not updated after success creating payment

Context information (for bug reports)

Output of bench version
ERPNext Production
erpnext 13.0.2
frappe 13.0.3


## Steps to reproduce the issue

1. Access education module and open fee menu.
2. Create fee for student and submit.
3. Create payment from fee form that already submitted.
4. Fill required field for payment than submit.
5. Done

### Observed result
Payment status is Submitted
![image_2021-04-16_125415](https://user-images.githubusercontent.com/82632111/114978027-da5fa280-9eb2-11eb-85a6-1b8137e52947.png)
But Fee status is still unpaid
![image_2021-04-16_130033](https://user-images.githubusercontent.com/82632111/114978677-bb154500-9eb3-11eb-9451-095881a6138f.png)


### Expected result
Fee status change to paid after success make payment.

### Stacktrace / full error message

(paste here)


## Additional information

OS version / distribution, `ERPNext` install method, etc.

Template assessment_result_tool not found.

Information about bug

Education -> Assessment Result Tool -> Select Assessment Plan -> Error "Template assessment_result_tool not found."
image

Module

education

Version

ERPNext version 14

Installation method

No response

Relevant log output / Stack trace / Full Error Message.

No response

Incorrect message getting displayed if user trying to insert negative value in 'Max Strength' field on 'Student Group' form

Steps:
Proceed to Student Group Page.
Enter negative value in Max Strength field.
Noticed that incorrect message getting displayed if user trying save the form.
Message: Cannot enroll more than -1 students for this student group.

Expected Result:
Proper validation message should be displayed if user saving the form with negative value.
"Cannot insert negative value in Max Strength"

image

Page education-settings not found

Whenever I open a single doctype under the education module, I got Page [single-doctype-name] not found. For instance, when I open Education Settings, I get Page education-settings not found. I've tried migrating the site and running bench build but nothing has changed.

image

Student Leave Application accepting invalid from date and to date.

## Description of the issue
When user post student leave application if enters from date less than to date it is accepting this invalid date

## Steps to reproduce the issue

  1. Open Student Leave Application form
  2. Enter from date say 13-02-2020 and to date say 13-02-2020 (From date is less than to date)
  3. Save the Student leave application form.

### Observed result
The Student application form is not throwing any invalid date validation and form gets saved.

Expected result

The student application form should not be allowed to save the form.

Duplicate Topics getting added on Course Topic child table on Course Doctype

Description of the issue
Duplicate Topics getting added on Course Topic child table on Course Doctype
Domain : Education
Doctype: Course
ChildTable : Course Topic

Issue Screenshot
Course_doc

Steps to reproduce the issue
1.Go to Course List
2.Create New Course
3. Click on add on Topic child table
4. You can add multiple Topics to the same Course.
5. Ideally there must be only one Topic to one course.

Expected Result

  1. Child Table should display topics which are not in selected Topics

UX: Course schedule- Calendar view

Information about bug

Try seeing course schedule in a calendar view

image

If the course name is too long and time frame is low, then full name and time of the course if not visible. This will usually happen in week view and month view.

Module

education

Version

v13.19

Installation method

No response

Relevant log output / Stack trace / Full Error Message.

No response

Student Report Generation Tool generates server error

Information about bug

The Student Report Generation Tool throws an SQL syntax error.
Screenshot 2022-02-07 at 1 17 08 PM

Module

education

Version

ERPNext: v13.18.0 (version-13)
Frappe Framework: v13.18.0 (version-13)

Installation method

manual install

Relevant log output / Stack trace / Full Error Message.

Traceback (most recent call last):
  File "apps/frappe/frappe/app.py", line 68, in application
    response = frappe.api.handle()
  File "apps/frappe/frappe/api.py", line 55, in handle
    return frappe.handler.handle()
  File "apps/frappe/frappe/handler.py", line 31, in handle
    data = execute_cmd(cmd)
  File "apps/frappe/frappe/handler.py", line 67, in execute_cmd
    return frappe.call(method, **frappe.form_dict)
  File "apps/frappe/frappe/__init__.py", line 1208, in call
    return fn(*args, **newargs)
  File "apps/erpnext/erpnext/education/doctype/student_report_generation_tool/student_report_generation_tool.py", line 34, in preview_report_card
    values = get_formatted_result(doc, get_course=True, get_all_assessment_groups=doc.include_all_assessment)
  File "apps/erpnext/erpnext/education/report/course_wise_assessment_report/course_wise_assessment_report.py", line 101, in get_formatted_result
    tuple(args_list), as_dict=1)
  File "apps/frappe/frappe/database/database.py", line 148, in sql
    self._cursor.execute(query, values)
  File "env/lib/python3.7/site-packages/pymysql/cursors.py", line 148, in execute
    result = self._query(query)
  File "env/lib/python3.7/site-packages/pymysql/cursors.py", line 310, in _query
    conn.query(q)
  File "env/lib/python3.7/site-packages/pymysql/connections.py", line 548, in query
    self._affected_rows = self._read_query_result(unbuffered=unbuffered)
  File "env/lib/python3.7/site-packages/pymysql/connections.py", line 775, in _read_query_result
    result.read()
  File "env/lib/python3.7/site-packages/pymysql/connections.py", line 1156, in read
    first_packet = self.connection._read_packet()
  File "env/lib/python3.7/site-packages/pymysql/connections.py", line 725, in _read_packet
    packet.raise_for_error()
  File "env/lib/python3.7/site-packages/pymysql/protocol.py", line 221, in raise_for_error
    err.raise_mysql_exception(self._data)
  File "env/lib/python3.7/site-packages/pymysql/err.py", line 143, in raise_mysql_exception
    raise errorclass(errno, errval)
pymysql.err.ProgrammingError: (1064, "You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near ')  and ar.student in ('EDU-STU-2022-00001')\n\t\tORDER BY\n\t\t\tard.assessment_crit...' at line 8")

can't create assessment group

Version Details

Education: v0.0.1 (develop)
ERPNext: v14.2.0 (HEAD)
Frappe Framework: v14.8.0 (HEAD)

I'm using V14, which the education domain, has to be installed manually
After the installation, when going to assessment group tree, i found that the parent group is "undefined"
alt text

and as you know i need parent group to create child group, so when i call the parent name "undefined" in parent text box, it can't be called, or not exist
alt text

So, i can't create any group without callable parent, in my case there in non !!

in the ideal set up, you found All assessment group as the default parent
but, in my mine is "undefined"

Error installing Education Domain

App Versions

{
	"education": "0.0.1",
	"erpnext": "14.0.0-dev",
	"frappe": "14.0.0-dev"
}

Route

Form/Domain Settings/Domain Settings

Trackeback

Traceback (most recent call last):
  File "apps/frappe/frappe/desk/form/save.py", line 23, in savedocs
    doc.save()
  File "apps/frappe/frappe/model/document.py", line 288, in save
    return self._save(*args, **kwargs)
  File "apps/frappe/frappe/model/document.py", line 339, in _save
    self.run_post_save_methods()
  File "apps/frappe/frappe/model/document.py", line 1071, in run_post_save_methods
    self.run_method("on_update")
  File "apps/frappe/frappe/model/document.py", line 912, in run_method
    out = Document.hook(fn)(self, *args, **kwargs)
  File "apps/frappe/frappe/model/document.py", line 1251, in composer
    return composed(self, method, *args, **kwargs)
  File "apps/frappe/frappe/model/document.py", line 1233, in runner
    add_to_return_value(self, fn(self, *args, **kwargs))
  File "apps/frappe/frappe/model/document.py", line 909, in fn
    return method_object(*args, **kwargs)
  File "apps/frappe/frappe/core/doctype/domain_settings/domain_settings.py", line 27, in on_update
    domain.setup_domain()
  File "apps/frappe/frappe/core/doctype/domain/domain.py", line 17, in setup_domain
    self.setup_data()
  File "apps/frappe/frappe/core/doctype/domain/domain.py", line 81, in setup_data
    self.data = frappe.get_domain_data(self.name)
  File "apps/frappe/frappe/__init__.py", line 821, in get_domain_data
    return _dict(get_attr(get_hooks("domains")[module][0] + ".data"))
  File "apps/frappe/frappe/__init__.py", line 1490, in get_attr
    return getattr(get_module(modulename), methodname)
  File "apps/frappe/frappe/__init__.py", line 1243, in get_module
    return importlib.import_module(modulename)
  File "/usr/local/Cellar/[email protected]/3.9.12_1/Frameworks/Python.framework/Versions/3.9/lib/python3.9/importlib/__init__.py", line 127, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
  File "<frozen importlib._bootstrap>", line 1030, in _gcd_import
  File "<frozen importlib._bootstrap>", line 1007, in _find_and_load
  File "<frozen importlib._bootstrap>", line 984, in _find_and_load_unlocked
ModuleNotFoundError: No module named 'education.setup'

Traceback (most recent call last):
  File "apps/frappe/frappe/app.py", line 67, in application
    response = frappe.api.handle()
  File "apps/frappe/frappe/api.py", line 54, in handle
    return frappe.handler.handle()
  File "apps/frappe/frappe/handler.py", line 39, in handle
    data = execute_cmd(cmd)
  File "apps/frappe/frappe/handler.py", line 77, in execute_cmd
    return frappe.call(method, **frappe.form_dict)
  File "apps/frappe/frappe/__init__.py", line 1500, in call
    return fn(*args, **newargs)
  File "apps/frappe/frappe/desk/form/save.py", line 23, in savedocs
    doc.save()
  File "apps/frappe/frappe/model/document.py", line 288, in save
    return self._save(*args, **kwargs)
  File "apps/frappe/frappe/model/document.py", line 339, in _save
    self.run_post_save_methods()
  File "apps/frappe/frappe/model/document.py", line 1071, in run_post_save_methods
    self.run_method("on_update")
  File "apps/frappe/frappe/model/document.py", line 912, in run_method
    out = Document.hook(fn)(self, *args, **kwargs)
  File "apps/frappe/frappe/model/document.py", line 1251, in composer
    return composed(self, method, *args, **kwargs)
  File "apps/frappe/frappe/model/document.py", line 1233, in runner
    add_to_return_value(self, fn(self, *args, **kwargs))
  File "apps/frappe/frappe/model/document.py", line 909, in fn
    return method_object(*args, **kwargs)
  File "apps/frappe/frappe/core/doctype/domain_settings/domain_settings.py", line 27, in on_update
    domain.setup_domain()
  File "apps/frappe/frappe/core/doctype/domain/domain.py", line 17, in setup_domain
    self.setup_data()
  File "apps/frappe/frappe/core/doctype/domain/domain.py", line 81, in setup_data
    self.data = frappe.get_domain_data(self.name)
  File "apps/frappe/frappe/__init__.py", line 821, in get_domain_data
    return _dict(get_attr(get_hooks("domains")[module][0] + ".data"))
  File "apps/frappe/frappe/__init__.py", line 1490, in get_attr
    return getattr(get_module(modulename), methodname)
  File "apps/frappe/frappe/__init__.py", line 1243, in get_module
    return importlib.import_module(modulename)
  File "/usr/local/Cellar/[email protected]/3.9.12_1/Frameworks/Python.framework/Versions/3.9/lib/python3.9/importlib/__init__.py", line 127, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
  File "<frozen importlib._bootstrap>", line 1030, in _gcd_import
  File "<frozen importlib._bootstrap>", line 1007, in _find_and_load
  File "<frozen importlib._bootstrap>", line 984, in _find_and_load_unlocked
ModuleNotFoundError: No module named 'education.setup'

Request Data

{
	"type": "POST",
	"args": {
		"doc": "{\"name\":\"Domain Settings\",\"owner\":\"Administrator\",\"modified\":\"2022-05-23 09:11:54.160612\",\"modified_by\":\"Administrator\",\"docstatus\":0,\"idx\":\"0\",\"doctype\":\"Domain Settings\",\"active_domains\":[{\"docstatus\":0,\"doctype\":\"Has Domain\",\"name\":\"new-has-domain-1\",\"__islocal\":1,\"__unsaved\":1,\"owner\":\"Administrator\",\"parent\":\"Domain Settings\",\"parentfield\":\"active_domains\",\"parenttype\":\"Domain Settings\",\"idx\":1,\"domain\":\"Education\"}],\"__last_sync_on\":\"2022-05-23T03:49:52.033Z\",\"__unsaved\":1}",
		"action": "Save"
	},
	"btn": {
		"jQuery3600104424923983997051": {
			"events": {
				"click": [
					{
						"type": "click",
						"origType": "click",
						"guid": 421,
						"namespace": ""
					}
				]
			}
		}
	},
	"freeze": true,
	"headers": {},
	"error_handlers": {},
	"url": "/api/method/frappe.desk.form.save.savedocs"
}

Response Data

{
	"exception": "ModuleNotFoundError: No module named 'education.setup'"
}

Program Enrollment - course filter does not work.

Description of the issue

When using Program enrollment, and adding courses, it should only fetch courses as set in the program doctype. At the moment, it fetches all courses (except for those already selected, as per this other bug that has been solved: frappe/erpnext#20611)

The code that is not working is this:

@frappe.whitelist()
@frappe.validate_and_sanitize_search_inputs
def get_program_courses(doctype, txt, searchfield, start, page_len, filters):
if filters.get('program'):
return frappe.db.sql("""select course, course_name from tabProgram Course
where parent = %(program)s and course like %(txt)s {match_cond}
order by
if(locate(%(_txt)s, course), locate(%(_txt)s, course), 99999),
idx desc,
tabProgram Course.course asc
limit {start}, {page_len}""".format(
match_cond=get_match_cond(doctype),
start=start,
page_len=page_len), {
"txt": "%{0}%".format(txt),
"_txt": txt.replace('%', ''),
"program": filters['program']
})

But I have not found a way to change it to make it work.
All I can say is that it fetches all the courses and not the one indicated in the program. I am on ERPNEXT V12

fix: Filtered Employee based on Department on Instructor doctype

Description of the issue
If department is selected there should be employees belongs to that department.

Steps to reproduce the issue

  1. Go to instructor list create new instructor.
  2. Select the department and then select employee.

Observed result
All employees are visible when one department is selected

Expected result
Only those employees should be there who belongs to that department.

AwesomeScreenshot-2020-2-15-1581754886036

OS version / distribution, ERPNext install method, etc.

New Program Enrolling Student freezes! Do not work correct after submitting!

Description of the issue

When I enrolling student I have a freeze layer on 50%, but enrol was done.

Context information (for bug reports)

Output of bench version

ERPNext: v13.13.0 (version-13)

Frappe Framework: v13.13.0 (version-13)

Steps to reproduce the issue

  1. Create and Submit Student Applicant
  2. Enroll Program

Observed result

Status of enrolling freeze on 50% and layer still open!

Expected result

Status of enrolling should reach 100% and close layer!

Stacktrace / full error message

(paste here)

Additional information

OS version / distribution, ERPNext install method, etc.

Broken Link on DocType "Content Activity"

Information about bug

The DocType "Content Activity" has a Link field which specifies "Content" as an option, but no such DocType exists.

image

Version

v13, develop

Module

education

Version

Frappe Framework: v13.16.0 (version-13)
ERPNext: v13.16.1 (version-13)

Installation method

manual install

Relevant log output / Stack trace / Full Error Message.

No response

Code of Conduct

  • I agree to follow this project's Code of Conduct

ModuleNotFoundError: No module named 'education.setup'

Hi,
I have installed erpnext education module on erpnext v13, but it does not show in the workspace menu. hence i tried adding it in the domain setting, but i keep getting the above error.

mean while erpnext run fine.

details:
ubuntu server: 20.04.1
erpnext v13

Student Report Generation Tool Empty Display

Description of the issue

After students marks are entered in the system, it expected that the report for the individual student can be produced. Using the Student Report Generation tool, reports are unable to be produced.

Context information (for bug reports)

Output of bench version

ERPNEXT version 12

Steps to reproduce the issue

Check the link below for further information and how to reproduce this issue.

https://discuss.erpnext.com/t/student-report-generation-tool-doesnt-display-student-results-on-report-printing/57999

Observed result

Student report Generated is blank

Expected result

Population of student report with the marks clearly visible for all courses.

Stacktrace / full error message

Traceback (most recent call last):
  File "/home/frappe/frappe-bench/apps/frappe/frappe/app.py", line 60, in application
    response = frappe.api.handle()
  File "/home/frappe/frappe-bench/apps/frappe/frappe/api.py", line 55, in handle
    return frappe.handler.handle()
  File "/home/frappe/frappe-bench/apps/frappe/frappe/handler.py", line 22, in handle
    data = execute_cmd(cmd)
  File "/home/frappe/frappe-bench/apps/frappe/frappe/handler.py", line 61, in execute_cmd
    return frappe.call(method, **frappe.form_dict)
  File "/home/frappe/frappe-bench/apps/frappe/frappe/__init__.py", line 1042, in call
    return fn(*args, **newargs)
  File "/home/frappe/frappe-bench/apps/frappe/frappe/__init__.py", line 515, in wrapper_fn
    retval = fn(*args, **get_newargs(fn, kwargs))
  File "/home/frappe/frappe-bench/apps/frappe/frappe/desk/query_report.py", line 183, in run
    result = generate_report_result(report, filters, user)
  File "/home/frappe/frappe-bench/apps/frappe/frappe/desk/query_report.py", line 68, in generate_report_result
    res = report.execute_script_report(filters)
  File "/home/frappe/frappe-bench/apps/frappe/frappe/core/doctype/report/report.py", line 104, in execute_script_report
    res = self.execute_module(filters)
  File "/home/frappe/frappe-bench/apps/frappe/frappe/core/doctype/report/report.py", line 121, in execute_module
    return frappe.get_attr(method_name)(frappe._dict(filters))
  File "/home/frappe/frappe-bench/apps/erpnext/erpnext/education/report/course_wise_assessment_report/course_wise_assessment_report.py", line 25, in execute
    frappe.throw(_("Please select the assessment group other than 'All Assessment Groups'"))
  File "/home/frappe/frappe-bench/apps/frappe/frappe/__init__.py", line 364, in throw
    msgprint(msg, raise_exception=exc, title=title, indicator='red')
  File "/home/frappe/frappe-bench/apps/frappe/frappe/__init__.py", line 350, in msgprint
    _raise_exception()
  File "/home/frappe/frappe-bench/apps/frappe/frappe/__init__.py", line 316, in _raise_exception
    raise raise_exception(msg)
frappe.exceptions.ValidationError: Please select the assessment group other than 'All Assessment Groups'

Course schedule can take an instructor that is not one defined in the student group

Description of the issue

When creating a course schedule (with course schedule doctype), one can select any instructor for the schedule for that particular group. This should not be the case. It should pick up instructors from the student group instructor child table.
For that, there is need to create another doctype that is a child table of course schedule. It should be called "Course Schedule Instructor" The instructors should be the one from that are defined in the student group instructor.

Second, you can create a schedule for a date that is outside the academic year and/or term that the student group has been defined in.

Context information (for bug reports)

Output of bench version

(paste here)

Steps to reproduce the issue

Observed result

Expected result

Stacktrace / full error message

(paste here)

Additional information

OS version / distribution, ERPNext install method, etc.

Education Fees Not updating Correctly After - Disocunt allowed or Write Off

Information about bug

Case Scenario:
Student (A) has total fees of 10000(example) and pays 2500(example) , the school gives a discount of 2000 , so in total the system sees it as a 4500 in payment in the student ledger , however on the fees doctype , the system only takes into account the paid amount of 2500 and shows total owing as 10000-2500=7500 but in the student ledger the total owing is 5500 after discount. The total owing or outstanding should be the same there should not be a mismatch between the ledger and what is on the actual fees doctype.

Actual Case:

On Fees Payment Doctype:

PaymentEntryDoc

On Fees Payment Doctype:

FeesOutstandingTable

On Student Ledger:

StudentLedger

On payment Request :

payment Request

Module

education

Version

ERPNext: v13.7.0 (version-13)

Frappe Framework: v13.7.0 (version-13)

Installation method

No response

Relevant log output / Stack trace / Full Error Message.

No response

fix: Student Applicant considered in Guardian DocType while load_students

Description of the issue

Cannot change Guardian details for a Guardian who is referred to in a Student Applicant

Context information (for bug reports)

Creating a Student Applicant with a Guardian stores the information in Student Guardian child DocType. This information is used by load_students in Guardian DocType and populates it into "Guardian Student" DocType for temporary purposes.
Guardian on_validate the students Table field is cleared []

Output of bench version

frappe 13.0.0-beta.10```

## Steps to reproduce the issue

1. Create a Guardian - ABC
2. Create a Student Applicant. Add the Guardian ABC after saving into the Guardians "Student Applicant" doctype.
3. Open the Guardian - ABC. You will see the Student Applicant listed under "Students" child table.
4. Change the Guardian email address and try to save.

### Observed result
It gives an error cannot find Student

### Expected result
It should allow to be changed

### Stacktrace / full error message

(paste here)


## Additional information

OS version / distribution, `ERPNext` install method, etc.
Ubuntu 18
easy install method


Solution:
https://github.com/frappe/erpnext/blob/3c77a4697b221674647860b7919867acdb55ea1a/erpnext/education/doctype/guardian/guardian.py#L22

change 
```		students = frappe.get_all("Student Guardian", filters={"guardian":self.name}, fields=["parent"])

to

		students = frappe.get_all("Student Guardian", filters={"guardian":self.name, "parenttype": "Student"}, fields=["parent"])

Fatal Error | Student Report Generation Tool.

## Description of the issue

While printing the report card of the Student Report Generation Tool it is giving a Fatal error.

## Steps to reproduce the issue

  1. Open Student Report Generation Tool
  2. Select Student
  3. Select assessment group as 'All Assessment Groups'
  4. Select Academic year and program.
  5. Click on the Print Report Card button.

### Observed result

It is showing a Fatal Error.

Traceback (most recent call last):
  File "/home/indictrans/workspace/v12/frappe-bench/apps/frappe/frappe/app.py", line 60, in application
    response = frappe.api.handle()
  File "/home/indictrans/workspace/v12/frappe-bench/apps/frappe/frappe/api.py", line 55, in handle
    return frappe.handler.handle()
  File "/home/indictrans/workspace/v12/frappe-bench/apps/frappe/frappe/handler.py", line 24, in handle
    data = execute_cmd(cmd)
  File "/home/indictrans/workspace/v12/frappe-bench/apps/frappe/frappe/handler.py", line 63, in execute_cmd
    return frappe.call(method, **frappe.form_dict)
  File "/home/indictrans/workspace/v12/frappe-bench/apps/frappe/frappe/__init__.py", line 1068, in call
    return fn(*args, **newargs)
  File "/home/indictrans/workspace/v12/frappe-bench/apps/erpnext/erpnext/education/doctype/student_report_generation_tool/student_report_generation_tool.py", line 31, in preview_report_card
    values = get_formatted_result(doc, get_course=True, get_all_assessment_groups=doc.include_all_assessment)
  File "/home/indictrans/workspace/v12/frappe-bench/apps/erpnext/erpnext/education/report/course_wise_assessment_report/course_wise_assessment_report.py", line 101, in get_formatted_result
    tuple(args_list), as_dict=1)
  File "/home/indictrans/workspace/v12/frappe-bench/apps/frappe/frappe/database/database.py", line 156, in sql
    self._cursor.execute(query, values)
  File "/home/indictrans/workspace/v12/frappe-bench/env/lib/python3.5/site-packages/pymysql/cursors.py", line 170, in execute
    result = self._query(query)
  File "/home/indictrans/workspace/v12/frappe-bench/env/lib/python3.5/site-packages/pymysql/cursors.py", line 328, in _query
    conn.query(q)
  File "/home/indictrans/workspace/v12/frappe-bench/env/lib/python3.5/site-packages/pymysql/connections.py", line 517, in query
    self._affected_rows = self._read_query_result(unbuffered=unbuffered)
  File "/home/indictrans/workspace/v12/frappe-bench/env/lib/python3.5/site-packages/pymysql/connections.py", line 732, in _read_query_result
    result.read()
  File "/home/indictrans/workspace/v12/frappe-bench/env/lib/python3.5/site-packages/pymysql/connections.py", line 1075, in read
    first_packet = self.connection._read_packet()
  File "/home/indictrans/workspace/v12/frappe-bench/env/lib/python3.5/site-packages/pymysql/connections.py", line 684, in _read_packet
    packet.check_error()
  File "/home/indictrans/workspace/v12/frappe-bench/env/lib/python3.5/site-packages/pymysql/protocol.py", line 220, in check_error
    err.raise_mysql_exception(self._data)
  File "/home/indictrans/workspace/v12/frappe-bench/env/lib/python3.5/site-packages/pymysql/err.py", line 109, in raise_mysql_exception
    raise errorclass(errno, errval)
pymysql.err.ProgrammingError: (1064, "You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near ')  and ar.student in ('EDU-STU-2020-00001')\n\t\tORDER BY\n\t\t\tard.assessment_criteri' at line 8")

**### Expected result
Screen recording
**

By clicking Print Report Card it should generate a report card.

Error while creating a new 'Student' in Education module

Information about bug

Issue: Error while creating 'Student' in Education module -

Steps to reproduce the bug:

  • Click on 'Add student'.
  • Enter student details.
  • Click on save.

Actual result:
Unable to create new student with the error message - pymysql.err.OperationalError: (1054, "Unknown column 'parenttype' in 'field list'")
erp

Module

education

Version

erpnext: 13.39.0
frappe: 13.41.1
posawesome: 3.4.0

Installation method

FrappeCloud

Relevant log output / Stack trace / Full Error Message.

### App Versions

{
	"erpnext": "13.39.0",
	"frappe": "13.41.1",
	"posawesome": "3.4.0"
}

Route

Form/Student/new-student-1

Trackeback

Traceback (most recent call last):
  File "apps/frappe/frappe/app.py", line 69, in application
    response = frappe.api.handle()
  File "apps/frappe/frappe/api.py", line 55, in handle
    return frappe.handler.handle()
  File "apps/frappe/frappe/handler.py", line 38, in handle
    data = execute_cmd(cmd)
  File "apps/frappe/frappe/handler.py", line 76, in execute_cmd
    return frappe.call(method, **frappe.form_dict)
  File "apps/frappe/frappe/__init__.py", line 1457, in call
    return fn(*args, **newargs)
  File "apps/frappe/frappe/desk/form/save.py", line 24, in savedocs
    doc.save()
  File "apps/frappe/frappe/model/document.py", line 310, in save
    return self._save(*args, **kwargs)
  File "apps/frappe/frappe/model/document.py", line 332, in _save
    return self.insert()
  File "apps/frappe/frappe/model/document.py", line 261, in insert
    self.run_before_save_methods()
  File "apps/frappe/frappe/model/document.py", line 1052, in run_before_save_methods
    self.run_method("validate")
  File "apps/frappe/frappe/model/document.py", line 941, in run_method
    out = Document.hook(fn)(self, *args, **kwargs)
  File "apps/frappe/frappe/model/document.py", line 1261, in composer
    return composed(self, method, *args, **kwargs)
  File "apps/frappe/frappe/model/document.py", line 1243, in runner
    add_to_return_value(self, fn(self, *args, **kwargs))
  File "apps/frappe/frappe/model/document.py", line 938, in fn
    return method_object(*args, **kwargs)
  File "apps/erpnext/erpnext/education/doctype/student/student.py", line 24, in validate
    self.update_student_name_in_linked_doctype()
  File "apps/erpnext/erpnext/education/doctype/student/student.py", line 47, in update_student_name_in_linked_doctype
    linked_doctypes = get_linked_doctypes("Student")
  File "apps/frappe/frappe/desk/form/linked_with.py", line 259, in get_linked_doctypes
    return frappe.cache().hget("linked_doctypes", doctype, lambda: _get_linked_doctypes(doctype))
  File "apps/frappe/frappe/utils/redis_wrapper.py", line 210, in hget
    value = generator()
  File "apps/frappe/frappe/desk/form/linked_with.py", line 259, in <lambda>
    return frappe.cache().hget("linked_doctypes", doctype, lambda: _get_linked_doctypes(doctype))
  File "apps/frappe/frappe/desk/form/linked_with.py", line 266, in _get_linked_doctypes
    ret.update(get_dynamic_linked_fields(doctype, without_ignore_user_permissions_enabled))
  File "apps/frappe/frappe/desk/form/linked_with.py", line 363, in get_dynamic_linked_fields
    df.doctype, filters={df.doctype_fieldname: doctype}, fields=["parenttype"], distinct=True
  File "apps/frappe/frappe/__init__.py", line 1741, in get_all
    return get_list(doctype, *args, **kwargs)
  File "apps/frappe/frappe/__init__.py", line 1713, in get_list
    return frappe.model.db_query.DatabaseQuery(doctype).execute(*args, **kwargs)
  File "apps/frappe/frappe/model/db_query.py", line 170, in execute
    result = self.build_and_run()
  File "apps/frappe/frappe/model/db_query.py", line 215, in build_and_run
    ignore_ddl=self.ignore_ddl,
  File "apps/frappe/frappe/database/database.py", line 180, in sql
    self._cursor.execute(query)
  File "env/lib/python3.7/site-packages/pymysql/cursors.py", line 148, in execute
    result = self._query(query)
  File "env/lib/python3.7/site-packages/pymysql/cursors.py", line 310, in _query
    conn.query(q)
  File "env/lib/python3.7/site-packages/pymysql/connections.py", line 548, in query
    self._affected_rows = self._read_query_result(unbuffered=unbuffered)
  File "env/lib/python3.7/site-packages/pymysql/connections.py", line 775, in _read_query_result
    result.read()
  File "env/lib/python3.7/site-packages/pymysql/connections.py", line 1156, in read
    first_packet = self.connection._read_packet()
  File "env/lib/python3.7/site-packages/pymysql/connections.py", line 725, in _read_packet
    packet.raise_for_error()
  File "env/lib/python3.7/site-packages/pymysql/protocol.py", line 221, in raise_for_error
    err.raise_mysql_exception(self._data)
  File "env/lib/python3.7/site-packages/pymysql/err.py", line 143, in raise_mysql_exception
    raise errorclass(errno, errval)
pymysql.err.OperationalError: (1054, "Unknown column 'parenttype' in 'field list'")

Request Data

{
	"type": "POST",
	"args": {
		"doc": "{\"docstatus\":0,\"doctype\":\"Student\",\"name\":\"new-student-1\",\"__islocal\":1,\"__unsaved\":1,\"owner\":\"[email protected]\",\"enabled\":1,\"naming_series\":\"EDU-STU-.YYYY.-\",\"joining_date\":\"2022-10-29\",\"blood_group\":\"A-\",\"first_name\":\"Student\",\"middle_name\":\"one\",\"last_name\":\"last\",\"date_of_birth\":\"1999-01-01\",\"gender\":\"Male\",\"city\":\"freetown\",\"state\":\"freetown\"}",
		"action": "Save"
	},
	"btn": {
		"jQuery224079497244362684931": {
			"events": {
				"click": [
					{
						"type": "click",
						"origType": "click",
						"guid": 1224,
						"namespace": ""
					}
				]
			}
		}
	},
	"freeze": true,
	"headers": {},
	"error_handlers": {},
	"url": "/api/method/frappe.desk.form.save.savedocs"
}

Response Data

{
	"exception": "pymysql.err.OperationalError: (1054, \"Unknown column 'parenttype' in 'field list'\")"
}

use pyschedule to schedule classes for schools

hi @neilLasrado ,
I hope you are well,
I found this great python library that maybe you could integrate with the 'School' project.
https://github.com/timnon/pyschedule

I've created my whole school schedule with this library and it is mighty powerful ;-)

From what i have experienced with erpnext-school is that you can schedule slot in different time/room with various teachers/students. And erp will tell you if it there is no conflict. It will be cool if you don't have to find yourself / create yourself the whole schedule.

What do you think?

I'm happy to share the Jupyter notebook from which I created our schedule.

Best,

François

Program & Course docTypes not showing in List View

When trying to create a Program, Course or Room by selecting the link in the Workspace, the following error appears:-
"Page program not found
The resource you are looking for is not available
"
Direct access to the docTypes through the Awesomebar is also not working.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    πŸ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. πŸ“ŠπŸ“ˆπŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❀️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.