- Web Application for management of grades and marks of students for a School/University.
- Implemented using Django framework along with PostgreSQL database.
- A simple development cycle with stages including Documentation, Designing, Coding, Testing and Improvement was practiced.
- Checklist to tick off once developed.
- Developer Journal to record the learning and development progress.
- Git Management: using Sourcetree
- DataBase: using PostgreSQL
- DB management: using Data Grip, this is similar to PgAdmin4, but more advanced.
- Best practice to confidential: see os.env
- Wireframes for UI
- Email SMTP service with GMail
- upload_student function need to use test.xlsx
django debug toolbar
: follow link- run demo test account: demo accounts
can be set up with: VS Code
- upgraded pip with the my project python 3.10.6,
pip install --upgrade pip
- use
sudo lsof -t -i tcp:8000
to monitor the port 8000, if port 8000 is occupied, for example if 86597, then usekill -9 86597
in terminal
Semester
andCourse
is used many-to-many relationshipClass
andStudent
is used many-to-many relationship thruEnrollment
(using Intermediate model to easily add more fields in the future and to avoid the complexity of many-to-many relationship)
- Function-based
User Registration
in (views.py - Function-based
User Update Profile
(choose 'student' or 'lecturer' group) in views.py, forms.py User login
is managed byBuilt-in User Authentication
system- Using group_tags.py to manage Authorization in the front end pages.
- templates are developed in registration folder
admin_config folder is used to customise the admin site, see all comments in the py files.
Upload_Student
- managed by function-based upload_student, student_admin
- UI is customised in the admin site, to see templates
- test.xlsx is used to test the upload function
Enrol/remove/show student to classes
is managed by enrolment_adminAssign/remove/change/show a lecturer to a class
is managed by class_admin
these functions were developed alongside some html templates.
- Only
Semester
model's CRUD were tested with generic views, and developed templates for testing only. - `Lecturer to Enter Marks
List of enrolled Students
is managed by the class-based view LecturerEnrolmentListView to see the list of student who enrolled in the same class of this lecturerEnter Mark
is managed by class-based view LecturerEnrolmentUpdateView and LecturerEnrolmentForm to update the mark of that student
Lecturer to Email Student
- the back-end is supported by Gmail's SMTP service
- function is managed by function-based view send_email to send email to those students who enrolled in the same class of this lecturer
Stutdent to View Marks
- the
list_view
is managed by StudentEnrolmentListView to see the list of enrolled classes (), if the student is not enrolled, will be handled by a well-displayed message. - the
detail_view
is managed by StudentEnrolmentDetailView to see the detail of the course, class and the marked grade.
- Generic view coded in generic_views,
- Display control forms.py to control fields showing
- Rest of
models
shall repeatedly followSemester
model's CRUD templates
NOTE: since I've used the admin-site to manage the CRUD, so I didn't use the generic view for this project.