This is the folder Odoo watches for custom modules. Common paths:
- Local install:
/opt/odoo/odoo18/custom_addons/ - Docker: inside the container at the path set in
odoo.conf→addons_path - Odoo.sh: the
addons/folder in your git repo.
| Availability |
Odoo Online
Odoo.sh
On Premise
|
| Odoo Apps Dependencies |
Discuss (mail)
|
| Lines of code | 570 |
| Technical Name |
student_management |
| License | LGPL-3 |
A complete educational module for Odoo 18 — manage students, teachers, courses, and staff from a single, clean interface.
Odoo 18 Education v18.0.1.0.0 LGPL-3Full student profiles with date-of-birth validation. Only ages 18–60 are accepted, enforced automatically.
Dedicated teacher model with personal details and easy linking to courses they teach.
Assign students and teachers to courses. Average student age is computed automatically.
Administrative and support staff records kept separate from academic personnel.
Automatic log messages posted to the chatter whenever a student is enrolled in a course.
One wizard to search across students, teachers, and staff simultaneously by keyword.
Understanding the module's structure helps you customise or extend it later. Here is what each folder and key file does:
| Path | What it does |
|---|---|
__manifest__.py |
The module's identity card. Odoo reads this first.
It declares the name, version, dependencies (base, mail),
and the list of XML data files to load.
|
__init__.py |
Tells Python that this folder is a package and
imports the models sub-package.
|
models/student.py |
Defines the student.student model with age validation. |
models/teacher.py |
Defines the student.teacher model. |
models/course.py |
Defines student.course with many2many relationships
and a computed average-age field.
|
models/staff.py |
Defines the student.staff model. |
models/base_person.py |
Abstract base model shared by Student, Teacher, and Staff. |
models/search_service.py |
Business logic for the unified search feature. |
wizard/search_wizard.py |
Transient model (wizard) that drives the search dialog. |
views/*.xml |
Form, list, and search views for every model, plus the top-level menu. |
security/ir.model.access.csv |
Access control rules — who can read / write / create / delete each model. |
static/description/ |
icon.png shown in the Apps list; this
index.html shown as the module's description page.
|
tests/ |
Unit tests that run with --test-enable. |
Follow the steps below from start to finish. Each step is explained in plain language so even a first-time Odoo user can succeed.
.zip of it) on your computer.addons Folder (Recommended for Developers)This is the folder Odoo watches for custom modules. Common paths:
/opt/odoo/odoo18/custom_addons/odoo.conf → addons_pathaddons/ folder in your git repo.
Place the entire student_management folder
(not just its contents) inside custom_addons/.
The result should look like:
custom_addons/student_management/__manifest__.py
addons_path in odoo.conf
Open /etc/odoo/odoo.conf (or wherever your config lives)
and make sure the path to custom_addons is listed:
addons_path = /opt/odoo/odoo18/odoo/addons,/opt/odoo/odoo18/custom_addons
So Odoo picks up the new path:
sudo systemctl restart odoo
Or, if running manually:
python odoo-bin -c /etc/odoo/odoo.conf
Go to Settings → General Settings → Developer Tools and click "Activate the developer mode". This unlocks the Update App List button.
?debug=1
to any Odoo URL in your browser.
Go to Apps (top menu) → click "Update App List" (visible only in developer mode). Confirm the dialog that appears.
In the Apps search bar type Student Management. Remove the "Apps" filter if the module does not appear. Click Install.
.zip File via the Odoo InterfaceUse this method when you cannot access the server's file system directly.
.zip archive of the module
On your computer, right-click the
student_management folder →
Compress / Send to → Zip.
The zip must contain the folder itself, so the structure inside is:
student_management/__manifest__.py
__manifest__.py
must NOT be at the root of the zip.
It must be one level deep, inside the named folder.
Settings → General Settings → Developer Tools → Activate the developer mode (same as step 5 in Method A above).
Go to the Apps menu. In developer mode a new button "Upload Module" appears in the top-left area of the Apps page. Click it.
.zip file
A file-upload dialog opens. Click Choose File,
navigate to your student_management.zip,
and confirm.
Odoo extracts the zip, copies the module to its add-ons folder, and automatically refreshes the App List. You will see a success message.
Search for Student Management in the Apps list and click Install — identical to Step 7 of Method A.
When you click Install, Odoo does the following automatically — you do not have to do any of this manually:
| Step | What Odoo Does |
|---|---|
| 1. Dependency check |
Reads depends in __manifest__.py
(base, mail) and installs them first
if not already present.
|
| 2. Database migration |
Runs CREATE TABLE statements for every model
(student_student, student_teacher, etc.)
with all their columns.
|
| 3. Security rules |
Loads security/ir.model.access.csv to create
access-control records for every group.
|
| 4. Views & menus |
Loads all XML files listed under data in the manifest:
form views, list views, search views, and the top-level menu items.
|
| 5. UI refresh | Odoo reloads your browser so the new Student Management menu appears immediately. |
Click the Student Management icon on the Home screen, or navigate to the top menu bar. You will see a menu with entries: Students, Teachers, Courses, Staff, Search.
Go to Courses → New. Give it a name (e.g. "Mathematics 101") and save. A course must exist before students can be enrolled.
Go to Students → New. Fill in name, date of birth (must result in age 18–60), and assign a course. Save the record — the chatter will log the enrolment automatically.
Same flow: go to Teachers → New or Staff → New and fill in the details.
Click Search in the menu, type a keyword, and the wizard will return matching students, teachers, and staff all in one results dialog.
When you release a new version:
Copy the updated student_management folder
to your custom_addons directory, overwriting the old one.
sudo systemctl restart odoo
Find Student Management in the Apps list and click the ⋮ → Upgrade button. Odoo will apply any new columns, views, or data files.
python odoo-bin -u student_management -d <your_db>
In the Apps list, find Student Management and click ⋮ → Uninstall. Confirm the warning dialog.
| Requirement | Value |
|---|---|
| Odoo version | 18.0 |
| Python | 3.10 + |
| Dependencies | base, mail |
| License | LGPL-3 |
| Database | PostgreSQL (handled by Odoo) |
| External libraries | None — pure Odoo ORM |
Developed by Basem Walid. For questions, bug reports, or feature requests please open an issue in the project repository or contact the author directly.
Please log in to comment on this module