Giter Club home page Giter Club logo

ifitwala_ed's Introduction

Ifitwala Ed

This is a Frappe App based on the Erpnext Education domain with several tweaks to make it fit our own purpose and experience of educational systems.
This is first and foremost an education analytics web-based platform. Although this is not a learning management system (LMS), it is designed to help monitor student learning with all the school stakeholders in mind.

It has several modules such as:

  • Student. Mainly to capture all demographics data related to students and guardians.
  • Schedule. Mainly to help create students and instructors schedule. It has all programs and courses.
  • School Settings. Mainly to set up
    • the academic calendar (start and end of academic year, academic terms),
    • the various sections (Kindergarden, Primary-School, Middle-School, High-School)
    • the various departments (Maths, English, Sciences, Arts, PE, etc.)
    • the buildings and their rooms
  • Curriculum planning (Standards, curriculum planning documents linked to courses)
  • Health. Mainly to set up
    • the health profile of each student
    • record each visit of students to the nurse office
  • Human Resources
    • each employee with their profile, designation and history within the institution.
  • Library
  • Professional development.

Role based platform.

Given roles:

  • Student
  • Guardian
  • School IT
  • Schedule Maker
  • Instructor
  • Counsellor
  • Nurse
  • Library User

License

MIT

ifitwala_ed's People

Contributors

fderyckel avatar

Stargazers

 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

ifitwala_ed's Issues

Program

TODO

  • you should not be able to enter twice the same course in the list of course.
  • Is it necessary to have in the child table course name. I think course is enough. Instead put other info like is it on the CMS, is it included in the report, etc.
  • Now when filtering courses in Program, only select active courses (should not show discontinued courses).
  • you should not be able to add a discontinued course

Done

  • should filter out the course that have already been included in the child table.

School Event

  • someone with schedule maker role could not see the start/end of academic year in the list view. User could see it in calendar view though.

Courses

TODO:

  • filter out assessment criteria if already entered. Not sure why it is not working

DONE.

  • add color in list view. Green for active, grey for discontinued.
  • in list view, only show active course by default.
  • add the logic for total weighting of criteria = 100
  • add validation that you cannot add twice the same criteria.

Student

TOFIX

  • Using patient or medical practicioner or customer doctype as model, redo the student contact and address, same with guardian.
  • my filter in student guardian from the student doctype is not working.
    TODO
  • When a student info is updated, it should update the relevant doc in user and patient student
  • Change the status of the student with 3 choices: enrolled, graduated, left. And 3 colors: green, blue, gray. Impact on: student group, student patient, program enrollemnt, student group
  • need to change the filters in program enrollment (only select student that are enrolled)
  • Change the filters in student log. Only look for enrolled students
  • change of status should affect student patient.

Student Siblings

  • When a sibling link is created, it should create the similar link to the other sibling
  • When a sibling link is deleted, it should delete the similar link to the other sibling

Student Patient Visit

  • create a hidden field with the "nurse" full name picked up from employee full name.
  • Use that field when creating the log entry for student.

Automatically create the instructor role once an instructor is created.

Once an instructor is created, one should create the role of instructor.
If instructor is set to left then role should be updated to not be an instructor anymore \

Taken from Employee

def update_user(self):
	# add employee role if missing
	user = frappe.get_doc("User", self.user_id)
	user.flags.ignore_permissions = True

	if "Employee" not in user.get("roles"):
		user.append_roles("Employee")

Department

TODO:

  • in child table department member, filter to not show member already picked,
  • in child table department member, filter to only show member from that school that has been picked. [REMOVE AS IT IS NOT A GOOD IDEA, YOU CAN HAVE TEAM OF PEOPLE FROM DIFFERENT SCHOOLS. A TEAM OF EDUCATORS DOES NOT HAVE TO BE FROM THE SAME SCHOOL.]

Student Log

  • add a fielf for who wrote the note. To be picked from employee

  • note should be submittable (not save)...

  • student log can be written by everyone but not read by everyone. It should be read for instance by the program lead, the academic admin, the instructor who teach that student.

  • Should choose by default the current term and year from the general school setting file.

Course scheduling

TODO

  • We do not schedule course during the weekend and holidays??? (actually this has to be well thought out? Just make it an option. If option ticked, then remove every scheduled course if it falls into that calendar.
  • Automatically fetch the default color from a js script.
  • Create a report kind of tool where if you pick a course and a unit, it will tell you how many courses left you have for those units and how you already had. The time will be in a number of scheduled courses and in hours.
  • In an 8 days cycle schedule, for instance, yes, one can choose (as an option) to leave out weekend and holidays as per school calendar. To do a8 days, schedule, you will need to create another scheduling tool (which will still create school schedule) but the logic is different, so let's just create another tool.
  • [ ]

Course Enrollment

When I cancel a created program enrollment it should delete the related course enrollment. At the moment it doesn't and so we have several course enrollment that are identic... this will mess up the intended results when going on the CMS and LMS

  • Delete course enrollments related to a program enrollment

TODO

  • Change status in student to Enrolled, Left, Graduated
  • Develop a Leaving Student Tool: it could fetch all students from a program if one chose to or fetch particular students.
  • Develop the table for the Leaving Student. That will fill automatically the fields in the students sheet.
  • Develop the meeting module. It will have already 2 types of meeting. Dpt. meeting with all the people in a dpt. and Student review meeting. This could be based on a course, a program or a cohort.
  • Add a table in the student doctype for history in school, (for instance when graduating from a program, when enrolling and leaving and graduating, etc.). as field, it will have: event type, date, notes.

Learning Unit

  • with JS, if program is selected filter only courses within that program

Department discussion

Should the department lead automatically be added to the list of dpt member.
I think so ... that it should.

Actually I think one should pick the lead, just from the dpt. member (and not the other way around)

MAP Testing

TODO

  • Set up rules that date of test should only be within the term indicated.
  • Check for duplicate
  • [ ] Student should have been enrolled in a program at the time of the test

Holiday List

TODO:

  • By default, the from_date and to_date, should be picked up by the default academic year.

Done:

Team

  • make js when filtering team member only present member who have role employee. Idea is to not show all students.
  • [ ]

Program enrollment

  • the enrollment date should by default be the first day of the term
  • write better message for double course entry in program enrollment . title _("Duplicate Course Entry), get_link_to_doc(to the course).
  • write better error message with link if there is duplicate enrollment using title and link_to_doctype
  • you should not be able to enroll a student in a course that is not part of the program. At the moment, that is possible and it should not.
  • the JS code to filter the courses for the given program is not working properly. It only filters out the courses that are not already included in the child table.
  • the js code to filter the courses in the "add multiple" window is also not totally working. It should filters out the courses that are already included in the child table
  • Add validation so that you cannot save if you have twice the same course.

Issue with Guardian and user creation

Traceback (most recent call last):
File "/home/flipo/frappe-bench/apps/frappe/frappe/model/base_document.py", line 339, in db_insert
frappe.db.sql("""INSERT INTO tab{doctype} ({columns})
File "/home/flipo/frappe-bench/apps/frappe/frappe/database/database.py", line 147, in sql
self._cursor.execute(query, values)
File "/home/flipo/frappe-bench/env/lib/python3.8/site-packages/pymysql/cursors.py", line 170, in execute
result = self._query(query)
File "/home/flipo/frappe-bench/env/lib/python3.8/site-packages/pymysql/cursors.py", line 328, in _query
conn.query(q)
File "/home/flipo/frappe-bench/env/lib/python3.8/site-packages/pymysql/connections.py", line 517, in query
self._affected_rows = self._read_query_result(unbuffered=unbuffered)
File "/home/flipo/frappe-bench/env/lib/python3.8/site-packages/pymysql/connections.py", line 732, in _read_query_result
result.read()
File "/home/flipo/frappe-bench/env/lib/python3.8/site-packages/pymysql/connections.py", line 1075, in read
first_packet = self.connection._read_packet()
File "/home/flipo/frappe-bench/env/lib/python3.8/site-packages/pymysql/connections.py", line 684, in _read_packet
packet.check_error()
File "/home/flipo/frappe-bench/env/lib/python3.8/site-packages/pymysql/protocol.py", line 220, in check_error
err.raise_mysql_exception(self._data)
File "/home/flipo/frappe-bench/env/lib/python3.8/site-packages/pymysql/err.py", line 109, in raise_mysql_exception
raise errorclass(errno, errval)
pymysql.err.IntegrityError: (1062, "Duplicate entry 'Guardian Four Female' for key 'PRIMARY'")

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
File "/home/flipo/frappe-bench/apps/frappe/frappe/utils/background_jobs.py", line 100, in execute_job
method(**kwargs)
File "/home/flipo/frappe-bench/apps/frappe/frappe/core/doctype/user/user.py", line 1071, in create_contact
contact.insert(ignore_permissions=True, ignore_links=ignore_links, ignore_mandatory=ignore_mandatory)
File "/home/flipo/frappe-bench/apps/frappe/frappe/model/document.py", line 253, in insert
raise e
File "/home/flipo/frappe-bench/apps/frappe/frappe/model/document.py", line 250, in insert
self.db_insert()
File "/home/flipo/frappe-bench/apps/frappe/frappe/model/base_document.py", line 357, in db_insert
raise frappe.DuplicateEntryError(self.doctype, self.name, e)
frappe.exceptions.DuplicateEntryError: ('Contact', 'Guardian Four Female', IntegrityError(1062, "Duplicate entry 'Guardian Four Female' for key 'PRIMARY'"))

Program enrollment tool

TODO

  • put filters on the new academic term (only display those from the academic year)
  • should only pick submitted program enrollment, not draft, nor cancelled.

Employee

An employee that is instructor cannot teach before he has joined the school

Student Group

Todo:

  • If program is selected, only courses within that program should come up
  • the course field should only appear if both based on course is selected and program field is filled
  • if students have already been selected in a student group for that course for that terms, they should not come up again.
  • Student group name is not created automatically.
  • validation for that we should not be able to register twice the same students (issue with activity)
  • Once the term is finished, we should have an automatic checked on the disabled checkbox. that should be a cron job.
    JS if the academic term is chosen first, then immediately add the right academic year associated to it.
    IF the program is selected, the only courses that should show up are the courses from that program.

In getting students, if a student enrolled in a course is already part of a student group he should be filtered out to come again.

Student user and student patient

It would be better to leave the choice to the school to decide if they create user and / or patient.
So redo the code in student doctype (to match the employee)

Create 2 buttons,
one to create student user (and link the user id back to the student)
one to create the student patient (no link here, the link will be on the student patient)

What happens when a student leave the school or is graduated:
status goes from enrolled to graduated

Education Settings

  • Create a gant view where you can see both academic year and academic term
  • Once a year is chosen it should filter for the right academic terms
  • Or vice versa, if a term is chosen, it should bring up straight away the right term.

Discussion on Meeting

This should be called actually "Collaboration" (nobody like meeting)
Check the todo from minutes.
Meeting should be submittable ... because if times changes it should change time in the main calendar for everyone.
When a meeting is planned and created, it should do two things

  1. Create calendar events (in the main calendar for each of the individual meeting attendees).
  2. send an invitation email
  • add validation for times
  • change name to collaboration
  • create todo list
  • create calendar event on main calendar for each attendees

Student Attendance

We made the decision here to only allow attendance against schedule course or activities. Schedules are at the base of any good functioning schools. Allowing attendance on non-scheduled courses/activity can generate entry error on dates.

There are issues with that. Let's say I want to schedule an activity (after school prep meeting for exam conduct) and that activity is of course not based on a course. I should be able to create a schedule for just that one activity (without it being part of a course). The group would then be the whole cohort.

TODO:

  • if the student group is selected, the course schedules should only be for that group.

Issues on Meeting

  • Make sure the organizer name pop up straight away ... I have not seen that as consistent
  • The minutes are not updating on the todo once created. If someone update the minute, the link to do is not updating if it was already created.
  • once the attendee closes her/his todo as being done, it is not reflecting so on the meeting minutes.
  • add automatic color for todo - Maybe that can be done from the settings in school settings.
  • create calendar events for everyone.

Student applicant

Need to create a mutli-steps process.
At the moement, guardian details are not even completed properly.
It is really just rudimentary.

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.