Custom Odoo Module Inventory¶
Module: scola_account¶
Models¶
| Model | Type | Inherits | Description |
|---|---|---|---|
| account.chart.template | Extension | account.chart.template | Extend l10n_id chart template with school-specific accounts. This uses Odoo 17's chart template system to add school accounts alongside the standard Indonesian COA from l10n_id. |
Controllers¶
No controllers detected.
Security¶
ir.model.access.csv¶
No access rules found.
Record Rules¶
No record rules found.
Data Files¶
| File | Purpose |
|---|---|
| data/account.account.csv | Data |
| data/account.journal.xml | Data |
| data/product.product.xml | Data |
Menus¶
No menus detected.
Dependencies¶
| Module | Reason |
|---|---|
| l10n_id | Manifest dependency |
| om_account_accountant | Manifest dependency |
| om_hr_payroll | Manifest dependency |
| om_hr_payroll_account | Manifest dependency |
Module: scola_admission¶
Models¶
| Model | Type | Inherits | Description |
|---|---|---|---|
| scola.admission.pathway | New | - | Custom model |
| op.admission.register | Extension | op.admission.register | Extension for op.admission.register |
| scola.admission.register.quota | New | - | Custom model |
| scola.admission.document.type | New | - | Custom model |
| scola.admission.complaint | New (inherits) | mail.thread, mail.activity.mixin | Extension for mail.thread, mail.activity.mixin |
| scola.education.level.pathway.quota | New | - | Custom model |
| scola.education.level | New | - | Custom model |
| scola.admission.test.type | New | - | Custom model |
| scola.admission.test.schedule | New (inherits) | mail.thread, mail.activity.mixin | Extension for mail.thread, mail.activity.mixin |
| scola.admission.test.slot | New | - | Custom model |
| scola.admission.test.result | New | - | Custom model |
| op.admission | Extension | op.admission | Extension for op.admission |
| scola.admission.achievement | New | - | Custom model |
| scola.admission.document | New | - | Custom model |
Controllers¶
Catatan: endpoint baca untuk notifikasi memakai GET saat dipanggil dari frontend, sedangkan aksi mutasi tetap POST.
| Route | Method | Auth | Description |
|---|---|---|---|
| /my/admissions, /my/admissions/page/ |
- | user | portal_my_admissions |
| /my/admission/ |
- | user | portal_my_admission_detail |
| /my/admission/ |
- | user | View and manage admission documents |
| /my/admission/ |
POST | user | Handle file upload from portal |
| /api/SPMB/account/register | POST | public | Step 1: Register new account for prospective student Only creates res.partner and res.users (portal), not admission yet Required fields: name, email, password Optional fields: phone Returns: user info for login |
| /api/SPMB/registers | POST | public | Get list of active admission registers (public - for landing page preview) Use /api/SPMB/my/registers for logged-in users |
| /api/SPMB/my/registers | POST | user | Step 3: Get list of active admission registers for logged-in user Also returns user's existing admissions to check if already registered |
| /api/SPMB/pathways | POST | public | Get available pathways for a specific register |
| /api/SPMB/scholarship-types | POST | public | Get available scholarship/affirmation types |
| /api/SPMB/parent-relationships | POST | public | Get available parent relationship types (Ayah, Ibu, Wali) |
| /api/SPMB/my/admission/create | POST | user | Step 4: Create new admission for logged-in user User must be logged in and select a register and pathway Required fields: register_id, pathway_id, gender, birth_date Optional fields: phone Returns: admission info |
| /api/SPMB/register | POST | public | DEPRECATED: Use /api/SPMB/account/register + /api/SPMB/my/admission/create instead Legacy endpoint kept for backward compatibility Register new applicant in one step: 1. Create res.partner 2. Create res.users (portal) 3. Create op.admission (draft) 4. Return user info |
| /api/SPMB/my/admissions | POST | user | Get current user's admissions |
| /api/SPMB/my/admission | POST | user | Get detailed admission data with all fields from models Fields are grouped by category: - Personal: name, gender, birth_date, religion, etc - Indonesian IDs: nisn, nik, kk_number, akta_number - Address: street, city, zip, country, state - Education: register, pathway, prev_school - Zonasi: latitude, longitude, distance, kk_address - Afirmasi: affirmation_type_id, affirmation_number - Prestasi: rapor_average, achievements - Perpindahan: transfer_institution, transfer_letter - Parent: parent_name, parent_nik, parent_phone, parent_occupation, parent_email - Documents: uploaded documents |
| /api/SPMB/my/admission/update | POST | user | Update admission data Allowed fields grouped by category: - Personal: first_name, middle_name, last_name, gender, birth_date, place_of_birth, religion, phone, mobile - Indonesian IDs: nisn, nik, kk_number, akta_number - Address: street, street2, city, zip, country_id, state_id - Sekolah Asal: prev_school_name, prev_school_npsn, prev_school_address - Zonasi: latitude, longitude, kk_address, kk_issue_date - Afirmasi: affirmation_type_id, affirmation_number - Prestasi: rapor_average - Perpindahan: transfer_institution, transfer_letter_number, transfer_letter_date, is_teacher_child - Parent: parent_name, parent_nik, parent_phone, parent_email, parent_occupation |
| /api/SPMB/my/admission/submit | POST | user | Submit admission for review |
| /api/SPMB/my/admission/reapply | POST | user | Copy data from old admission to new one for reapplication |
| /api/SPMB/my/admission/document/upload | POST | user | Upload document for admission Required params: - admission_id: ID pendaftaran - document_type: Jenis dokumen (kk, akta, ijazah, rapor, ktp_ortu, foto, kip, pkh, surat_tugas, sertifikat, other) - file_base64: File dalam format base64 - filename: Nama file dengan extension Document types: - kk: Kartu Keluarga - akta: Akta Kelahiran - ijazah: Ijazah/SKL - rapor: Rapor - ktp_ortu: KTP Orang Tua - foto: Pas Foto - kip: Kartu Indonesia Pintar - pkh: Kartu PKH - surat_tugas: Surat Tugas - sertifikat: Sertifikat Prestasi - other: Lainnya |
| /api/SPMB/my/admission/document/delete | POST | user | Delete a document from admission |
| /api/SPMB/my/admission/documents | POST | user | Get all documents for an admission with required document info |
| /api/SPMB/my/admission/achievement/add | POST | user | Add achievement for admission (Jalur Prestasi) Required params: - admission_id: ID pendaftaran - achievement_type: academic, sports, arts, science, religion, other - name: Nama prestasi/lomba - level: school, district, city, province, national, international Optional params: - rank: 1, 2, 3, harapan, participant - year: Tahun prestasi - certificate_base64: File sertifikat dalam base64 - certificate_filename: Nama file sertifikat |
| /api/SPMB/my/admission/achievement/update | POST | user | Update an existing achievement |
| /api/SPMB/my/admission/achievement/delete | POST | user | Delete an achievement from admission |
| /api/SPMB/my/admission/achievements | POST | user | Get all achievements for an admission |
| /api/SPMB/my/complaints | POST | user | Get all complaints for current user's admission |
| /api/SPMB/my/complaint/create | POST | user | Create a new complaint |
| /api/SPMB/my/complaint/detail | POST | user | Get complaint detail |
Security¶
ir.model.access.csv¶
| ID | Model | Group | R | W | C | D |
|---|---|---|---|---|---|---|
| access_scola_education_level | model_scola_education_level | openeducat_admission.group_op_admission_admin | 1 | 1 | 1 | 1 |
| access_scola_education_level_user | model_scola_education_level | openeducat_admission.group_op_admission_user | 1 | 0 | 0 | 0 |
| access_scola_admission_pathway | model_scola_admission_pathway | openeducat_admission.group_op_admission_admin | 1 | 1 | 1 | 1 |
| access_scola_admission_pathway_user | model_scola_admission_pathway | openeducat_admission.group_op_admission_user | 1 | 0 | 0 | 0 |
| access_scola_admission_register_quota | model_scola_admission_register_quota | openeducat_admission.group_op_admission_admin | 1 | 1 | 1 | 1 |
| access_scola_admission_register_quota_user | model_scola_admission_register_quota | openeducat_admission.group_op_admission_user | 1 | 0 | 0 | 0 |
| access_scola_admission_document | model_scola_admission_document | openeducat_admission.group_op_admission_admin | 1 | 1 | 1 | 1 |
| access_scola_admission_document_user | model_scola_admission_document | openeducat_admission.group_op_admission_user | 1 | 1 | 1 | 0 |
| access_scola_admission_document_portal | model_scola_admission_document | base.group_portal | 1 | 1 | 1 | 0 |
| access_scola_admission_achievement | model_scola_admission_achievement | openeducat_admission.group_op_admission_admin | 1 | 1 | 1 | 1 |
| access_scola_admission_achievement_user | model_scola_admission_achievement | openeducat_admission.group_op_admission_user | 1 | 1 | 1 | 0 |
| access_scola_education_level_pathway_quota | model_scola_education_level_pathway_quota | openeducat_admission.group_op_admission_admin | 1 | 1 | 1 | 1 |
| access_scola_education_level_pathway_quota_user | model_scola_education_level_pathway_quota | openeducat_admission.group_op_admission_user | 1 | 0 | 0 | 0 |
| access_scola_admission_document_type | model_scola_admission_document_type | openeducat_admission.group_op_admission_admin | 1 | 1 | 1 | 1 |
| access_scola_admission_document_type_user | model_scola_admission_document_type | openeducat_admission.group_op_admission_user | 1 | 0 | 0 | 0 |
| access_scola_admission_document_type_portal | model_scola_admission_document_type | base.group_portal | 1 | 0 | 0 | 0 |
| access_scola_admission_complaint | model_scola_admission_complaint | openeducat_admission.group_op_admission_admin | 1 | 1 | 1 | 1 |
| access_scola_admission_complaint_user | model_scola_admission_complaint | openeducat_admission.group_op_admission_user | 1 | 1 | 1 | 0 |
| access_scola_admission_complaint_portal | model_scola_admission_complaint | base.group_portal | 1 | 1 | 1 | 0 |
| access_scola_admission_test_type | model_scola_admission_test_type | openeducat_admission.group_op_admission_admin | 1 | 1 | 1 | 1 |
| access_scola_admission_test_type_user | model_scola_admission_test_type | openeducat_admission.group_op_admission_user | 1 | 0 | 0 | 0 |
| access_scola_admission_test_schedule | model_scola_admission_test_schedule | openeducat_admission.group_op_admission_admin | 1 | 1 | 1 | 1 |
| access_scola_admission_test_schedule_user | model_scola_admission_test_schedule | openeducat_admission.group_op_admission_user | 1 | 1 | 1 | 0 |
| access_scola_admission_test_slot | model_scola_admission_test_slot | openeducat_admission.group_op_admission_admin | 1 | 1 | 1 | 1 |
| access_scola_admission_test_slot_user | model_scola_admission_test_slot | openeducat_admission.group_op_admission_user | 1 | 1 | 1 | 0 |
| access_scola_admission_test_result | model_scola_admission_test_result | openeducat_admission.group_op_admission_admin | 1 | 1 | 1 | 1 |
| access_scola_admission_test_result_user | model_scola_admission_test_result | openeducat_admission.group_op_admission_user | 1 | 1 | 1 | 0 |
Record Rules¶
| Name | Model | Domain | Groups |
|---|---|---|---|
| Portal User Own Admission | openeducat_admission.model_op_admission | [('portal_user_id', '=', user.id)] | [(4, ref('base.group_portal'))] |
Data Files¶
| File | Purpose |
|---|---|
| security/scola_admission_security.xml | Security |
| security/ir.model.access.csv | Security |
| data/admission_sequence.xml | Data |
| data/complaint_sequence.xml | Data |
| data/document_types.xml | Data |
| data/pathways.xml | Data |
| data/education_levels.xml | Data |
| views/document_type_views.xml | Views |
| views/education_level_views.xml | Views |
| views/admission_pathway_views.xml | Views |
| views/admission_register_views.xml | Views |
| views/admission_views.xml | Views |
| views/admission_document_views.xml | Views |
| views/admission_complaint_views.xml | Views |
| views/portal_templates.xml | Views |
| views/menus.xml | Views |
Menus¶
| Menu ID | Parent | Action |
|---|---|---|
| menu_scola_admission_config | openeducat_admission.menu_op_admission_root | - |
| menu_scola_education_level | menu_scola_admission_config | action_scola_education_level |
| menu_scola_admission_pathway | menu_scola_admission_config | action_scola_admission_pathway |
| menu_scola_admission_document_type | menu_scola_admission_config | action_scola_admission_document_type |
Dependencies¶
| Module | Reason |
|---|---|
| openeducat_admission | Manifest dependency |
| scola_core | Manifest dependency |
| scola_fees | Manifest dependency |
| scola_parent | Manifest dependency |
| website | Manifest dependency |
| portal | Manifest dependency |
Module: scola_attendance¶
Models¶
| Model | Type | Inherits | Description |
|---|---|---|---|
| rfid.card.history | New | - | Custom model |
| hr.attendance | Extension | hr.attendance | Extension for hr.attendance |
| rfid.attendance.rule | New | - | Custom model |
| rfid.event | New | - | Custom model |
| op.attendance.line | Extension | op.attendance.line | Extension for op.attendance.line |
| rfid.attendance.processor | New | - | Custom model |
| op.attendance.line | Extension | op.attendance.line | Extension for op.attendance.line |
| rfid.card | New (inherits) | mail.thread, mail.activity.mixin | Extension for mail.thread, mail.activity.mixin |
| rfid.security.log | New | - | Custom model |
| rfid.device | New (inherits) | mail.thread, mail.activity.mixin | Extension for mail.thread, mail.activity.mixin |
| rfid.card.lost.wizard | New | - | Custom model |
| rfid.card.import.wizard | New | - | Custom model |
Controllers¶
| Route | Method | Auth | Description |
|---|---|---|---|
| /api/rfid/cards | GET | user | Get list of RFID cards with filters and pagination |
| /api/rfid/cards | POST | user | Create new RFID card |
| /api/rfid/cards/ |
PUT | user | Update RFID card |
| /api/rfid/cards/ |
DELETE | user | Delete RFID card |
| /api/rfid/cards/import | POST | user | Bulk import RFID cards from CSV data |
| /api/rfid/cards/ |
POST | user | Report card as lost and optionally issue replacement |
| /api/rfid/cards/ |
GET | user | Get card history/audit trail |
| /api/rfid/devices | GET | user | Get list of RFID devices with health status |
| /api/rfid/devices | POST | user | Create new RFID device |
| /api/rfid/devices/ |
PUT | user | Update RFID device |
| /api/rfid/devices/ |
DELETE | user | Delete RFID device |
| /api/rfid/devices/ |
POST | user | Regenerate device secret key |
| /api/rfid/devices/ |
GET | user | Get security audit log for device |
| /api/rfid/events | GET | user | Get list of RFID events for monitoring |
| /api/rfid/events/ |
POST | user | Retry processing failed event |
| /api/rfid/monitoring | GET | user | Get dashboard monitoring data and statistics |
| /api/rfid/config | GET | user | Get RFID system configuration |
| /api/rfid/config | POST | user | Update RFID system configuration |
| /api/rfid/ingest | POST | none | Main endpoint for RFID event ingestion Expected payload: { "event_id": "evt_20260104_073015_card123", "device_id": "device_gate1", "card_uid": "0123456789ABCDEF", "event_type": "tap_in", "timestamp": "2026-01-04T07:30:15+07:00", "metadata": {...} } |
| /api/rfid/ping | GET, POST | none | Health check endpoint |
Security¶
ir.model.access.csv¶
| ID | Model | Group | R | W | C | D |
|---|---|---|---|---|---|---|
| access_rfid_card_user | model_rfid_card | group_rfid_user | 1 | 0 | 0 | 0 |
| access_rfid_card_manager | model_rfid_card | group_rfid_manager | 1 | 1 | 1 | 0 |
| access_rfid_card_admin | model_rfid_card | group_rfid_admin | 1 | 1 | 1 | 1 |
| access_rfid_card_history_user | model_rfid_card_history | group_rfid_user | 1 | 0 | 0 | 0 |
| access_rfid_card_history_manager | model_rfid_card_history | group_rfid_manager | 1 | 0 | 0 | 0 |
| access_rfid_card_history_admin | model_rfid_card_history | group_rfid_admin | 1 | 1 | 1 | 1 |
| access_rfid_device_user | model_rfid_device | group_rfid_user | 1 | 0 | 0 | 0 |
| access_rfid_device_manager | model_rfid_device | group_rfid_manager | 1 | 1 | 1 | 0 |
| access_rfid_device_admin | model_rfid_device | group_rfid_admin | 1 | 1 | 1 | 1 |
| access_rfid_event_user | model_rfid_event | group_rfid_user | 1 | 0 | 0 | 0 |
| access_rfid_event_manager | model_rfid_event | group_rfid_manager | 1 | 1 | 0 | 0 |
| access_rfid_event_admin | model_rfid_event | group_rfid_admin | 1 | 1 | 1 | 1 |
| access_rfid_attendance_rule_user | model_rfid_attendance_rule | group_rfid_user | 1 | 0 | 0 | 0 |
| access_rfid_attendance_rule_manager | model_rfid_attendance_rule | group_rfid_manager | 1 | 1 | 1 | 1 |
| access_rfid_security_log_admin | model_rfid_security_log | group_rfid_admin | 1 | 1 | 1 | 1 |
Record Rules¶
| Name | Model | Domain | Groups |
|---|---|---|---|
| RFID Card: User - Own Company | model_rfid_card | [('company_id', 'in', [company_id, False])] | [(4, ref('group_rfid_user'))] |
| RFID Device: User - Own Company | model_rfid_device | [('company_id', 'in', [company_id, False])] | [(4, ref('group_rfid_user'))] |
| RFID Event: User - Own Company | model_rfid_event | [('company_id', 'in', [company_id, False])] | [(4, ref('group_rfid_user'))] |
Data Files¶
| File | Purpose |
|---|---|
| security/rfid_security.xml | Security |
| security/ir.model.access.csv | Security |
| data/rfid_data.xml | Data |
| data/cron_data.xml | Data |
| views/attendance_line_view.xml | Views |
| views/rfid_card_views.xml | Views |
| views/rfid_device_views.xml | Views |
| views/rfid_event_views.xml | Views |
| views/rfid_card_history_views.xml | Views |
| views/rfid_attendance_rule_views.xml | Views |
| views/rfid_security_log_views.xml | Views |
| views/rfid_menus.xml | Views |
| wizard/rfid_card_import_wizard_views.xml | Wizard views |
| wizard/rfid_card_lost_wizard_views.xml | Wizard views |
Menus¶
| Menu ID | Parent | Action |
|---|---|---|
| menu_rfid_card_import | menu_rfid_management | action_rfid_card_import_wizard |
| menu_rfid_root | - | - |
| menu_rfid_management | menu_rfid_root | - |
| menu_rfid_card | menu_rfid_management | action_rfid_card |
| menu_rfid_device | menu_rfid_management | action_rfid_device |
| menu_rfid_monitoring | menu_rfid_root | - |
| menu_rfid_event | menu_rfid_monitoring | action_rfid_event |
| menu_rfid_security_log | menu_rfid_monitoring | action_rfid_security_log |
| menu_rfid_configuration | menu_rfid_root | - |
| menu_rfid_attendance_rule | menu_rfid_configuration | action_rfid_attendance_rule |
Dependencies¶
| Module | Reason |
|---|---|
| base | Manifest dependency |
| web | Manifest dependency |
| Manifest dependency | |
| openeducat_core | Manifest dependency |
| openeducat_attendance | Manifest dependency |
| openeducat_timetable | Manifest dependency |
| hr | Manifest dependency |
| hr_attendance | Manifest dependency |
| scola_core | Manifest dependency |
Module: scola_cbt¶
Models¶
| Model | Type | Inherits | Description |
|---|---|---|---|
| scola.cbt.item.analysis | New | - | SQL View model for CBT Item Analysis. Provides aggregated statistics per question per exam for difficulty and discrimination analysis. Difficulty Index Calculation: - For auto-scored questions (MCQ, True/False): uses is_correct - For essay/short answer: uses percentage of points_earned vs question_points - A "correct" answer is one where student earned >= 70% of possible points |
| scola.cbt.exam.statistics | New | - | SQL View model for CBT Exam-level Statistics. Provides aggregated statistics per exam for score distribution. |
| scola.cbt.attempt | New (inherits) | mail.thread | Student exam attempt - tracks a student's CBT session |
| scola.cbt.attempt.answer | New | - | Student's answer to a question |
| scola.cbt.integrity.flag | New | - | Integrity flags for anti-cheat |
| scola.cbt.question.tag | New | - | Tags for categorizing questions |
| scola.cbt.question.item | New (inherits) | mail.thread, mail.activity.mixin | Main question entity with 2-state workflow and versioning |
| scola.cbt.question.choice | New | - | Answer choices for MCQ and True/False questions |
| scola.cbt.question.asset | New | - | Media attachments for questions |
| scola.cbt.audit.log | New | - | Audit log for all critical CBT actions |
| scola.cbt.policy | New | - | Global CBT Policy Configuration |
| scola.cbt.exam.policy.override | New | - | Per-exam policy overrides |
| op.exam | Extension | op.exam | Extend op.exam for CBT functionality |
| scola.cbt.question.set | New (inherits) | mail.thread, mail.activity.mixin | Question Set - Collection of questions for an exam/quiz |
| op.exam.attendees | Extension | op.exam.attendees | Override marks to support decimal scores from CBT |
| scola.cbt.score.revision | New | - | Audit log for score changes - tracks who changed what score and why |
Controllers¶
| Route | Method | Auth | Description |
|---|---|---|---|
| /scola_cbt/grading/attempts/ |
POST | user | Get list of attempts for grading. Args: exam_id: ID of the exam Returns: List of attempt summaries for grading view |
| /scola_cbt/grading/attempt/ |
POST | user | Get detailed attempt data for grading workspace. Args: attempt_id: ID of the attempt Returns: Full attempt data with questions and answers |
| /scola_cbt/grading/score | POST | user | Submit manual grade for an answer. Args: attempt_id: ID of the attempt answer_id: ID of the answer score: New score value comment: Optional grader comment Returns: Updated answer data |
| /scola_cbt/grading/finalize/ |
POST | user | Finalize grading for an attempt. Args: attempt_id: ID of the attempt Returns: Success status and final score |
| /scola_cbt/analytics/exam/ |
POST | user | Get comprehensive analytics for an exam. Returns: - exam_info: Basic exam information - statistics: Aggregated statistics (avg, min, max, median, pass_rate) - item_analysis: Per-question difficulty and correctness data - score_distribution: Histogram data for score distribution |
| /scola_cbt/analytics/integrity/ |
POST | user | Get integrity report for an exam - aggregated flags per student. |
| /scola_cbt/export/exam/ |
GET | user | Export exam results to XLSX format. |
| /scola_cbt/export/integrity/ |
GET | user | Export integrity report to XLSX format. |
| /scola_cbt/question_set/list | POST | user | List question sets with filters |
| /scola_cbt/question_set/get | POST | user | Get single question set |
| /scola_cbt/question_set/create | POST | user | Create new question set |
| /scola_cbt/question_set/update | POST | user | Update question set |
| /scola_cbt/question_set/delete | POST | user | Delete question set |
| /scola_cbt/question/list | POST | user | List questions with filters and pagination. |
| /scola_cbt/question/get | POST | user | Get single question with all details |
| /scola_cbt/question/create | POST | user | Create new question |
| /scola_cbt/question/update | POST | user | Update question (may create new version if used in form) |
| /scola_cbt/question/transition | POST | user | Execute workflow action on question |
| /scola_cbt/question/delete | POST | user | Delete draft question (only managers can delete) |
| /scola_cbt/question/import | POST | user | Import questions from CSV file. CSV Format: question_type,subject_code,content,choice_a,choice_b,choice_c,choice_d,correct_answer,difficulty,points,tags Returns error report with row-by-row validation results. |
| /scola_cbt/tag/list | POST | user | List all question tags |
| /scola_cbt/tag/create | POST | user | Create new tag |
| /scola_cbt/exams | POST | user | List CBT exams with filters |
| /scola_cbt/exams/ |
POST | user | Get single exam detail |
| /scola_cbt/exams/create | POST | user | Create new CBT exam Follows pattern from AddExamModal.vue: - Frontend provides: batch_id, subject_id, exam_type_id - Backend auto-creates/finds exam_session - Backend auto-creates attendees from batch students |
| /scola_cbt/exams/ |
POST | user | Update CBT exam |
| /scola_cbt/exams/ |
POST | user | Delete CBT exam |
| /scola_cbt/exams/ |
POST | user | Regenerate CBT exam token |
| /scola_cbt/exams/ |
POST | user | Transition exam state for CBT (bypasses OpenEduCat wizard) This endpoint handles CBT-specific state transitions without requiring the redundant attendee/room selection from OpenEduCat's held_exam wizard. Attendees are already auto-created from batch during exam creation. Allowed transitions: - draft -> held (Publikasikan) - held -> done (Selesaikan) - held -> draft (Revert to draft for corrections) - done -> held (Re-open if needed) |
| /scola_cbt/exams/ |
POST | user | List attendees for an exam |
| /scola_cbt/exams/ |
POST | user | Add single attendee to exam |
| /scola_cbt/exams/ |
POST | user | Remove attendee from exam |
| /scola_cbt/lookup/exam-types | POST | user | List exam types for dropdown |
| /scola_cbt/policy/get | POST | user | Get effective CBT policy. If exam_id is provided, merges global policy with exam overrides. Returns: dict: Effective policy values |
| /scola_cbt/policy/update | POST | user | Update CBT policy. Requires CBT Manager role. Args: policy_id: ID of policy to update values: dict of field values to update Returns: dict: Success status |
| /scola_cbt/audit/list | POST | user | Get audit log entries with optional filters. Args: filters: dict of filters (event_type, user_id, exam_id, date_from, date_to) offset: pagination offset limit: max records to return Returns: dict: List of audit log entries |
| /scola_cbt/roles/check | POST | user | Check current user's CBT roles. Returns: dict: Role flags |
| /scola_cbt/runner/start | POST | user | Start or resume an exam attempt. Args: exam_id: ID of the exam token: Access token for the exam Returns: Attempt data with questions in order |
| /scola_cbt/runner/state | POST | user | Get current attempt state for resume functionality. |
| /scola_cbt/runner/answer | POST | user | Save a single answer (upsert). Args: attempt_id: ID of the attempt question_id: ID of the question answer_data: dict with 'answer_char' or 'answer_option_ids' |
| /scola_cbt/runner/sync | POST | user | Bulk sync multiple answers (for batch saving). Args: attempt_id: ID of the attempt answers: list of {question_id, answer_data} |
| /scola_cbt/runner/submit | POST | user | Submit/finalize the exam attempt. |
| /scola_cbt/runner/integrity | POST | user | Log integrity events from client (stub for EPIC 5). Args: attempt_id: ID of the attempt events: list of {event_type, timestamp, data} |
| /scola_cbt/proctor/exam/ |
POST | user | Get exam status with all attendee attempts. Returns: { 'exam': {...}, 'summary': { 'total': int, 'not_started': int, 'in_progress': int, 'submitted': int, 'flagged': int }, 'attendees': [ { 'attempt_id': int, 'student_id': int, 'student_name': str, 'state': str, 'progress': int, # percentage 'time_remaining': int, # seconds 'flag_count': int, 'last_activity': str, } ] } |
| /scola_cbt/proctor/attempt/ |
POST | user | Get integrity flags for a specific attempt. Returns list of flag events with details. |
| /scola_cbt/proctor/attempt/ |
POST | user | Extend time for an attempt. Args: attempt_id: ID of the attempt minutes: Number of minutes to extend reason: Reason for extension (required) Returns: New end_time and confirmation |
| /scola_cbt/proctor/attempt/ |
POST | user | Force submit an attempt. Args: attempt_id: ID of the attempt reason: Reason for force submit (required) Returns: Confirmation |
| /scola_cbt/proctor/attempt/ |
POST | user | Reset an attempt. Args: attempt_id: ID of the attempt reason: Reason for reset (required) full_reset: If True, delete all answers. If False, just reset state. Returns: Confirmation |
Security¶
ir.model.access.csv¶
| ID | Model | Group | R | W | C | D |
|---|---|---|---|---|---|---|
| access_cbt_policy_manager | model_scola_cbt_policy | scola_cbt.group_cbt_manager | 1 | 1 | 1 | 1 |
| access_cbt_policy_creator | model_scola_cbt_policy | scola_cbt.group_cbt_exam_creator | 1 | 0 | 0 | 0 |
| access_cbt_policy_proctor | model_scola_cbt_policy | scola_cbt.group_cbt_proctor | 1 | 0 | 0 | 0 |
| access_cbt_exam_override_manager | model_scola_cbt_exam_policy_override | scola_cbt.group_cbt_manager | 1 | 1 | 1 | 1 |
| access_cbt_exam_override_creator | model_scola_cbt_exam_policy_override | scola_cbt.group_cbt_exam_creator | 1 | 1 | 1 | 1 |
| access_cbt_audit_manager | model_scola_cbt_audit_log | scola_cbt.group_cbt_manager | 1 | 0 | 0 | 0 |
| access_cbt_audit_auditor | model_scola_cbt_audit_log | scola_cbt.group_cbt_auditor | 1 | 0 | 0 | 0 |
| access_cbt_policy_student | model_scola_cbt_policy | scola_core.group_scola_student | 1 | 0 | 0 | 0 |
| access_cbt_question_manager | model_scola_cbt_question_item | scola_cbt.group_cbt_manager | 1 | 1 | 1 | 1 |
| access_cbt_question_creator | model_scola_cbt_question_item | scola_cbt.group_cbt_exam_creator | 1 | 1 | 1 | 0 |
| access_cbt_question_faculty | model_scola_cbt_question_item | openeducat_core.group_op_faculty | 1 | 1 | 1 | 0 |
| access_cbt_choice_manager | model_scola_cbt_question_choice | scola_cbt.group_cbt_manager | 1 | 1 | 1 | 1 |
| access_cbt_choice_creator | model_scola_cbt_question_choice | scola_cbt.group_cbt_exam_creator | 1 | 1 | 1 | 1 |
| access_cbt_choice_faculty | model_scola_cbt_question_choice | openeducat_core.group_op_faculty | 1 | 1 | 1 | 1 |
| access_cbt_asset_manager | model_scola_cbt_question_asset | scola_cbt.group_cbt_manager | 1 | 1 | 1 | 1 |
| access_cbt_asset_creator | model_scola_cbt_question_asset | scola_cbt.group_cbt_exam_creator | 1 | 1 | 1 | 1 |
| access_cbt_asset_faculty | model_scola_cbt_question_asset | openeducat_core.group_op_faculty | 1 | 1 | 1 | 1 |
| access_cbt_tag_manager | model_scola_cbt_question_tag | scola_cbt.group_cbt_manager | 1 | 1 | 1 | 1 |
| access_cbt_tag_creator | model_scola_cbt_question_tag | scola_cbt.group_cbt_exam_creator | 1 | 1 | 1 | 0 |
| access_cbt_tag_faculty | model_scola_cbt_question_tag | openeducat_core.group_op_faculty | 1 | 1 | 1 | 0 |
| access_cbt_question_set_manager | model_scola_cbt_question_set | scola_cbt.group_cbt_manager | 1 | 1 | 1 | 1 |
| access_cbt_question_set_creator | model_scola_cbt_question_set | scola_cbt.group_cbt_exam_creator | 1 | 1 | 1 | 0 |
| access_cbt_question_set_faculty | model_scola_cbt_question_set | openeducat_core.group_op_faculty | 1 | 1 | 1 | 0 |
| access_cbt_attempt_manager | model_scola_cbt_attempt | scola_cbt.group_cbt_manager | 1 | 1 | 1 | 1 |
| access_cbt_attempt_proctor | model_scola_cbt_attempt | scola_cbt.group_cbt_proctor | 1 | 1 | 0 | 0 |
| access_cbt_attempt_faculty | model_scola_cbt_attempt | openeducat_core.group_op_faculty | 1 | 1 | 0 | 0 |
| access_cbt_attempt_student | model_scola_cbt_attempt | scola_core.group_scola_student | 1 | 1 | 1 | 0 |
| access_cbt_attempt_answer_manager | model_scola_cbt_attempt_answer | scola_cbt.group_cbt_manager | 1 | 1 | 1 | 1 |
| access_cbt_attempt_answer_proctor | model_scola_cbt_attempt_answer | scola_cbt.group_cbt_proctor | 1 | 0 | 0 | 0 |
| access_cbt_attempt_answer_faculty | model_scola_cbt_attempt_answer | openeducat_core.group_op_faculty | 1 | 1 | 0 | 0 |
| access_cbt_attempt_answer_student | model_scola_cbt_attempt_answer | scola_core.group_scola_student | 1 | 1 | 1 | 0 |
| access_cbt_integrity_flag_manager | model_scola_cbt_integrity_flag | scola_cbt.group_cbt_manager | 1 | 1 | 1 | 1 |
| access_cbt_integrity_flag_proctor | model_scola_cbt_integrity_flag | scola_cbt.group_cbt_proctor | 1 | 0 | 0 | 0 |
| access_cbt_integrity_flag_student | model_scola_cbt_integrity_flag | scola_core.group_scola_student | 0 | 0 | 1 | 0 |
| access_cbt_score_revision_manager | model_scola_cbt_score_revision | scola_cbt.group_cbt_manager | 1 | 1 | 1 | 1 |
| access_cbt_score_revision_auditor | model_scola_cbt_score_revision | scola_cbt.group_cbt_auditor | 1 | 0 | 0 | 0 |
| access_cbt_score_revision_faculty | model_scola_cbt_score_revision | openeducat_core.group_op_faculty | 1 | 1 | 1 | 0 |
| access_cbt_item_analysis_manager | model_scola_cbt_item_analysis | scola_cbt.group_cbt_manager | 1 | 0 | 0 | 0 |
| access_cbt_item_analysis_faculty | model_scola_cbt_item_analysis | openeducat_core.group_op_faculty | 1 | 0 | 0 | 0 |
| access_cbt_exam_statistics_manager | model_scola_cbt_exam_statistics | scola_cbt.group_cbt_manager | 1 | 0 | 0 | 0 |
| access_cbt_exam_statistics_faculty | model_scola_cbt_exam_statistics | openeducat_core.group_op_faculty | 1 | 0 | 0 | 0 |
Record Rules¶
| Name | Model | Domain | Groups |
|---|---|---|---|
| CBT Policy: Manager Full Access | model_scola_cbt_policy | [(1, '=', 1)] | [(4, ref('group_cbt_manager'))] |
| CBT Policy: All CBT Users Read | model_scola_cbt_policy | [(1, '=', 1)] | [(4, ref('group_cbt_exam_creator')), (4, ref('group_cbt_proctor'))] |
| CBT Audit: Manager Read Access | model_scola_cbt_audit_log | [(1, '=', 1)] | [(4, ref('group_cbt_manager')), (4, ref('group_cbt_auditor'))] |
| CBT Exam Override: Creator Access | model_scola_cbt_exam_policy_override | [(1, '=', 1)] | [(4, ref('group_cbt_exam_creator')), (4, ref('group_cbt_manager'))] |
| CBT Question: Manager Full Access | model_scola_cbt_question_item | [(1, '=', 1)] | [(4, ref('group_cbt_manager'))] |
| CBT Question: Faculty Own Questions | model_scola_cbt_question_item | [('created_by', '=', user.id)] | [(4, ref('openeducat_core.group_op_faculty'))] |
| CBT Choice: Manager Full Access | model_scola_cbt_question_choice | [(1, '=', 1)] | [(4, ref('group_cbt_manager'))] |
| CBT Choice: Faculty Own Questions | model_scola_cbt_question_choice | [('question_id.created_by', '=', user.id)] | [(4, ref('openeducat_core.group_op_faculty'))] |
| CBT Tag: All Read | model_scola_cbt_question_tag | [(1, '=', 1)] | [(4, ref('openeducat_core.group_op_faculty')), (4, ref('group_cbt_manager'))] |
| CBT Question Set: Manager Full Access | model_scola_cbt_question_set | [(1, '=', 1)] | [(4, ref('scola_cbt.group_cbt_manager'))] |
| CBT Question Set: Faculty Own Sets | model_scola_cbt_question_set | [('created_by', '=', user.id)] | [(4, ref('openeducat_core.group_op_faculty'))] |
Data Files¶
| File | Purpose |
|---|---|
| security/cbt_security.xml | Security |
| security/ir.model.access.csv | Security |
| data/cbt_data.xml | Data |
| views/policy_views.xml | Views |
| views/audit_views.xml | Views |
| views/question_set_views.xml | Views |
| views/question_views.xml | Views |
| views/exam_views.xml | Views |
| views/attempt_grading_views.xml | Views |
| views/report_views.xml | Views |
| views/menu.xml | Views |
| security/question_set_rules.xml | Security |
Menus¶
| Menu ID | Parent | Action |
|---|---|---|
| menu_cbt_root | - | - |
| menu_cbt_exams | menu_cbt_root | action_cbt_exams |
| menu_cbt_question_sets | menu_cbt_root | action_cbt_question_set |
| menu_cbt_tags | menu_cbt_root | action_cbt_question_tag |
| menu_cbt_config | menu_cbt_root | - |
| menu_cbt_policy | menu_cbt_config | action_cbt_policy |
| menu_cbt_audit | menu_cbt_config | action_cbt_audit_log |
| menu_cbt_grading | menu_cbt_root | action_cbt_grading |
| menu_cbt_score_revision | menu_cbt_config | action_cbt_score_revision |
| menu_cbt_reporting | menu_cbt_root | - |
| menu_cbt_exam_statistics | menu_cbt_reporting | action_cbt_exam_statistics |
| menu_cbt_item_analysis | menu_cbt_reporting | action_cbt_item_analysis |
Dependencies¶
| Module | Reason |
|---|---|
| base | Manifest dependency |
| Manifest dependency | |
| scola_core | Manifest dependency |
| scola_report_card | Manifest dependency |
| openeducat_core | Manifest dependency |
| openeducat_exam | Manifest dependency |
Module: scola_core¶
Models¶
| Model | Type | Inherits | Description |
|---|---|---|---|
| scola.student.promotion | New (inherits) | mail.thread, mail.activity.mixin | Student Promotion / Kenaikan Kelas record |
| scola.school.profile | New | - | Custom model |
| res.users | Extension | res.users | Extension for res.users |
| op.batch | Extension | op.batch | Extension for op.batch |
| op.classroom | Extension | op.classroom | Extension for op.classroom |
| scola.dapodik.export.wizard | New | - | Wizard for exporting data to Dapodik format |
| op.faculty | Extension | op.faculty | Extension for op.faculty |
| scola.sic.config | New | - | Custom model |
| op.student | Extension | op.student | Extension for op.student |
| scola.dapodik.validation.report | New | - | Transient model for generating Dapodik data completeness reports |
| scola.dapodik.validation.line | New | - | Line items for validation report |
| scola.dapodik.config | New | - | Custom model |
| hr.employee | Extension | hr.employee | Extension for hr.employee |
| op.academic.term | Extension | op.academic.term | Extension for op.academic.term |
| scola.dapodik.sync.log | New | - | Custom model |
| ir.attachment | Extension | ir.attachment | Extension for ir.attachment |
| ir.http | Extension | ir.http | Extension for ir.http |
Controllers¶
| Route | Method | Auth | Description |
|---|---|---|---|
| /api/dapodik/config | GET | user | Get current Dapodik configuration |
| /api/dapodik/config | POST | user | Save Dapodik configuration |
| /api/dapodik/test-connection | POST | user | Test connection to Dapodik server |
| /api/dapodik/sync-logs | GET | user | Get sync logs with pagination |
| /api/dapodik/sync-log/ |
GET | user | Get detailed sync log |
| /api/dapodik/sync/students | POST | user | Sync students from Dapodik |
| /api/dapodik/sync/gtk | POST | user | Sync GTK (teachers) from Dapodik |
| /api/dapodik/sync/rombel | POST | user | Sync rombongan belajar from Dapodik |
| /api/auth/login | POST | none | Custom login endpoint that doesn't require database parameter. Request body: { "jsonrpc": "2.0", "method": "call", "params": { "login": "[email protected]", "password": "secret" } } Returns: - On success: user session info - On failure: error message |
| /api/auth/logout | POST | user | Logout current user |
| /api/auth/session | POST | none | Get current session info without requiring authentication |
| /scola/debug/access | - | user | Diagnostic access snapshot owned by scola_observability/controllers/debug_access_api.py |
| /api/acl/diagnostic | POST | user | ACL diagnostic snapshot owned by scola_observability/controllers/debug_access_api.py; guarded by scola_core.enable_debug |
| /api/dashboard/stats | POST | user | Shared dashboard statistics owned by scola_portal/controllers/shared_experience_api.py |
| /api/public/company-info | POST | public | Public school/company branding owned by scola_portal/controllers/shared_experience_api.py |
Security¶
ir.model.access.csv¶
| ID | Model | Group | R | W | C | D |
|---|---|---|---|---|---|---|
| access_scola_student_op_student | openeducat_core.model_op_student | scola_core.group_scola_student | 1 | 0 | 0 | 0 |
| access_scola_student_res_users | base.model_res_users | scola_core.group_scola_student | 1 | 0 | 0 | 0 |
| access_scola_student_op_batch | openeducat_core.model_op_batch | scola_core.group_scola_student | 1 | 0 | 0 | 0 |
| access_scola_student_op_course | openeducat_core.model_op_course | scola_core.group_scola_student | 1 | 0 | 0 | 0 |
| access_scola_student_op_student_course | openeducat_core.model_op_student_course | scola_core.group_scola_student | 1 | 0 | 0 | 0 |
| access_scola_student_op_subject | openeducat_core.model_op_subject | scola_core.group_scola_student | 1 | 0 | 0 | 0 |
| access_scola_student_op_session | openeducat_timetable.model_op_session | scola_core.group_scola_student | 1 | 0 | 0 | 0 |
| access_scola_student_op_assignment | openeducat_assignment.model_op_assignment | scola_core.group_scola_student | 1 | 0 | 0 | 0 |
| access_scola_student_op_assignment_sub_line | openeducat_assignment.model_op_assignment_sub_line | scola_core.group_scola_student | 1 | 1 | 1 | 0 |
| access_scola_student_survey_survey | survey.model_survey_survey | scola_core.group_scola_student | 1 | 0 | 0 | 0 |
| access_scola_student_op_attendance_line | openeducat_attendance.model_op_attendance_line | scola_core.group_scola_student | 1 | 0 | 0 | 0 |
| access_scola_student_op_attendance_sheet | openeducat_attendance.model_op_attendance_sheet | scola_core.group_scola_student | 1 | 0 | 0 | 0 |
| access_scola_student_grading_assignment_type | openeducat_assignment.model_grading_assignment_type | scola_core.group_scola_student | 1 | 0 | 0 | 0 |
| access_scola_student_grading_assignment | openeducat_assignment.model_grading_assignment | scola_core.group_scola_student | 1 | 0 | 0 | 0 |
| access_scola_student_ir_attachment | base.model_ir_attachment | scola_core.group_scola_student | 1 | 1 | 1 | 0 |
| access_scola_student_op_academic_term | openeducat_core.model_op_academic_term | scola_core.group_scola_student | 1 | 0 | 0 | 0 |
| access_scola_student_op_academic_year | openeducat_core.model_op_academic_year | scola_core.group_scola_student | 1 | 0 | 0 | 0 |
| access_scola_student_op_exam | openeducat_exam.model_op_exam | scola_core.group_scola_student | 1 | 0 | 0 | 0 |
| access_scola_student_op_exam_attendees | openeducat_exam.model_op_exam_attendees | scola_core.group_scola_student | 1 | 0 | 0 | 0 |
| access_scola_student_op_exam_session | openeducat_exam.model_op_exam_session | scola_core.group_scola_student | 1 | 0 | 0 | 0 |
| access_scola_student_op_exam_type | openeducat_exam.model_op_exam_type | scola_core.group_scola_student | 1 | 0 | 0 | 0 |
| access_scola_student_op_exam_room | openeducat_exam.model_op_exam_room | scola_core.group_scola_student | 1 | 0 | 0 | 0 |
| access_scola_sic_config_manager | model_scola_sic_config | openeducat_core.group_op_back_office_admin | 1 | 1 | 1 | 1 |
| access_student_promotion_admin | model_scola_student_promotion | openeducat_core.group_op_back_office_admin | 1 | 1 | 1 | 1 |
| access_student_promotion_faculty | model_scola_student_promotion | openeducat_core.group_op_faculty | 1 | 1 | 0 | 0 |
| access_student_promotion_student | model_scola_student_promotion | scola_core.group_scola_student | 1 | 0 | 0 | 0 |
| access_dapodik_config_admin | model_scola_dapodik_config | openeducat_core.group_op_back_office_admin | 1 | 1 | 1 | 1 |
| access_dapodik_config_faculty | model_scola_dapodik_config | openeducat_core.group_op_faculty | 1 | 0 | 0 | 0 |
| access_dapodik_config_user | model_scola_dapodik_config | base.group_user | 1 | 0 | 0 | 0 |
| access_dapodik_sync_log_admin | model_scola_dapodik_sync_log | openeducat_core.group_op_back_office_admin | 1 | 1 | 1 | 1 |
| access_dapodik_sync_log_faculty | model_scola_dapodik_sync_log | openeducat_core.group_op_faculty | 1 | 0 | 0 | 0 |
| access_school_profile_admin | model_scola_school_profile | openeducat_core.group_op_back_office_admin | 1 | 1 | 1 | 1 |
| access_school_profile_faculty | model_scola_school_profile | openeducat_core.group_op_faculty | 1 | 0 | 0 | 0 |
| access_school_profile_student | model_scola_school_profile | scola_core.group_scola_student | 1 | 0 | 0 | 0 |
| access_dapodik_validation_report_admin | model_scola_dapodik_validation_report | openeducat_core.group_op_back_office_admin | 1 | 1 | 1 | 1 |
| access_dapodik_validation_line_admin | model_scola_dapodik_validation_line | openeducat_core.group_op_back_office_admin | 1 | 1 | 1 | 1 |
| access_dapodik_export_wizard_admin | model_scola_dapodik_export_wizard | openeducat_core.group_op_back_office_admin | 1 | 1 | 1 | 1 |
| access_calendar_event_admin | calendar.model_calendar_event | openeducat_core.group_op_back_office_admin | 1 | 1 | 1 | 1 |
| access_calendar_event_faculty | calendar.model_calendar_event | openeducat_core.group_op_faculty | 1 | 1 | 1 | 0 |
| access_calendar_event_student | calendar.model_calendar_event | scola_core.group_scola_student | 1 | 0 | 0 | 0 |
Record Rules¶
| Name | Model | Domain | Groups |
|---|---|---|---|
| Student: See Own Profile Only | openeducat_core.model_op_student | [('user_id', '=', user.id)] | [(4, ref('scola_core.group_scola_student'))] |
| Student: See Own Course Details | openeducat_core.model_op_student_course | [('student_id.user_id', '=', user.id)] | [(4, ref('scola_core.group_scola_student'))] |
| Student: See Own Assignments Only | openeducat_assignment.model_op_assignment | [('allocation_ids.user_id', '=', user.id), ('state', 'in', ['publish', 'finish'])] | [(4, ref('scola_core.group_scola_student'))] |
| Student: See Own Submissions Only | openeducat_assignment.model_op_assignment_sub_line | [('student_id.user_id', '=', user.id)] | [(4, ref('scola_core.group_scola_student'))] |
| Student: See Own Class Sessions | openeducat_timetable.model_op_session | [('batch_id', 'in', user.env['op.batch'].search([('student_ids.user_id', '=', user.id)]).ids)] | [(4, ref('scola_core.group_scola_student'))] |
| Student: See Own Batch | openeducat_core.model_op_batch | [('student_ids.user_id', '=', user.id)] | [(4, ref('scola_core.group_scola_student'))] |
| Student: See Own Attendance Only | openeducat_attendance.model_op_attendance_line | [('student_id.user_id', '=', user.id)] | [(4, ref('scola_core.group_scola_student'))] |
| Student: See Own Attendance Sheets | openeducat_attendance.model_op_attendance_sheet | [('attendance_line.student_id.user_id', '=', user.id)] | [(4, ref('scola_core.group_scola_student'))] |
| Student: See Attachments for Own Sessions and Assignments | base.model_ir_attachment | ['|', '|', '|', '&', ('res_model', '=', 'op.session'), ('res_id', 'in', user.env['op.session'].search([('batch_id', 'in', user.env['op.batch'].search([('student_ids.user_id', '=', user.id)]).ids)]).ids), '&', ('res_model', '=', 'op.assignment'), ('res_id', 'in', user.env['op.assignment'].search([('allocation_ids.user_id', '=', user.id), ('state', '=', 'publish')]).ids), '&', ('res_model', '=', 'op.assignment.sub.line'), ('res_id', 'in', user.env['op.assignment.sub.line'].search([('student_id.user_id', '=', user.id)]).ids), ('create_uid', '=', user.id) ] | [(4, ref('scola_core.group_scola_student'))] |
| Student: See Open Surveys Only | survey.model_survey_survey | [('active', '=', True)] | [(4, ref('scola_core.group_scola_student'))] |
| Student: See Own Exam Results Only | openeducat_exam.model_op_exam_attendees | [('student_id.user_id', '=', user.id)] | [(4, ref('scola_core.group_scola_student'))] |
| Student: See Exams from Own Batch Only | openeducat_exam.model_op_exam | [('batch_id', 'in', user.env['op.batch'].search([('student_ids.user_id', '=', user.id)]).ids)] | [(4, ref('scola_core.group_scola_student'))] |
| Student: See Exam Sessions from Own Batch Only | openeducat_exam.model_op_exam_session | [('batch_id', 'in', user.env['op.batch'].search([('student_ids.user_id', '=', user.id)]).ids)] | [(4, ref('scola_core.group_scola_student'))] |
Data Files¶
| File | Purpose |
|---|---|
| security/scola_security.xml | Security |
| security/ir.model.access.csv | Security |
| views/faculty_views.xml | Views |
| views/hr_employee_views.xml | Views |
| views/res_users_views.xml | Views |
| views/student_views.xml | Views |
| views/batch_views.xml | Views |
| views/course_views.xml | Views |
| views/sic_config_views.xml | Views |
Menus¶
| Menu ID | Parent | Action |
|---|---|---|
| menu_scola_sic_config | openeducat_core.menu_op_school_root | action_scola_sic_config |
Dependencies¶
| Module | Reason |
|---|---|
| base | Manifest dependency |
| hr | Manifest dependency |
| calendar | Manifest dependency |
| openeducat_core | Manifest dependency |
| openeducat_classroom | Manifest dependency |
| openeducat_assignment | Manifest dependency |
| openeducat_timetable | Manifest dependency |
| openeducat_attendance | Manifest dependency |
| openeducat_fees | Manifest dependency |
| survey | Manifest dependency |
Module: scola_counseling¶
Models¶
| Model | Type | Inherits | Description |
|---|---|---|---|
| scola.incident | New (inherits) | mail.thread, mail.activity.mixin | Incident log umum untuk pencatatan insiden sekolah dan eskalasi internal |
| scola.counseling.report | New (inherits) | mail.thread, mail.activity.mixin | Extension for mail.thread, mail.activity.mixin |
| scola.counseling.response | New | - | Custom model |
Controllers¶
No controllers detected.
Security¶
ir.model.access.csv¶
| ID | Model | Group | R | W | C | D |
|---|---|---|---|---|---|---|
| access_scola_counseling_report_all | model_scola_counseling_report | - | 1 | 1 | 1 | 1 |
| access_scola_counseling_response_all | model_scola_counseling_response | - | 1 | 1 | 1 | 1 |
| access_scola_incident_all | model_scola_incident | - | 1 | 1 | 1 | 1 |
Record Rules¶
No record rules found.
Data Files¶
| File | Purpose |
|---|---|
| security/ir.model.access.csv | Security |
| data/incident_sequence.xml | Data |
| views/scola_counseling_report_views.xml | Views |
| views/scola_counseling_report_menu.xml | Views |
Menus¶
| Menu ID | Parent | Action |
|---|---|---|
| menu_scola_counseling_root | - | - |
| menu_scola_counseling_report | menu_scola_counseling_root | action_scola_counseling_report |
Dependencies¶
| Module | Reason |
|---|---|
| base | Manifest dependency |
| Manifest dependency | |
| calendar | Manifest dependency |
| contacts | Manifest dependency |
| openeducat_core | Manifest dependency |
| openeducat_parent | Manifest dependency |
Module: scola_fees¶
Models¶
| Model | Type | Inherits | Description |
|---|---|---|---|
| scola.enrollment.installment.line | New | - | Custom model |
| scola.student.fee.enrollment | New (inherits) | mail.thread, mail.activity.mixin | Extension for mail.thread, mail.activity.mixin |
| scola.notification.config | New (inherits) | mail.thread, mail.activity.mixin | Configuration for notification services (WhatsApp, Email, SMS) |
| scola.notification.log | New | - | Log of sent notifications |
| scola.notification.mixin | New | - | Mixin to add notification capabilities to models |
| scola.late.fee.config | New (inherits) | mail.thread, mail.activity.mixin | Configuration for late fee calculation per school/company |
| scola.late.fee.log | New | - | Log of applied late fees for audit trail |
| scola.scholarship.type | New | - | Custom model |
| scola.payment.gateway.config | New (inherits) | mail.thread, mail.activity.mixin | Configuration for payment gateway integration (Midtrans, Xendit, etc.) |
| scola.payment.transaction | New (inherits) | mail.thread, mail.activity.mixin | Track payment transactions from payment gateways |
| op.student | Extension | op.student | Extension for op.student |
| scola.fee.template.line | New | - | Custom model |
| scola.fee.template | New (inherits) | mail.thread, mail.activity.mixin | Extension for mail.thread, mail.activity.mixin |
| scola.fee.schedule.line | New | - | Custom model |
| scola.fee.schedule | New (inherits) | mail.thread, mail.activity.mixin | Extension for mail.thread, mail.activity.mixin |
| scola.installment.preset.line | New | - | Custom model |
| scola.installment.preset | New | - | Custom model |
| scola.cashier.closing | New (inherits) | mail.thread, mail.activity.mixin | Daily cashier closing/settlement record |
| scola.cashier.closing.line | New | - | Breakdown line for cashier closing by payment method |
| account.payment | Extension | account.payment | Extend account.payment to link to cashier closing |
| scola.enrollment.generate.wizard | New | - | Custom model |
| generate.fees.wizard | New | - | Custom model |
| scola.bulk.enrollment.wizard | New | - | Custom model |
Controllers¶
| Route | Method | Auth | Description |
|---|---|---|---|
| /payment/callback/midtrans | POST | public | Handle Midtrans payment notification callback. Midtrans sends POST request with JSON body containing: - transaction_status: capture, settlement, pending, deny, cancel, expire - order_id: Our order reference - transaction_id: Midtrans transaction ID - gross_amount: Payment amount - signature_key: For verification |
| /payment/callback/xendit | POST | public | Handle Xendit payment callback |
| /api/v1/payment/create | POST | user | API endpoint to create payment transaction. Args: invoice_id: ID of the invoice to pay payment_type: Type of payment (va_bca, va_bni, qris, etc.) Returns: dict: Transaction details including VA number or QRIS URL |
| /api/v1/payment/status/ |
GET | user | Get payment transaction status |
| /api/v1/payment/methods | GET | user | Get available payment methods |
Security¶
ir.model.access.csv¶
| ID | Model | Group | R | W | C | D |
|---|---|---|---|---|---|---|
| access_scola_scholarship_type_manager | model_scola_scholarship_type | group_scola_fees_manager | 1 | 1 | 1 | 1 |
| access_scola_installment_preset_manager | model_scola_installment_preset | group_scola_fees_manager | 1 | 1 | 1 | 1 |
| access_scola_installment_preset_line_manager | model_scola_installment_preset_line | group_scola_fees_manager | 1 | 1 | 1 | 1 |
| access_scola_student_fee_enrollment_user | model_scola_student_fee_enrollment | group_scola_fees_user | 1 | 1 | 1 | 0 |
| access_scola_student_fee_enrollment_manager | model_scola_student_fee_enrollment | group_scola_fees_manager | 1 | 1 | 1 | 1 |
| access_scola_enrollment_installment_line_user | model_scola_enrollment_installment_line | group_scola_fees_user | 1 | 1 | 1 | 0 |
| access_scola_enrollment_installment_line_manager | model_scola_enrollment_installment_line | group_scola_fees_manager | 1 | 1 | 1 | 1 |
| access_scola_fee_schedule_user | model_scola_fee_schedule | group_scola_fees_user | 1 | 1 | 1 | 0 |
| access_scola_fee_schedule_manager | model_scola_fee_schedule | group_scola_fees_manager | 1 | 1 | 1 | 1 |
| access_scola_fee_schedule_line_user | model_scola_fee_schedule_line | group_scola_fees_user | 1 | 1 | 1 | 0 |
| access_scola_fee_schedule_line_manager | model_scola_fee_schedule_line | group_scola_fees_manager | 1 | 1 | 1 | 1 |
| access_scola_fee_template_user | model_scola_fee_template | group_scola_fees_user | 1 | 0 | 0 | 0 |
| access_scola_fee_template_manager | model_scola_fee_template | group_scola_fees_manager | 1 | 1 | 1 | 1 |
| access_scola_fee_template_line_user | model_scola_fee_template_line | group_scola_fees_user | 1 | 0 | 0 | 0 |
| access_scola_fee_template_line_manager | model_scola_fee_template_line | group_scola_fees_manager | 1 | 1 | 1 | 1 |
| access_scola_bulk_enrollment_wizard_manager | model_scola_bulk_enrollment_wizard | group_scola_fees_manager | 1 | 1 | 1 | 1 |
| access_scola_enrollment_generate_wizard_manager | model_scola_enrollment_generate_wizard | group_scola_fees_manager | 1 | 1 | 1 | 1 |
| access_generate_fees_wizard_manager | model_generate_fees_wizard | group_scola_fees_manager | 1 | 1 | 1 | 1 |
| access_scola_late_fee_config_user | model_scola_late_fee_config | group_scola_fees_user | 1 | 0 | 0 | 0 |
| access_scola_late_fee_config_manager | model_scola_late_fee_config | group_scola_fees_manager | 1 | 1 | 1 | 1 |
| access_scola_late_fee_log_user | model_scola_late_fee_log | group_scola_fees_user | 1 | 0 | 0 | 0 |
| access_scola_late_fee_log_manager | model_scola_late_fee_log | group_scola_fees_manager | 1 | 1 | 1 | 1 |
| access_scola_payment_gateway_config_user | model_scola_payment_gateway_config | group_scola_fees_user | 1 | 0 | 0 | 0 |
| access_scola_payment_gateway_config_manager | model_scola_payment_gateway_config | group_scola_fees_manager | 1 | 1 | 1 | 1 |
| access_scola_payment_transaction_user | model_scola_payment_transaction | group_scola_fees_user | 1 | 1 | 1 | 0 |
| access_scola_payment_transaction_manager | model_scola_payment_transaction | group_scola_fees_manager | 1 | 1 | 1 | 1 |
| access_scola_notification_config_user | model_scola_notification_config | group_scola_fees_user | 1 | 0 | 0 | 0 |
| access_scola_notification_config_manager | model_scola_notification_config | group_scola_fees_manager | 1 | 1 | 1 | 1 |
| access_scola_notification_log_user | model_scola_notification_log | group_scola_fees_user | 1 | 0 | 0 | 0 |
| access_scola_notification_log_manager | model_scola_notification_log | group_scola_fees_manager | 1 | 1 | 1 | 1 |
| access_scola_cashier_closing_user | model_scola_cashier_closing | group_scola_fees_user | 1 | 1 | 1 | 0 |
| access_scola_cashier_closing_manager | model_scola_cashier_closing | group_scola_fees_manager | 1 | 1 | 1 | 1 |
| access_scola_cashier_closing_line_user | model_scola_cashier_closing_line | group_scola_fees_user | 1 | 0 | 0 | 0 |
| access_scola_cashier_closing_line_manager | model_scola_cashier_closing_line | group_scola_fees_manager | 1 | 1 | 1 | 1 |
Record Rules¶
| Name | Model | Domain | Groups |
|---|---|---|---|
| Fee Schedule: Multi-Company | model_scola_fee_schedule | [('company_id', 'in', company_ids)] | [(4, ref('base.group_user'))] |
| Fee Template: Multi-Company | model_scola_fee_template | [('company_id', 'in', company_ids)] | [(4, ref('base.group_user'))] |
| Scholarship Type: Multi-Company | model_scola_scholarship_type | [('company_id', 'in', company_ids)] | [(4, ref('scola_fees.group_scola_fees_manager'))] |
| Student Fee Enrollment: Multi-Company | model_scola_student_fee_enrollment | [('company_id', 'in', company_ids)] | [(4, ref('base.group_user'))] |
Data Files¶
| File | Purpose |
|---|---|
| security/scola_fees_security.xml | Security |
| security/ir.model.access.csv | Security |
| data/scholarship_type_data.xml | Data |
| data/cron_late_fee.xml | Data |
| data/payment_sequence.xml | Data |
| data/cashier_closing_sequence.xml | Data |
| wizard/bulk_enrollment_wizard_views.xml | Wizard views |
| wizard/enrollment_generate_wizard_views.xml | Wizard views |
| wizard/generate_fees_wizard_views.xml | Wizard views |
| views/fee_template_views.xml | Views |
| views/fee_schedule_views.xml | Views |
| views/scholarship_type_views.xml | Views |
| views/installment_preset_views.xml | Views |
| views/student_enrollment_views.xml | Views |
| views/student_views.xml | Views |
| views/menus.xml | Views |
| views/late_fee_config_views.xml | Views |
| views/payment_gateway_views.xml | Views |
| views/notification_views.xml | Views |
| views/cashier_closing_views.xml | Views |
Menus¶
| Menu ID | Parent | Action |
|---|---|---|
| menu_late_fee_config | scola_fees.menu_scola_fee_management_config | action_scola_late_fee_config |
| menu_late_fee_log | scola_fees.menu_scola_fees_main | action_scola_late_fee_log |
| menu_notification_config | scola_fees.menu_scola_fee_management_config | action_scola_notification_config |
| menu_notification_log | scola_fees.menu_scola_fees_main | action_scola_notification_log |
| menu_scola_fees_root | openeducat_core.menu_op_school_root | - |
| menu_scola_fees_main | menu_scola_fees_root | - |
| menu_scola_fee_schedule | menu_scola_fees_main | action_scola_fee_schedule |
| menu_scola_fee_schedule_pending | menu_scola_fees_main | action_scola_fee_schedule_pending |
| menu_scola_fee_schedule_overdue | menu_scola_fees_main | action_scola_fee_schedule_overdue |
| menu_scola_student_fee_enrollment | menu_scola_fees_main | action_scola_student_fee_enrollment |
| menu_scola_student_fee_enrollment_scholarship | menu_scola_fees_main | action_scola_student_fee_enrollment_scholarship |
| menu_scola_bulk_enrollment_wizard | menu_scola_fees_main | action_scola_bulk_enrollment_wizard |
| menu_generate_fees_wizard | menu_scola_fees_main | action_generate_fees_wizard |
| menu_scola_fee_management_config | openeducat_core.menu_op_school_config | - |
| menu_scola_fee_template | menu_scola_fee_management_config | action_scola_fee_template |
| menu_scola_scholarship_type | menu_scola_fee_management_config | action_scola_scholarship_type |
| menu_scola_installment_preset | menu_scola_fee_management_config | action_scola_installment_preset |
| menu_cashier_closing | scola_fees.menu_scola_fees_main | action_scola_cashier_closing |
| menu_payment_gateway_config | scola_fees.menu_scola_fee_management_config | action_scola_payment_gateway_config |
| menu_payment_transaction | scola_fees.menu_scola_fees_main | action_scola_payment_transaction |
Dependencies¶
| Module | Reason |
|---|---|
| openeducat_fees | Manifest dependency |
| openeducat_core | Manifest dependency |
| account | Manifest dependency |
Historical Module: scola_holidays¶
This module has been consolidated into scola_hr and removed from the live add-on tree. Leave-type data and payroll-related hr.leave.type extensions now belong to scola_hr, and existing databases should be cleaned through custom_addons_scola/gcgscola/scripts/upgrade_enterprise_tier.sh.
Module: scola_hr¶
Models¶
No custom models detected.
Controllers¶
No controllers detected.
Security¶
ir.model.access.csv¶
No access rules found.
Record Rules¶
No record rules found.
Data Files¶
| File | Purpose |
|---|---|
| data/hr_department_data.xml | Data |
| data/hr_job_data.xml | Data |
| data/resource_calendar_data.xml | Data |
| data/hr_leave_type_data.xml | Data |
Menus¶
No menus detected.
Dependencies¶
| Module | Reason |
|---|---|
| base | Manifest dependency |
| hr | Manifest dependency |
| hr_contract | Manifest dependency |
| hr_holidays | Manifest dependency |
Module: scola_hr_attendance¶
Models¶
| Model | Type | Inherits | Description |
|---|---|---|---|
| res.company | Extension | res.company | Extension for res.company |
| hr.attendance | Extension | hr.attendance | Extension for hr.attendance |
| scola.employee.face | New | - | Custom model |
| scola.employee.attendance | New (inherits) | mail.thread, mail.activity.mixin | Extension for mail.thread, mail.activity.mixin |
| hr.employee | Extension | hr.employee | Extension for hr.employee |
Controllers¶
| Route | Method | Auth | Description |
|---|---|---|---|
| /api/v1/attendance/settings | GET | user | Get attendance settings for current company |
| /api/v1/attendance/settings/coordinates | POST | user | Save school coordinates from frontend geolocation |
| /api/v1/attendance/validate-location | POST | user | Validate if location is within allowed attendance distance |
| /api/v1/attendance/face/register | POST | user | Register a new face for an employee |
| /api/v1/attendance/face/list/ |
GET | user | Get list of registered faces for an employee |
| /api/v1/attendance/status/ |
GET | user | Get current attendance status for an employee |
| /api/v1/attendance/check-in | POST | user | Process attendance check-in with face recognition |
| /api/v1/attendance/check-out | POST | user | Process attendance check-out with face recognition |
| /api/v1/attendance/employee/current | GET | user | Get current user's employee info for attendance |
| /api/v1/attendance/history/ |
GET | user | Get attendance history for an employee |
Security¶
ir.model.access.csv¶
| ID | Model | Group | R | W | C | D |
|---|---|---|---|---|---|---|
| access_scola_employee_face_user | model_scola_employee_face | group_scola_hr_attendance_user | 1 | 1 | 1 | 0 |
| access_scola_employee_face_manager | model_scola_employee_face | group_scola_hr_attendance_manager | 1 | 1 | 1 | 1 |
| access_scola_employee_face_hr_manager | model_scola_employee_face | hr.group_hr_manager | 1 | 1 | 1 | 1 |
| access_scola_employee_face_admin | model_scola_employee_face | base.group_system | 1 | 1 | 1 | 1 |
| access_scola_employee_attendance_user | model_scola_employee_attendance | group_scola_hr_attendance_user | 1 | 0 | 1 | 0 |
| access_scola_employee_attendance_manager | model_scola_employee_attendance | group_scola_hr_attendance_manager | 1 | 1 | 1 | 1 |
| access_scola_employee_attendance_hr_manager | model_scola_employee_attendance | hr.group_hr_manager | 1 | 1 | 1 | 1 |
| access_scola_employee_attendance_admin | model_scola_employee_attendance | base.group_system | 1 | 1 | 1 | 1 |
Record Rules¶
| Name | Model | Domain | Groups |
|---|---|---|---|
| Employee Face: User can see own faces | model_scola_employee_face | [('employee_id.user_id', '=', user.id)] | [(4, ref('group_scola_hr_attendance_user'))] |
| Employee Face: Manager can see all | model_scola_employee_face | [(1, '=', 1)] | [(4, ref('group_scola_hr_attendance_manager'))] |
| Employee Attendance: User can see own records | model_scola_employee_attendance | [('employee_id.user_id', '=', user.id)] | [(4, ref('group_scola_hr_attendance_user'))] |
| Employee Attendance: Manager can see all | model_scola_employee_attendance | [(1, '=', 1)] | [(4, ref('group_scola_hr_attendance_manager'))] |
Data Files¶
| File | Purpose |
|---|---|
| security/scola_hr_attendance_security.xml | Security |
| security/ir.model.access.csv | Security |
| views/res_company_views.xml | Views |
| views/employee_face_views.xml | Views |
| views/employee_attendance_views.xml | Views |
| views/hr_employee_views.xml | Views |
| views/hr_attendance_views.xml | Views |
| views/menus.xml | Views |
Menus¶
| Menu ID | Parent | Action |
|---|---|---|
| menu_scola_hr_attendance_root | - | - |
| menu_scola_hr_attendance_main | menu_scola_hr_attendance_root | - |
| menu_scola_employee_attendance_logs | menu_scola_hr_attendance_main | action_scola_employee_attendance |
| menu_scola_employee_attendance_today | menu_scola_hr_attendance_main | action_scola_employee_attendance_today |
| menu_scola_employee_attendance_checked_in | menu_scola_hr_attendance_main | action_scola_employee_attendance_checked_in |
| menu_scola_face_recognition | menu_scola_hr_attendance_root | - |
| menu_scola_employee_faces | menu_scola_face_recognition | action_scola_employee_face |
| menu_scola_hr_attendance_config | menu_scola_hr_attendance_root | - |
| menu_scola_hr_attendance_settings | menu_scola_hr_attendance_config | action_scola_hr_attendance_settings |
Dependencies¶
| Module | Reason |
|---|---|
| base | Manifest dependency |
| hr | Manifest dependency |
| hr_attendance | Manifest dependency |
| scola_core | Manifest dependency |
Module: scola_inventory¶
Models¶
| Model | Type | Inherits | Description |
|---|---|---|---|
| maintenance.equipment | Extension | maintenance.equipment | Extension for maintenance.equipment |
| account.move | Extension | account.move | Extension for account.move |
| scola.budget.plan | New (inherits) | mail.thread, mail.activity.mixin | Extension for mail.thread, mail.activity.mixin |
| scola.budget.line | New (inherits) | mail.thread, mail.activity.mixin | Extension for mail.thread, mail.activity.mixin |
| scola.stock.inventory.line | New | - | Stock Opname Line - Detail per product |
| scola.asset.disposal | New (inherits) | mail.thread, mail.activity.mixin | Extension for mail.thread, mail.activity.mixin |
| scola.asset.inspection | New (inherits) | mail.thread, mail.activity.mixin | Extension for mail.thread, mail.activity.mixin |
| scola.purchase.request | New (inherits) | mail.thread, mail.activity.mixin | Extension for mail.thread, mail.activity.mixin |
| scola.purchase.request.line | New | - | Custom model |
| stock.picking | Extension | stock.picking | Extension for stock.picking |
| scola.budget.program | New (inherits) | mail.thread, mail.activity.mixin | Program/Kegiatan Anggaran untuk RKAS |
| scola.budget.ledger | New | - | Budget Ledger for tracking commitment and realization |
| product.template | Extension | product.template | Extension for product.template |
| purchase.order | Extension | purchase.order | Extension for purchase.order |
| stock.location | Extension | stock.location | Extension for stock.location |
| scola.stock.inventory | New (inherits) | mail.thread, mail.activity.mixin | Stock Opname / Physical Inventory Count |
Controllers¶
No controllers detected.
Security¶
ir.model.access.csv¶
| ID | Model | Group | R | W | C | D |
|---|---|---|---|---|---|---|
| access_scola_budget_plan_user | model_scola_budget_plan | base.group_user | 1 | 1 | 1 | 1 |
| access_scola_budget_line_user | model_scola_budget_line | base.group_user | 1 | 1 | 1 | 1 |
| access_scola_purchase_request_user | model_scola_purchase_request | base.group_user | 1 | 1 | 1 | 1 |
| access_scola_purchase_request_line_user | model_scola_purchase_request_line | base.group_user | 1 | 1 | 1 | 1 |
| access_scola_stock_inventory | model_scola_stock_inventory | base.group_user | 1 | 1 | 1 | 1 |
| access_scola_stock_inventory_line | model_scola_stock_inventory_line | base.group_user | 1 | 1 | 1 | 1 |
| access_scola_asset_disposal_user | model_scola_asset_disposal | base.group_user | 1 | 1 | 1 | 0 |
| access_scola_asset_disposal_manager | model_scola_asset_disposal | stock.group_stock_manager | 1 | 1 | 1 | 1 |
| access_scola_asset_inspection_user | model_scola_asset_inspection | base.group_user | 1 | 1 | 1 | 0 |
| access_scola_asset_inspection_manager | model_scola_asset_inspection | stock.group_stock_manager | 1 | 1 | 1 | 1 |
| access_scola_budget_program_user | model_scola_budget_program | base.group_user | 1 | 1 | 1 | 1 |
| access_scola_budget_ledger_user | model_scola_budget_ledger | base.group_user | 1 | 1 | 1 | 1 |
| access_maintenance_equipment_scola | maintenance.model_maintenance_equipment | base.group_user | 1 | 1 | 1 | 1 |
| access_maintenance_equipment_category_scola | maintenance.model_maintenance_equipment_category | base.group_user | 1 | 1 | 1 | 1 |
Record Rules¶
No record rules found.
Data Files¶
| File | Purpose |
|---|---|
| security/ir.model.access.csv | Security |
| data/asset_sequence.xml | Data |
| data/asset_disposal_sequence.xml | Data |
| data/purchase_request_sequence.xml | Data |
| data/stock_inventory_sequence.xml | Data |
| data/product_upgrade.xml | Data |
| views/purchase_request_views.xml | Views |
| views/budget_views.xml | Views |
| views/stock_picking_views.xml | Views |
| views/purchase_order_views.xml | Views |
| views/asset_disposal_views.xml | Views |
| views/asset_inspection_views.xml | Views |
| views/product_template_views.xml | Views |
| views/stock_location_views.xml | Views |
| views/account_move_views.xml | Views |
| views/menu.xml | Views |
Menus¶
| Menu ID | Parent | Action |
|---|---|---|
| menu_asset_disposal | stock.menu_stock_root | action_asset_disposal |
| menu_scola_inventory_budget | stock.menu_stock_root | action_scola_budget_plan |
| menu_scola_purchase_request | stock.menu_stock_root | action_scola_purchase_request |
| menu_asset_inspection | stock.menu_stock_root | action_asset_inspection |
Dependencies¶
| Module | Reason |
|---|---|
| stock | Manifest dependency |
| purchase | Manifest dependency |
| Manifest dependency | |
| scola_account | Manifest dependency |
| maintenance | Manifest dependency |
Module: scola_lesson_hours¶
Models¶
| Model | Type | Inherits | Description |
|---|---|---|---|
| scola.lesson.hours | New | - | Custom model |
Controllers¶
No controllers detected.
Security¶
ir.model.access.csv¶
| ID | Model | Group | R | W | C | D |
|---|---|---|---|---|---|---|
| access_scola_lesson_hours_user | model_scola_lesson_hours | base.group_user | 1 | 0 | 0 | 0 |
| access_scola_lesson_hours_manager | model_scola_lesson_hours | base.group_system | 1 | 1 | 1 | 1 |
Record Rules¶
No record rules found.
Data Files¶
| File | Purpose |
|---|---|
| security/ir.model.access.csv | Security |
| views/lesson_hours_view.xml | Views |
| views/menu.xml | Views |
Menus¶
| Menu ID | Parent | Action |
|---|---|---|
| menu_scola_lesson_hours_root | - | - |
| menu_scola_lesson_hours_config | menu_scola_lesson_hours_root | - |
| menu_scola_lesson_hours | menu_scola_lesson_hours_config | action_scola_lesson_hours |
Dependencies¶
| Module | Reason |
|---|---|
| base | Manifest dependency |
Module: scola_library¶
Models¶
| Model | Type | Inherits | Description |
|---|---|---|---|
| op.media.unit | Extension | op.media.unit | Extension for op.media.unit |
| op.media | Extension | op.media | Extension for op.media |
| op.library.settings | New (inherits) | res.config.settings | Extension for res.config.settings |
| op.media.movement | Extension | op.media.movement | Extension for op.media.movement |
| op.media | Extension | op.media | Extension for op.media |
| op.stock.opname | New (inherits) | mail.thread, mail.activity.mixin | Extension for mail.thread, mail.activity.mixin |
| op.stock.opname.line | New | - | Custom model |
| op.reading.log | New | - | Custom model |
| op.reading.program | New | - | Custom model |
| op.textbook.package | New (inherits) | mail.thread, mail.activity.mixin | Extension for mail.thread, mail.activity.mixin |
| op.textbook.distribution | New (inherits) | mail.thread, mail.activity.mixin | Extension for mail.thread, mail.activity.mixin |
| op.textbook.distribution.line | New | - | Custom model |
| op.library.location | New | - | Custom model |
Controllers¶
No controllers detected.
Security¶
ir.model.access.csv¶
| ID | Model | Group | R | W | C | D |
|---|---|---|---|---|---|---|
| access_library_location_librarian | model_op_library_location | openeducat_library.group_op_library | 1 | 1 | 1 | 1 |
| access_library_location_user | model_op_library_location | base.group_user | 1 | 0 | 0 | 0 |
| access_stock_opname_librarian | model_op_stock_opname | openeducat_library.group_op_library | 1 | 1 | 1 | 1 |
| access_stock_opname_line_librarian | model_op_stock_opname_line | openeducat_library.group_op_library | 1 | 1 | 1 | 1 |
| access_textbook_package_librarian | model_op_textbook_package | openeducat_library.group_op_library | 1 | 1 | 1 | 1 |
| access_textbook_package_user | model_op_textbook_package | base.group_user | 1 | 0 | 0 | 0 |
| access_textbook_distribution_librarian | model_op_textbook_distribution | openeducat_library.group_op_library | 1 | 1 | 1 | 1 |
| access_textbook_distribution_line_librarian | model_op_textbook_distribution_line | openeducat_library.group_op_library | 1 | 1 | 1 | 1 |
| access_reading_log_user | model_op_reading_log | base.group_user | 1 | 1 | 1 | 1 |
| access_reading_log_librarian | model_op_reading_log | openeducat_library.group_op_library | 1 | 1 | 1 | 1 |
| access_reading_program_librarian | model_op_reading_program | openeducat_library.group_op_library | 1 | 1 | 1 | 1 |
| access_reading_program_user | model_op_reading_program | base.group_user | 1 | 0 | 0 | 0 |
Record Rules¶
| Name | Model | Domain | Groups |
|---|---|---|---|
| Library Location: Company Access | model_op_library_location | [('company_id', 'in', company_ids)] | - |
| Stock Opname: Company Access | model_op_stock_opname | [('company_id', 'in', company_ids)] | - |
| Textbook Package: Company Access | model_op_textbook_package | [('company_id', 'in', company_ids)] | - |
| Reading Log: Own Logs Only | model_op_reading_log | [('user_id', '=', user.id)] | [(4, ref('base.group_user'))] |
| Reading Log: Librarian Full Access | model_op_reading_log | [(1, '=', 1)] | [(4, ref('openeducat_library.group_op_library'))] |
| Reading Program: Company Access | model_op_reading_program | [('company_id', 'in', company_ids)] | - |
Data Files¶
| File | Purpose |
|---|---|
| security/scola_library_security.xml | Security |
| security/ir.model.access.csv | Security |
| data/library_location_data.xml | Data |
| data/library_sequence_data.xml | Data |
| data/library_cron_data.xml | Data |
| views/library_location_views.xml | Views |
| views/stock_opname_views.xml | Views |
| views/textbook_package_views.xml | Views |
| views/reading_log_views.xml | Views |
| views/library_settings_views.xml | Views |
| views/menu_views.xml | Views |
| views/circulation_views.xml | Views |
Menus¶
| Menu ID | Parent | Action |
|---|---|---|
| menu_scola_library_root | openeducat_library.menu_op_library_root | - |
| menu_library_location | menu_scola_library_root | action_library_location |
| menu_stock_opname | menu_scola_library_root | action_stock_opname |
| menu_textbook | menu_scola_library_root | - |
| menu_textbook_package | menu_textbook | action_textbook_package |
| menu_textbook_distribution | menu_textbook | action_textbook_distribution |
| menu_gls | menu_scola_library_root | - |
| menu_reading_log | menu_gls | action_reading_log |
| menu_reading_program | menu_gls | action_reading_program |
| menu_library_config | menu_scola_library_root | - |
| menu_library_settings | menu_library_config | action_library_settings |
| menu_overdue_loans | menu_scola_library_root | action_overdue_loans |
Dependencies¶
| Module | Reason |
|---|---|
| base | Manifest dependency |
| openeducat_core | Manifest dependency |
| openeducat_library | Manifest dependency |
| scola_core | Manifest dependency |
Module: scola_news¶
Models¶
| Model | Type | Inherits | Description |
|---|---|---|---|
| scola.news | New (inherits) | mail.thread, mail.activity.mixin | Extension for mail.thread, mail.activity.mixin |
| scola.news.category | New | - | Custom model |
Controllers¶
No controllers detected.
Security¶
ir.model.access.csv¶
| ID | Model | Group | R | W | C | D |
|---|---|---|---|---|---|---|
| access_scola_news_user | model_scola_news | base.group_user | 1 | 1 | 1 | 1 |
| access_scola_news_category_user | model_scola_news_category | base.group_user | 1 | 1 | 1 | 1 |
Record Rules¶
No record rules found.
Data Files¶
| File | Purpose |
|---|---|
| security/ir.model.access.csv | Security |
| views/scola_news_views.xml | Views |
| views/scola_news_menu.xml | Views |
Menus¶
| Menu ID | Parent | Action |
|---|---|---|
| menu_scola_news_root | - | - |
| menu_scola_news | menu_scola_news_root | action_scola_news |
| menu_scola_news_category | menu_scola_news_root | action_scola_news_category |
Dependencies¶
| Module | Reason |
|---|---|
| base | Manifest dependency |
| Manifest dependency |
Module: scola_odoo_base¶
Models¶
No custom models detected.
Controllers¶
No controllers detected.
Security¶
ir.model.access.csv¶
No access rules found.
Record Rules¶
No record rules found.
Data Files¶
No data files listed in manifest.
Menus¶
No menus detected.
Dependencies¶
| Module | Reason |
|---|---|
| base | Manifest dependency |
| Manifest dependency | |
| contacts | Manifest dependency |
| hr | Manifest dependency |
| hr_attendance | Manifest dependency |
| account | Manifest dependency |
| portal | Manifest dependency |
| website | Manifest dependency |
| calendar | Manifest dependency |
| survey | Manifest dependency |
| web | Manifest dependency |
| openeducat_core | Manifest dependency |
| openeducat_erp | Manifest dependency |
Module: scola_parent¶
Models¶
| Model | Type | Inherits | Description |
|---|---|---|---|
| op.parent | Extension | op.parent | Extension for op.parent |
Controllers¶
| Route | Method | Auth | Description |
|---|---|---|---|
| /my/child, /my/child/page/ |
- | user | List all children of the logged-in parent |
| /my/child/ |
- | user | Detail page for a specific child |
| /my/child/ |
- | user | Fees list for a specific child |
| /my/child/ |
POST | user | Handle payment proof upload |
Security¶
ir.model.access.csv¶
| ID | Model | Group | R | W | C | D |
|---|---|---|---|---|---|---|
| access_scola_parent_op_parent | openeducat_parent.model_op_parent | scola_parent.group_scola_parent | 1 | 0 | 0 | 0 |
| access_scola_parent_op_student | openeducat_core.model_op_student | scola_parent.group_scola_parent | 1 | 0 | 0 | 0 |
| access_scola_parent_monthly_fee | scola_fees.model_scola_fee_schedule | scola_parent.group_scola_parent | 1 | 1 | 0 | 0 |
| access_scola_parent_op_batch | openeducat_core.model_op_batch | scola_parent.group_scola_parent | 1 | 0 | 0 | 0 |
| access_scola_parent_op_course | openeducat_core.model_op_course | scola_parent.group_scola_parent | 1 | 0 | 0 | 0 |
| access_scola_parent_op_subject | openeducat_core.model_op_subject | scola_parent.group_scola_parent | 1 | 0 | 0 | 0 |
| access_scola_parent_academic_term | openeducat_core.model_op_academic_term | scola_parent.group_scola_parent | 1 | 0 | 0 | 0 |
| access_scola_parent_academic_year | openeducat_core.model_op_academic_year | scola_parent.group_scola_parent | 1 | 0 | 0 | 0 |
| access_scola_parent_session | openeducat_timetable.model_op_session | scola_parent.group_scola_parent | 1 | 0 | 0 | 0 |
| access_scola_parent_attendance_line | openeducat_attendance.model_op_attendance_line | scola_parent.group_scola_parent | 1 | 0 | 0 | 0 |
| access_scola_parent_attendance_sheet | openeducat_attendance.model_op_attendance_sheet | scola_parent.group_scola_parent | 1 | 0 | 0 | 0 |
| access_scola_parent_exam | openeducat_exam.model_op_exam | scola_parent.group_scola_parent | 1 | 0 | 0 | 0 |
| access_scola_parent_exam_attendees | openeducat_exam.model_op_exam_attendees | scola_parent.group_scola_parent | 1 | 0 | 0 | 0 |
| access_scola_parent_exam_session | openeducat_exam.model_op_exam_session | scola_parent.group_scola_parent | 1 | 0 | 0 | 0 |
| access_scola_parent_exam_type | openeducat_exam.model_op_exam_type | scola_parent.group_scola_parent | 1 | 0 | 0 | 0 |
| access_scola_parent_assignment | openeducat_assignment.model_op_assignment | scola_parent.group_scola_parent | 1 | 0 | 0 | 0 |
| access_scola_parent_assignment_sub | openeducat_assignment.model_op_assignment_sub_line | scola_parent.group_scola_parent | 1 | 0 | 0 | 0 |
| access_scola_parent_grading_type | openeducat_assignment.model_grading_assignment_type | scola_parent.group_scola_parent | 1 | 0 | 0 | 0 |
Record Rules¶
| Name | Model | Domain | Groups |
|---|---|---|---|
| Scola Parent Login rule | openeducat_parent.model_op_parent | [('user_id', '=', user.id)] | [(4, ref('scola_parent.group_scola_parent'))] |
| Scola Student Parent Login rule | openeducat_core.model_op_student | [(1, '=', 1)] | [(4, ref('scola_parent.group_scola_parent'))] |
| Scola Fees Parent Rule | scola_fees.model_scola_fee_schedule | [('student_id', 'in', user.env['op.parent'].sudo().search([('user_id', '=', user.id)]).student_ids.ids)] | [(4, ref('scola_parent.group_scola_parent'))] |
| Batch: Parent See Children Batches | openeducat_core.model_op_batch | [('student_ids', 'in', user.env['op.parent'].sudo().search([('user_id', '=', user.id)]).student_ids.ids)] | [(4, ref('scola_parent.group_scola_parent'))] |
| Course: Parent Read All | openeducat_core.model_op_course | [(1, '=', 1)] | [(4, ref('scola_parent.group_scola_parent'))] |
| Subject: Parent Read All | openeducat_core.model_op_subject | [(1, '=', 1)] | [(4, ref('scola_parent.group_scola_parent'))] |
| Academic Term: Parent Read All | openeducat_core.model_op_academic_term | [(1, '=', 1)] | [(4, ref('scola_parent.group_scola_parent'))] |
| Academic Year: Parent Read All | openeducat_core.model_op_academic_year | [(1, '=', 1)] | [(4, ref('scola_parent.group_scola_parent'))] |
| Session: Parent See Children Sessions | openeducat_timetable.model_op_session | [('batch_id.student_ids', 'in', user.env['op.parent'].sudo().search([('user_id', '=', user.id)]).student_ids.ids)] | [(4, ref('scola_parent.group_scola_parent'))] |
| Attendance Line: Parent See Children Attendance | openeducat_attendance.model_op_attendance_line | [('student_id', 'in', user.env['op.parent'].sudo().search([('user_id', '=', user.id)]).student_ids.ids)] | [(4, ref('scola_parent.group_scola_parent'))] |
| Attendance Sheet: Parent See Children Sheets | openeducat_attendance.model_op_attendance_sheet | [('attendance_line.student_id', 'in', user.env['op.parent'].sudo().search([('user_id', '=', user.id)]).student_ids.ids)] | [(4, ref('scola_parent.group_scola_parent'))] |
| Exam: Parent See Children Exams | openeducat_exam.model_op_exam | [('batch_id.student_ids', 'in', user.env['op.parent'].sudo().search([('user_id', '=', user.id)]).student_ids.ids)] | [(4, ref('scola_parent.group_scola_parent'))] |
| Exam Attendees: Parent See Children Results | openeducat_exam.model_op_exam_attendees | [('student_id', 'in', user.env['op.parent'].sudo().search([('user_id', '=', user.id)]).student_ids.ids)] | [(4, ref('scola_parent.group_scola_parent'))] |
| Exam Session: Parent See Children Exam Sessions | openeducat_exam.model_op_exam_session | [('batch_id.student_ids', 'in', user.env['op.parent'].sudo().search([('user_id', '=', user.id)]).student_ids.ids)] | [(4, ref('scola_parent.group_scola_parent'))] |
| Assignment: Parent See Children Assignments | openeducat_assignment.model_op_assignment | [('allocation_ids', 'in', user.env['op.parent'].sudo().search([('user_id', '=', user.id)]).student_ids.ids), ('state', 'in', ['publish', 'finish'])] | [(4, ref('scola_parent.group_scola_parent'))] |
| Assignment Sub Line: Parent See Children Submissions | openeducat_assignment.model_op_assignment_sub_line | [('student_id', 'in', user.env['op.parent'].sudo().search([('user_id', '=', user.id)]).student_ids.ids)] | [(4, ref('scola_parent.group_scola_parent'))] |
Data Files¶
| File | Purpose |
|---|---|
| security/scola_security.xml | Security |
| security/ir.model.access.csv | Security |
| data/parent_relationship_data.xml | Data |
| views/parent_views.xml | Views |
| views/portal_templates.xml | Views |
| views/portal_error_templates.xml | Views |
Menus¶
No menus detected.
Dependencies¶
| Module | Reason |
|---|---|
| base | Manifest dependency |
| openeducat_parent | Manifest dependency |
| scola_core | Manifest dependency |
| scola_fees | Manifest dependency |
| openeducat_timetable | Manifest dependency |
| openeducat_attendance | Manifest dependency |
| openeducat_exam | Manifest dependency |
| openeducat_assignment | Manifest dependency |
Module: scola_payroll¶
Models¶
| Model | Type | Inherits | Description |
|---|---|---|---|
| hr.contract | Extension | hr.contract | Extend hr.contract for Indonesian teacher payroll requirements. |
| hr.payroll.structure.type | Extension | hr.payroll.structure.type | Extend hr.payroll.structure.type to add description and default salary structure for each type. |
| hr.contract | Extension | hr.contract | Extend hr.contract to auto-fill fields when structure type is selected. |
| hr.payslip | Extension | hr.payslip | Extend hr.payslip for Indonesian teacher payroll with attendance integration. |
| hr.employee | Extension | hr.employee | Extend hr.employee for Indonesian teacher payroll requirements. |
Controllers¶
No controllers detected.
Security¶
ir.model.access.csv¶
No access rules found.
Record Rules¶
No record rules found.
Data Files¶
| File | Purpose |
|---|---|
| views/hr_payroll_structure_type_views.xml | Views |
| views/hr_payroll_views.xml | Views |
| data/hr_salary_rule_category_data.xml | Data |
| data/hr_salary_rule_data.xml | Data |
| data/hr_payroll_structure_data.xml | Data |
| data/hr_payroll_structure_type_data.xml | Data |
Menus¶
| Menu ID | Parent | Action |
|---|---|---|
| menu_hr_payroll_structure_type_config | om_hr_payroll.menu_hr_payroll_configuration | hr_payroll_structure_type_action |
Dependencies¶
| Module | Reason |
|---|---|
| base | Manifest dependency |
| hr | Manifest dependency |
| hr_contract | Manifest dependency |
| om_hr_payroll | Manifest dependency |
| scola_hr | Manifest dependency |
Module: scola_portal¶
Models¶
| Model | Type | Inherits | Description |
|---|---|---|---|
| scola.portal.notification | New (inherits) | mail.thread | Unified notification model for portal |
| scola.announcement | New (inherits) | mail.thread, mail.activity.mixin | Enhanced announcement model with target audience and approval workflow |
| scola.announcement.read | New | - | Track announcement reads |
| scola.announcement.reject.wizard | New | - | Wizard for rejecting announcements with reason |
| scola.notification.type | New | - | Notification types configuration |
| scola.notification.preference | New | - | User notification preferences |
| scola.quiet.hours | New | - | Quiet hours configuration for notifications |
| res.users | Extension | res.users | Extend res.users with notification settings |
| scola.notification.config | New | - | Configuration for notification delivery channels |
Controllers¶
| Route | Method | Auth | Description |
|---|---|---|---|
| /api/portal/notifications | GET, POST | user | Get notifications for current user |
| /api/portal/notifications/ |
POST | user | Mark a notification as read |
| /api/portal/notifications/read-all | POST | user | Mark all notifications as read |
| /api/portal/notifications/unread-count | GET, POST | user | Get unread notification count |
| /api/portal/announcements | GET, POST | user | Get published announcements for current user |
| /api/portal/announcements/ |
GET, POST | user | Get announcement detail and mark as read |
| /api/portal/preferences | GET, POST | user | Get notification preferences for current user |
| /api/portal/preferences/update | POST | user | Update notification preference for a type |
| /api/portal/quiet-hours/update | POST | user | Update quiet hours for current user |
| /api/portal/dashboard/parent | GET, POST | user | Get parent dashboard data |
| /api/portal/fcm/register | POST | user | Register FCM token for push notifications |
| /api/portal/notification-config | GET, POST | user | Get notification channel configuration (Admin only) |
| /api/portal/notification-config/save | POST | user | Save notification channel configuration (Admin only) |
| /api/portal/notification-config/test-whatsapp | POST | user | Test WhatsApp service connection (Admin only) |
| /api/portal/notification-config/whatsapp-qr | GET, POST | user | Get WhatsApp QR code for authentication (Admin only) |
| /api/portal/notification-config/test-email | POST | user | Send test email (Admin only) |
Security¶
ir.model.access.csv¶
| ID | Model | Group | R | W | C | D |
|---|---|---|---|---|---|---|
| access_notification_type_user | model_scola_notification_type | base.group_user | 1 | 0 | 0 | 0 |
| access_notification_type_admin | model_scola_notification_type | scola_portal.group_portal_admin | 1 | 1 | 1 | 1 |
| access_notification_preference_user | model_scola_notification_preference | base.group_user | 1 | 1 | 1 | 1 |
| access_quiet_hours_user | model_scola_quiet_hours | base.group_user | 1 | 1 | 1 | 1 |
| access_quiet_hours_admin | model_scola_quiet_hours | scola_portal.group_portal_admin | 1 | 1 | 1 | 1 |
| access_portal_notification_user | model_scola_portal_notification | base.group_user | 1 | 1 | 0 | 1 |
| access_portal_notification_admin | model_scola_portal_notification | scola_portal.group_portal_admin | 1 | 1 | 1 | 1 |
| access_announcement_user | model_scola_announcement | base.group_user | 1 | 0 | 0 | 0 |
| access_announcement_portal | model_scola_announcement | scola_portal.group_portal_user | 1 | 1 | 1 | 0 |
| access_announcement_manager | model_scola_announcement | scola_portal.group_portal_manager | 1 | 1 | 1 | 1 |
| access_announcement_read_user | model_scola_announcement_read | base.group_user | 1 | 0 | 1 | 0 |
| access_announcement_read_admin | model_scola_announcement_read | scola_portal.group_portal_admin | 1 | 1 | 1 | 1 |
| access_announcement_reject_wizard | model_scola_announcement_reject_wizard | scola_portal.group_portal_manager | 1 | 1 | 1 | 1 |
| access_notification_config_admin | model_scola_notification_config | scola_portal.group_portal_admin | 1 | 1 | 1 | 1 |
Record Rules¶
| Name | Model | Domain | Groups |
|---|---|---|---|
| Portal Notification: Own Only | model_scola_portal_notification | [('user_id', '=', user.id)] | [(4, ref('base.group_user'))] |
| Notification Preference: Own Only | model_scola_notification_preference | [('user_id', '=', user.id)] | [(4, ref('base.group_user'))] |
| Quiet Hours: Own Only | model_scola_quiet_hours | ['|', ('user_id', '=', user.id), ('user_id', '=', False)] | [(4, ref('base.group_user'))] |
| Announcement: Published Read | model_scola_announcement | [('state', '=', 'published')] | [(4, ref('base.group_user'))] |
| Announcement: Author Manage | model_scola_announcement | [('author_id', '=', user.id)] | [(4, ref('group_portal_user'))] |
| Announcement: Manager Full Access | model_scola_announcement | [(1, '=', 1)] | [(4, ref('group_portal_manager'))] |
| Announcement Read: Own Only | model_scola_announcement_read | [('user_id', '=', user.id)] | [(4, ref('base.group_user'))] |
Data Files¶
| File | Purpose |
|---|---|
| security/scola_portal_security.xml | Security |
| security/ir.model.access.csv | Security |
| data/notification_type_data.xml | Data |
| data/cron_data.xml | Data |
| views/notification_preference_views.xml | Views |
| views/announcement_views.xml | Views |
| views/portal_menu.xml | Views |
| views/notification_config_views.xml | Views |
Menus¶
| Menu ID | Parent | Action |
|---|---|---|
| menu_notification_config | menu_portal_config | action_notification_config |
| menu_portal_root | - | - |
| menu_announcements | menu_portal_root | - |
| menu_announcements_all | menu_announcements | action_announcements |
| menu_announcements_my | menu_announcements | action_my_announcements |
| menu_announcements_pending | menu_announcements | action_announcements_pending |
| menu_notifications | menu_portal_root | - |
| menu_portal_notifications | menu_notifications | action_portal_notifications |
| menu_portal_config | menu_portal_root | - |
| menu_notification_types | menu_portal_config | action_notification_types |
| menu_notification_preferences | menu_portal_config | action_notification_preferences |
| menu_quiet_hours | menu_portal_config | action_quiet_hours |
Dependencies¶
| Module | Reason |
|---|---|
| base | Manifest dependency |
| Manifest dependency | |
| scola_core | Manifest dependency |
| scola_news | Manifest dependency |
| scola_fees | Manifest dependency |
Module: scola_report_card¶
Models¶
| Model | Type | Inherits | Description |
|---|---|---|---|
| op.faculty | Extension | op.faculty | Extension for op.faculty |
| op.batch | Extension | op.batch | Extension for op.batch |
| scola.curriculum | New (inherits) | mail.thread, mail.activity.mixin | Extension for mail.thread, mail.activity.mixin |
| scola.student.report | New (inherits) | mail.thread, mail.activity.mixin | Extension for mail.thread, mail.activity.mixin |
| scola.student.report.line | New | - | Custom model |
| scola.student.report.component | New | - | Custom model |
| scola.learning.outcome | New (inherits) | mail.thread, mail.activity.mixin | Capaian Pembelajaran (CP) - Learning Outcome per Subject per Phase Sesuai Kurikulum Merdeka, CP adalah kompetensi yang diharapkan dicapai peserta didik di akhir setiap fase pembelajaran. |
| scola.learning.objective | New | - | Tujuan Pembelajaran (TP) - Breakdown dari Capaian Pembelajaran TP adalah penjabaran CP menjadi target pembelajaran yang lebih spesifik per semester atau unit pembelajaran. |
| scola.student.learning.progress | New | - | Track student progress on learning objectives |
| scola.dapodik.rapor.sync | New | - | Model for managing e-Rapor to Dapodik synchronization |
| scola.dapodik.rapor.sync.line | New | - | Detail line for rapor sync status per student |
| scola.dapodik.rapor.export.wizard | New | - | Wizard for exporting nilai to Dapodik Excel format |
| scola.grade.scale | New | - | Custom model |
| scola.grade.scale.line | New | - | Custom model |
| scola.p5.dimension | New | - | Master data for P5 (Profil Pelajar Pancasila) dimensions |
| scola.p5.element | New | - | Sub-elements within each P5 dimension |
| scola.p5.project | New (inherits) | mail.thread, mail.activity.mixin | P5 Project per semester/term |
| scola.p5.assessment | New (inherits) | mail.thread, mail.activity.mixin | Individual student assessment for P5 project |
| scola.p5.assessment.line | New | - | Assessment per dimension within a P5 assessment |
| scola.assessment.component | New | - | Custom model |
| scola.wizard.sync.report.card.groups | New | - | Wizard to sync report card groups to teachers |
| scola.wizard.subject.teacher.line | New | - | Line for assigning teacher to each subject in batch |
| scola.wizard.generate.reports | New | - | Custom model |
Controllers¶
No controllers detected.
Security¶
ir.model.access.csv¶
| ID | Model | Group | R | W | C | D |
|---|---|---|---|---|---|---|
| access_curriculum_manager | model_scola_curriculum | group_report_card_manager | 1 | 1 | 1 | 1 |
| access_curriculum_user | model_scola_curriculum | base.group_user | 1 | 0 | 0 | 0 |
| access_assessment_component_manager | model_scola_assessment_component | group_report_card_manager | 1 | 1 | 1 | 1 |
| access_assessment_component_user | model_scola_assessment_component | base.group_user | 1 | 0 | 0 | 0 |
| access_grade_scale_manager | model_scola_grade_scale | group_report_card_manager | 1 | 1 | 1 | 1 |
| access_grade_scale_user | model_scola_grade_scale | base.group_user | 1 | 0 | 0 | 0 |
| access_grade_scale_line_manager | model_scola_grade_scale_line | group_report_card_manager | 1 | 1 | 1 | 1 |
| access_grade_scale_line_user | model_scola_grade_scale_line | base.group_user | 1 | 0 | 0 | 0 |
| access_student_report_manager | model_scola_student_report | group_report_card_manager | 1 | 1 | 1 | 1 |
| access_student_report_homeroom | model_scola_student_report | group_report_card_homeroom | 1 | 1 | 1 | 0 |
| access_student_report_teacher | model_scola_student_report | group_report_card_teacher | 1 | 1 | 0 | 0 |
| access_student_report_student | model_scola_student_report | scola_core.group_scola_student | 1 | 0 | 0 | 0 |
| access_report_line_manager | model_scola_student_report_line | group_report_card_manager | 1 | 1 | 1 | 1 |
| access_report_line_teacher | model_scola_student_report_line | group_report_card_teacher | 1 | 1 | 1 | 0 |
| access_report_line_homeroom | model_scola_student_report_line | group_report_card_homeroom | 1 | 1 | 1 | 1 |
| access_report_line_student | model_scola_student_report_line | scola_core.group_scola_student | 1 | 0 | 0 | 0 |
| access_report_component_manager | model_scola_student_report_component | group_report_card_manager | 1 | 1 | 1 | 1 |
| access_report_component_teacher | model_scola_student_report_component | group_report_card_teacher | 1 | 1 | 1 | 0 |
| access_report_component_student | model_scola_student_report_component | scola_core.group_scola_student | 1 | 0 | 0 | 0 |
| access_wizard_ranking_manager | model_scola_wizard_compute_ranking | group_report_card_manager | 1 | 1 | 1 | 1 |
| access_wizard_ranking_homeroom | model_scola_wizard_compute_ranking | group_report_card_homeroom | 1 | 1 | 1 | 1 |
| access_wizard_generate_manager | model_scola_wizard_generate_reports | group_report_card_manager | 1 | 1 | 1 | 1 |
| access_wizard_generate_homeroom | model_scola_wizard_generate_reports | group_report_card_homeroom | 1 | 1 | 1 | 1 |
| access_wizard_subject_teacher_manager | model_scola_wizard_subject_teacher_line | group_report_card_manager | 1 | 1 | 1 | 1 |
| access_wizard_subject_teacher_homeroom | model_scola_wizard_subject_teacher_line | group_report_card_homeroom | 1 | 1 | 1 | 1 |
| access_wizard_sync_groups_manager | model_scola_wizard_sync_report_card_groups | group_report_card_manager | 1 | 1 | 1 | 1 |
| access_student_report_parent | model_scola_student_report | scola_parent.group_scola_parent | 1 | 0 | 0 | 0 |
| access_report_line_parent | model_scola_student_report_line | scola_parent.group_scola_parent | 1 | 0 | 0 | 0 |
| access_report_component_parent | model_scola_student_report_component | scola_parent.group_scola_parent | 1 | 0 | 0 | 0 |
| access_curriculum_parent | model_scola_curriculum | scola_parent.group_scola_parent | 1 | 0 | 0 | 0 |
| access_assessment_parent | model_scola_assessment_component | scola_parent.group_scola_parent | 1 | 0 | 0 | 0 |
| access_grade_scale_parent | model_scola_grade_scale | scola_parent.group_scola_parent | 1 | 0 | 0 | 0 |
| access_grade_scale_line_parent | model_scola_grade_scale_line | scola_parent.group_scola_parent | 1 | 0 | 0 | 0 |
| access_p5_dimension_manager | model_scola_p5_dimension | group_report_card_manager | 1 | 1 | 1 | 1 |
| access_p5_dimension_user | model_scola_p5_dimension | base.group_user | 1 | 0 | 0 | 0 |
| access_p5_element_manager | model_scola_p5_element | group_report_card_manager | 1 | 1 | 1 | 1 |
| access_p5_element_user | model_scola_p5_element | base.group_user | 1 | 0 | 0 | 0 |
| access_p5_project_manager | model_scola_p5_project | group_report_card_manager | 1 | 1 | 1 | 1 |
| access_p5_project_teacher | model_scola_p5_project | group_report_card_teacher | 1 | 1 | 0 | 0 |
| access_p5_project_student | model_scola_p5_project | scola_core.group_scola_student | 1 | 0 | 0 | 0 |
| access_p5_project_parent | model_scola_p5_project | scola_parent.group_scola_parent | 1 | 0 | 0 | 0 |
| access_p5_assessment_manager | model_scola_p5_assessment | group_report_card_manager | 1 | 1 | 1 | 1 |
| access_p5_assessment_teacher | model_scola_p5_assessment | group_report_card_teacher | 1 | 1 | 1 | 0 |
| access_p5_assessment_student | model_scola_p5_assessment | scola_core.group_scola_student | 1 | 0 | 0 | 0 |
| access_p5_assessment_parent | model_scola_p5_assessment | scola_parent.group_scola_parent | 1 | 0 | 0 | 0 |
| access_p5_assessment_line_manager | model_scola_p5_assessment_line | group_report_card_manager | 1 | 1 | 1 | 1 |
| access_p5_assessment_line_teacher | model_scola_p5_assessment_line | group_report_card_teacher | 1 | 1 | 1 | 0 |
| access_p5_assessment_line_student | model_scola_p5_assessment_line | scola_core.group_scola_student | 1 | 0 | 0 | 0 |
| access_p5_assessment_line_parent | model_scola_p5_assessment_line | scola_parent.group_scola_parent | 1 | 0 | 0 | 0 |
| access_learning_outcome_manager | model_scola_learning_outcome | group_report_card_manager | 1 | 1 | 1 | 1 |
| access_learning_outcome_teacher | model_scola_learning_outcome | group_report_card_teacher | 1 | 0 | 0 | 0 |
| access_learning_outcome_user | model_scola_learning_outcome | base.group_user | 1 | 0 | 0 | 0 |
| access_learning_objective_manager | model_scola_learning_objective | group_report_card_manager | 1 | 1 | 1 | 1 |
| access_learning_objective_teacher | model_scola_learning_objective | group_report_card_teacher | 1 | 0 | 0 | 0 |
| access_learning_objective_user | model_scola_learning_objective | base.group_user | 1 | 0 | 0 | 0 |
| access_student_progress_manager | model_scola_student_learning_progress | group_report_card_manager | 1 | 1 | 1 | 1 |
| access_student_progress_teacher | model_scola_student_learning_progress | group_report_card_teacher | 1 | 1 | 1 | 0 |
| access_student_progress_student | model_scola_student_learning_progress | scola_core.group_scola_student | 1 | 0 | 0 | 0 |
| access_student_progress_parent | model_scola_student_learning_progress | scola_parent.group_scola_parent | 1 | 0 | 0 | 0 |
| access_dapodik_rapor_sync_manager | model_scola_dapodik_rapor_sync | group_report_card_manager | 1 | 1 | 1 | 1 |
| access_dapodik_rapor_sync_user | model_scola_dapodik_rapor_sync | base.group_user | 1 | 0 | 0 | 0 |
| access_dapodik_rapor_sync_line_manager | model_scola_dapodik_rapor_sync_line | group_report_card_manager | 1 | 1 | 1 | 1 |
| access_dapodik_rapor_sync_line_user | model_scola_dapodik_rapor_sync_line | base.group_user | 1 | 0 | 0 | 0 |
| access_dapodik_rapor_export_wizard_manager | model_scola_dapodik_rapor_export_wizard | group_report_card_manager | 1 | 1 | 1 | 1 |
| access_dapodik_rapor_export_wizard_user | model_scola_dapodik_rapor_export_wizard | base.group_user | 1 | 1 | 1 | 1 |
Record Rules¶
| Name | Model | Domain | Groups |
|---|---|---|---|
| Faculty: Homeroom Teacher View All | openeducat_core.model_op_faculty | [(1, '=', 1)] | [(4, ref('group_report_card_homeroom'))] |
| Curriculum: Manager Full Access | model_scola_curriculum | [(1, '=', 1)] | [(4, ref('group_report_card_manager'))] |
| Curriculum: User Read Active Only | model_scola_curriculum | [('is_active', '=', True)] | [(4, ref('base.group_user'))] |
| Student Report: Manager Full Access | model_scola_student_report | [(1, '=', 1)] | [(4, ref('group_report_card_manager'))] |
| Student Report: Homeroom Teacher Batch Access | model_scola_student_report | [('batch_id.faculty_id.user_id', '=', user.id)] | [(4, ref('group_report_card_homeroom'))] |
| Student Report: Teacher See Assigned Reports | model_scola_student_report | [('line_ids.teacher_id.user_id', '=', user.id)] | [(4, ref('group_report_card_teacher'))] |
| Student Report: Student See Own Published | model_scola_student_report | [('student_id.user_id', '=', user.id), ('state', '=', 'published')] | [(4, ref('scola_core.group_scola_student'))] |
| Report Line: Manager Full Access | model_scola_student_report_line | [(1, '=', 1)] | [(4, ref('group_report_card_manager'))] |
| Report Line: Homeroom Teacher Batch Access | model_scola_student_report_line | [('report_id.batch_id.faculty_id.user_id', '=', user.id)] | [(4, ref('group_report_card_homeroom'))] |
| Report Line: Teacher See Own Assigned | model_scola_student_report_line | [('teacher_id.user_id', '=', user.id)] | [(4, ref('group_report_card_teacher'))] |
| Report Line: Student See Own Published | model_scola_student_report_line | [('report_id.student_id.user_id', '=', user.id), ('report_id.state', '=', 'published')] | [(4, ref('scola_core.group_scola_student'))] |
| Student Report: Parent See Children Published | model_scola_student_report | [('student_id', 'in', user.env['op.parent'].sudo().search([('user_id', '=', user.id)]).student_ids.ids), ('state', '=', 'published')] | [(4, ref('scola_parent.group_scola_parent'))] |
| Report Line: Parent See Children Published | model_scola_student_report_line | [('report_id.student_id', 'in', user.env['op.parent'].sudo().search([('user_id', '=', user.id)]).student_ids.ids), ('report_id.state', '=', 'published')] | [(4, ref('scola_parent.group_scola_parent'))] |
| Report Component: Parent See Children Published | model_scola_student_report_component | [('report_line_id.report_id.student_id', 'in', user.env['op.parent'].sudo().search([('user_id', '=', user.id)]).student_ids.ids), ('report_line_id.report_id.state', '=', 'published')] | [(4, ref('scola_parent.group_scola_parent'))] |
Data Files¶
| File | Purpose |
|---|---|
| security/security.xml | Security |
| security/ir.model.access.csv | Security |
| wizard/compute_ranking_wizard.xml | Wizard views |
| wizard/generate_reports_wizard.xml | Wizard views |
| wizard/sync_groups_wizard.xml | Wizard views |
| views/curriculum_views.xml | Views |
| views/assessment_component_views.xml | Views |
| views/grade_scale_views.xml | Views |
| views/student_report_views.xml | Views |
| views/menus.xml | Views |
| data/curriculum_merdeka_data.xml | Data |
| data/p5_dimension_data.xml | Data |
| report/report_card_template.xml | Report |
Menus¶
| Menu ID | Parent | Action |
|---|---|---|
| menu_report_card_root | - | - |
| menu_report_card_config | menu_report_card_root | - |
| menu_curriculum | menu_report_card_config | action_curriculum |
| menu_assessment_component | menu_report_card_config | action_assessment_component |
| menu_grade_scale | menu_report_card_config | action_grade_scale |
| menu_sync_groups | menu_report_card_config | action_wizard_sync_groups |
| menu_report_cards | menu_report_card_root | - |
| menu_my_subject_scores | menu_report_cards | action_my_subject_scores |
| menu_student_report | menu_report_cards | action_student_report |
| menu_generate_reports | menu_report_cards | action_wizard_generate_reports |
| menu_compute_rankings | menu_report_cards | action_wizard_compute_ranking |
Dependencies¶
| Module | Reason |
|---|---|
| base | Manifest dependency |
| Manifest dependency | |
| openeducat_core | Manifest dependency |
| openeducat_exam | Manifest dependency |
| openeducat_attendance | Manifest dependency |
| scola_core | Manifest dependency |
| scola_parent | Manifest dependency |
Module: scola_rules¶
Models¶
| Model | Type | Inherits | Description |
|---|---|---|---|
| scola.rules | New | - | Model for managing operational rules, rights and obligations |
| scola.rules.tag | New | - | Model for rule tags/categories |
Controllers¶
No controllers detected.
Security¶
ir.model.access.csv¶
| ID | Model | Group | R | W | C | D |
|---|---|---|---|---|---|---|
| access_scola_rules_all | model_scola_rules | base.group_user | 1 | 0 | 0 | 0 |
| access_scola_rules_portal | model_scola_rules | base.group_portal | 1 | 0 | 0 | 0 |
| access_scola_rules_manager | model_scola_rules | group_scola_rules_manager | 1 | 1 | 1 | 1 |
| access_scola_rules_tag_all | model_scola_rules_tag | base.group_user | 1 | 0 | 0 | 0 |
| access_scola_rules_tag_portal | model_scola_rules_tag | base.group_portal | 1 | 0 | 0 | 0 |
| access_scola_rules_tag_manager | model_scola_rules_tag | group_scola_rules_manager | 1 | 1 | 1 | 1 |
Record Rules¶
No record rules found.
Data Files¶
| File | Purpose |
|---|---|
| security/scola_rules_security.xml | Security |
| security/ir.model.access.csv | Security |
| views/scola_rules_views.xml | Views |
| views/scola_rules_menus.xml | Views |
Menus¶
| Menu ID | Parent | Action |
|---|---|---|
| menu_scola_rules_root | - | - |
| menu_scola_rules_main | menu_scola_rules_root | - |
| menu_scola_rules_items | menu_scola_rules_main | action_scola_rules |
| menu_scola_rules_tags | menu_scola_rules_main | action_scola_rules_tag |
Dependencies¶
| Module | Reason |
|---|---|
| base | Manifest dependency |
| scola_core | Manifest dependency |
Module: scola_student_activity¶
Models¶
| Model | Type | Inherits | Description |
|---|---|---|---|
| scola.violation.category | New | - | Violation Category - defines severity levels based on point ranges |
| scola.violation.type | New | - | Violation Type - specific types of violations with point values |
| scola.student.permit | New (inherits) | mail.thread, mail.activity.mixin | Extension for mail.thread, mail.activity.mixin |
| scola.student.permit.type | New | - | Custom model |
| scola.achievement.level | New | - | Achievement Level - defines achievement tiers based on point ranges |
| op.student | Extension | op.student | Inherit op.student to add point field for achievement/violation tracking. This properly extends the student model without modifying third-party code. |
| scola.extracurricular | New (inherits) | mail.thread, mail.activity.mixin | Extension for mail.thread, mail.activity.mixin |
| scola.extracurricular.member | New (inherits) | mail.thread | Extension for mail.thread |
| scola.extracurricular.attendance | New | - | Custom model |
| scola.extracurricular.attendance.line | New | - | Custom model |
| scola.achievement | New (inherits) | mail.thread, mail.activity.mixin | Student Achievement - records student achievements with approval workflow |
| scola.violation.log | New (inherits) | mail.thread, mail.activity.mixin | Student Violation Log - records student violations with approval workflow |
Controllers¶
No controllers detected.
Security¶
ir.model.access.csv¶
| ID | Model | Group | R | W | C | D |
|---|---|---|---|---|---|---|
| access_scola_violation_category_manager | model_scola_violation_category | group_scola_student_activity_manager | 1 | 1 | 1 | 1 |
| access_scola_violation_category_teacher | model_scola_violation_category | group_scola_student_activity_teacher | 1 | 0 | 0 | 0 |
| access_scola_violation_category_student | model_scola_violation_category | scola_core.group_scola_student | 1 | 0 | 0 | 0 |
| access_scola_violation_type_manager | model_scola_violation_type | group_scola_student_activity_manager | 1 | 1 | 1 | 1 |
| access_scola_violation_type_teacher | model_scola_violation_type | group_scola_student_activity_teacher | 1 | 0 | 0 | 0 |
| access_scola_violation_type_student | model_scola_violation_type | scola_core.group_scola_student | 1 | 0 | 0 | 0 |
| access_scola_violation_log_manager | model_scola_violation_log | group_scola_student_activity_manager | 1 | 1 | 1 | 1 |
| access_scola_violation_log_teacher | model_scola_violation_log | group_scola_student_activity_teacher | 1 | 0 | 1 | 0 |
| access_scola_violation_log_student | model_scola_violation_log | scola_core.group_scola_student | 1 | 0 | 0 | 0 |
| access_scola_achievement_level_manager | model_scola_achievement_level | group_scola_student_activity_manager | 1 | 1 | 1 | 1 |
| access_scola_achievement_level_teacher | model_scola_achievement_level | group_scola_student_activity_teacher | 1 | 0 | 0 | 0 |
| access_scola_achievement_level_student | model_scola_achievement_level | scola_core.group_scola_student | 1 | 0 | 0 | 0 |
| access_scola_achievement_manager | model_scola_achievement | group_scola_student_activity_manager | 1 | 1 | 1 | 1 |
| access_scola_achievement_teacher | model_scola_achievement | group_scola_student_activity_teacher | 1 | 0 | 1 | 0 |
| access_scola_achievement_student | model_scola_achievement | scola_core.group_scola_student | 1 | 0 | 0 | 0 |
| access_scola_extracurricular_manager | model_scola_extracurricular | group_scola_student_activity_manager | 1 | 1 | 1 | 1 |
| access_scola_extracurricular_teacher | model_scola_extracurricular | group_scola_student_activity_teacher | 1 | 1 | 0 | 0 |
| access_scola_extracurricular_student | model_scola_extracurricular | scola_core.group_scola_student | 1 | 0 | 0 | 0 |
| access_scola_extracurricular_member_manager | model_scola_extracurricular_member | group_scola_student_activity_manager | 1 | 1 | 1 | 1 |
| access_scola_extracurricular_member_teacher | model_scola_extracurricular_member | group_scola_student_activity_teacher | 1 | 1 | 1 | 0 |
| access_scola_extracurricular_member_student | model_scola_extracurricular_member | scola_core.group_scola_student | 1 | 0 | 1 | 0 |
| access_scola_extracurricular_attendance_manager | model_scola_extracurricular_attendance | group_scola_student_activity_manager | 1 | 1 | 1 | 1 |
| access_scola_extracurricular_attendance_teacher | model_scola_extracurricular_attendance | group_scola_student_activity_teacher | 1 | 1 | 1 | 0 |
| access_scola_extracurricular_attendance_line_manager | model_scola_extracurricular_attendance_line | group_scola_student_activity_manager | 1 | 1 | 1 | 1 |
| access_scola_extracurricular_attendance_line_teacher | model_scola_extracurricular_attendance_line | group_scola_student_activity_teacher | 1 | 1 | 1 | 0 |
| access_scola_student_permit_manager | model_scola_student_permit | group_scola_student_activity_manager | 1 | 1 | 1 | 1 |
| access_scola_student_permit_teacher | model_scola_student_permit | group_scola_student_activity_teacher | 1 | 1 | 1 | 0 |
| access_scola_student_permit_student | model_scola_student_permit | scola_core.group_scola_student | 1 | 0 | 1 | 0 |
| access_scola_student_permit_parent | model_scola_student_permit | scola_parent.group_scola_parent | 1 | 0 | 1 | 0 |
| access_scola_student_permit_type_manager | model_scola_student_permit_type | group_scola_student_activity_manager | 1 | 1 | 1 | 1 |
| access_scola_student_permit_type_teacher | model_scola_student_permit_type | group_scola_student_activity_teacher | 1 | 0 | 0 | 0 |
| access_scola_student_permit_type_student | model_scola_student_permit_type | scola_core.group_scola_student | 1 | 0 | 0 | 0 |
Record Rules¶
| Name | Model | Domain | Groups |
|---|---|---|---|
| Student: See Own Violations Only | model_scola_violation_log | [('student_id.user_id', '=', user.id)] | [(4, ref('scola_core.group_scola_student'))] |
| Student: See Own Achievements Only | model_scola_achievement | [('student_id.user_id', '=', user.id)] | [(4, ref('scola_core.group_scola_student'))] |
Data Files¶
| File | Purpose |
|---|---|
| security/scola_student_activity_groups.xml | Security |
| security/ir.model.access.csv | Security |
| security/ir_rule.xml | Security |
| data/sequence_data.xml | Data |
| views/violation_category_views.xml | Views |
| views/violation_type_views.xml | Views |
| views/violation_log_views.xml | Views |
| views/achievement_level_views.xml | Views |
| views/achievement_views.xml | Views |
| views/extracurricular_views.xml | Views |
| views/student_permit_views.xml | Views |
| views/student_views.xml | Views |
| views/menu_views.xml | Views |
Menus¶
| Menu ID | Parent | Action |
|---|---|---|
| menu_scola_student_activity_root | - | - |
| menu_scola_violations | menu_scola_student_activity_root | - |
| menu_scola_violation_logs | menu_scola_violations | action_scola_violation_log |
| menu_scola_violation_categories | menu_scola_violations | action_scola_violation_category |
| menu_scola_violation_types | menu_scola_violations | action_scola_violation_type |
| menu_scola_achievements | menu_scola_student_activity_root | - |
| menu_scola_achievement_list | menu_scola_achievements | action_scola_achievement |
| menu_scola_achievement_levels | menu_scola_achievements | action_scola_achievement_level |
| menu_scola_extracurricular | menu_scola_student_activity_root | - |
| menu_scola_extracurricular_list | menu_scola_extracurricular | action_scola_extracurricular |
| menu_scola_extracurricular_members | menu_scola_extracurricular | action_scola_extracurricular_member |
| menu_scola_student_permit | menu_scola_student_activity_root | - |
| menu_scola_student_permit_list | menu_scola_student_permit | action_scola_student_permit |
| menu_scola_student_permit_types | menu_scola_student_permit | action_scola_student_permit_type |
Dependencies¶
| Module | Reason |
|---|---|
| base | Manifest dependency |
| Manifest dependency | |
| scola_core | Manifest dependency |
Module: scola_timetable¶
Models¶
| Model | Type | Inherits | Description |
|---|---|---|---|
| op.session | Extension | op.session | Extension for op.session |
Controllers¶
No controllers detected.
Security¶
ir.model.access.csv¶
No access rules found.
Record Rules¶
No record rules found.
Data Files¶
| File | Purpose |
|---|---|
| views/session_view.xml | Views |
Menus¶
No menus detected.
Dependencies¶
| Module | Reason |
|---|---|
| openeducat_timetable | Manifest dependency |
| scola_lesson_hours | Manifest dependency |