Skip to content

About

Escodoo Odoo Slides

Resources

Stars

0 stars

Watchers

0 watching

Forks

Latest commit

 

History

21 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Escodoo Odoo e-learning

Pre-commit Status Build Status codecov

Escodoo Odoo e-Learning

Available addons

addon version maintainers summary
e-learning-boardkit 16.0.1.0.0 parzewski Complete eLearning course on the boardkit (Escodoo Odoo) with 12 chapters, rich HTML content, a final quiz, native certification via survey and an Escodoo Portrait A4 PDF certificate with a public-validation QR code (infrastructure provided by escodoo_elearning_certification).
e-learning-planservice-boas-vindas 16.0.1.0.0 parzewski Welcome course for all Planservice users on Odoo 18: messaging (Messages, per-project internal channels, direct messages), calendar and activities, contacts and, most notably, the Hour Sheet from the perspective of the person logging time on tasks (% of the day, project → task automation, 100% of the day limit, desktop and mobile/tablet usage). Same visual pattern as e-learning-planservice-planejador, with native certification (survey) and an Escodoo PDF certificate with a validation QR code — infrastructure provided by escodoo_elearning_certification.
e-learning-planservice-planejador 16.0.1.0.0 parzewski Complete eLearning course on the Planservice Planner (planservice_project_task_hour_plan) (Escodoo Odoo 18) with 8 chapters, rich HTML content, a study guide, final quiz (200 XP) and native certification via survey and an Escodoo Portrait A4 PDF certificate with a public-validation QR code — infrastructure provided by escodoo_elearning_certification.
escodoo_elearning_certification 16.0.1.0.0 parzewski Reusable certification base for the Escodoo eLearning courses: Escodoo PDF certificate (A4 Portrait) with QR code, public validation pages and the certificate validation route. The certificate layout is course-agnostic — the syllabus is derived from the chapters of the channel itself.

Licenses

This repository is licensed under AGPL-3.0.

However, each module can have a totally different license, as long as they adhere to Escodoo policy. Consult each module's __manifest__.py file, which contains a license key that explains its license.



Repository documentation

Courses for Odoo 16 eLearning, published as slide.channel (website_slides), with native certification (survey) and an Escodoo PDF certificate.

Architecture

escodoo_elearning_certification        # shared base (Escodoo certificate, ALWAYS)
├── e-learning-boardkit                 # GLOBAL course
├── e-learning-planservice-boas-vindas  # CLIENT course (Planservice)
└── e-learning-planservice-planejador   # CLIENT course (Planservice)
  • Every course depends on escodoo_elearning_certification.
  • The escodoo-elearning repository is single-version: Odoo 16.0.

Naming convention

Scope Pattern Example
Shared base escodoo_elearning_certification —
Global course e-learning-<course> e-learning-boardkit
Client course e-learning-<client>-<course> e-learning-planservice-boas-vindas

New modules must follow the same skeleton (base + course) with full packaging (OCA readme, static/description, tests).

Global scope (intentional)

escodoo_elearning_certification overrides native certification templates and is global to the database, by design (the Escodoo certificate is always Escodoo):

  • The certificate layout (survey.certification_report_view_modern and _classic) is replaced, so every certification using a modern_* / classic_* layout prints the Escodoo certificate.
  • The certificate report paper format is switched to Escodoo Certification (A4 Portrait).
  • A quiz header badge is injected in every quiz (lesson_content_quiz).
  • One shared slide.tag — "eLearning Escodoo" — and the public routes /certificacao/validar/<token> (+ ES alias, + /qr/<token>) are global.

Course modules themselves only create records (channel, lessons, questions, answers, certification survey); they do not alter other areas of Odoo.

Plan B (future): per-client certificate

If a client ever needs its own certificate instead of the Escodoo one, make the overrides conditional on the channel: apply the Escodoo layout only when the survey belongs to a slide.channel of the Escodoo family; otherwise keep the native layout. Watch out: the survey dispatch is by layout_values[0] (modern/classic), ignoring the color (survey/views/survey_report_templates.xml), so a per-client certificate needs its own mechanism (template by channel or a field on the channel). Not implemented yet.

Access control

Restrict a course to specific portal users

Membership is the gate; a dedicated group drives auto-enrollment (native website_slides behaviour):

  1. Create the group, e.g. "Colaboradores Planservice".
  2. On the channel set Visibility = Members Only, Enroll = On Invitation, and Auto Enroll Groups = Colaboradores Planservice.
  3. Invite the collaborator (Contacts → Action → Grant portal access) and add them to the group. The core then adds them as a channel member automatically.
  4. Non-members (portal) do not see the course; with On Invitation they may request access, which the course responsible approves.

Hide the courses from internal Escodoo users (manual runbook)

Native website_slides adds eLearning / Manager to base.default_user, so every new internal user can see all channels. Portal users are not affected. To keep the Planservice courses hidden from internal users, the Escodoo admin must (manually, in Settings → Users → Groups):

  1. Remove eLearning / Manager and eLearning / Officer from base.default_user (the user template), so new internal users do not inherit them.
  2. Remove the same two groups from the existing internal users, except admin and the designated eLearning admins.
  3. Validate: a regular internal user no longer sees the eLearning app nor the Planservice channels; a portal member still sees the course.

Notes:

  • eLearning / Officer implies Website / Editor. If an internal user needs to edit the website, grant that group explicitly.
  • A fresh install (or reinstall) of website_slides re-adds Manager to the template — repeat step 1 after such an operation.

Content lifecycle

Modules are permanent: a module must stay installed for its course to exist. Uninstalling a module deletes the course (channel, lessons, survey, questions) through ir.model.data._module_data_uninstall.

Updating content (git is the source of truth)

Only the lesson HTML is re-applied by -u (files without noupdate). Everything under noupdate="1" (channel, quizzes, certification survey, questions, tag, paperformat, certificate template) requires the resync tool:

git pull
odoo -u escodoo_elearning_certification,e-learning-boardkit,e-learning-planservice-boas-vindas,e-learning-planservice-planejador
odoo shell -d <database> < tools/resync_noupdate.py

See tools/README.md. Do not edit course content through the interface if git is the source of truth.

Deploy (doodba)

Add this repository to repos.yaml and register the four modules (base first) in addons.yaml. Example:

# repos.yaml
escodoo-elearning:
  defaults:
    depth: $DEPTH_DEFAULT
  remotes:
    origin: https://github.com/Escodoo/escodoo-elearning.git
  target: origin $ODOO_VERSION
  merges:
    - origin $ODOO_VERSION
# addons.yaml
escodoo-elearning:
  - escodoo_elearning_certification
  - e-learning-boardkit
  - e-learning-planservice-boas-vindas
  - e-learning-planservice-planejador

Make sure the courses are not also provided by another repository in the same addons path (no module name may appear twice).

Version migration notes (16 → 17/18)

Version-sensitive pieces, concentrated in escodoo_elearning_certification:

  • views/certificate_template.xml inherits survey.certification_report_view_modern / _classic (and replaces //div[@id='o_survey_certification']).
  • views/slide_channel_views.xml inherits website_slides.lesson_content_quiz via //div[@id='lessonQuiz'].
  • data/paperformat_escodoo.xml writes the ir.actions.report with report_name = 'survey.certification_report_view'.
  • Survey field certification_report_layout values.

Course content (slide/survey data) is largely stable across versions.

Adding a new module

A new course module must be fully packaged or CI fails. Steps:

  1. Create the addon following the repository skeleton (see Architecture above):

    • __manifest__.py with version in the 16.0.x.y.z form, a license from the allowed list (AGPL-3), author containing Escodoo, development_status and maintainers. Do not use the deprecated description/active keys.
    • readme/DESCRIPTION.rst is mandatory: without it the pylint check fails with missing-readme and oca-gen-addon-readme does not generate the README.rst.
    • Every course depends on escodoo_elearning_certification.
  2. Run the pre-commit hooks, which generate the packaging files:

    pre-commit run --all-files

    This creates setup/<module>/ (with its odoo/addons symlink), static/description/index.html, README.rst and updates requirements.txt. setup/ is not git-ignored, so these generated files must be committed.

  3. Commit everything that was generated. The pre-commit CI job fails if any non-ignored file is left untracked.

  4. Refresh the addons table in this README:

    oca-gen-addons-table --no-commit --readme-path README.md --addons-dir .

Naming convention: e-learning-<course> for a global course and e-learning-<client>-<course> for a client course (see Naming convention). Use the branch 16.0-add-<module> and the PR title [16.0][ADD] <module>: <description>.

About

Escodoo Odoo Slides

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages