Initial commit: OCA Technical packages (595 packages)

This commit is contained in:
Ernad Husremovic 2025-08-29 15:43:03 +02:00
commit 2cc02aac6e
24950 changed files with 2318079 additions and 0 deletions

View file

@ -0,0 +1,44 @@
# Maintenance equipment certification
Odoo addon: maintenance_equipment_certification
## Installation
```bash
pip install odoo-bringout-oca-maintenance-maintenance_equipment_certification
```
## Dependencies
This addon depends on:
- maintenance
## Manifest Information
- **Name**: Maintenance equipment certification
- **Version**: 16.0.1.0.0
- **Category**: Human Resources
- **License**: AGPL-3
- **Installable**: False
## Source
Based on [OCA/maintenance](https://github.com/OCA/maintenance) branch 16.0, addon `maintenance_equipment_certification`.
## License
This package maintains the original AGPL-3 license from the upstream Odoo project.
## Documentation
- Overview: doc/OVERVIEW.md
- Architecture: doc/ARCHITECTURE.md
- Models: doc/MODELS.md
- Controllers: doc/CONTROLLERS.md
- Wizards: doc/WIZARDS.md
- Install: doc/INSTALL.md
- Usage: doc/USAGE.md
- Configuration: doc/CONFIGURATION.md
- Dependencies: doc/DEPENDENCIES.md
- Troubleshooting: doc/TROUBLESHOOTING.md
- FAQ: doc/FAQ.md

View file

@ -0,0 +1,32 @@
# Architecture
```mermaid
flowchart TD
U[Users] -->|HTTP| V[Views and QWeb Templates]
V --> C[Controllers]
V --> W[Wizards Transient Models]
C --> M[Models and ORM]
W --> M
M --> R[Reports]
DX[Data XML] --> M
S[Security ACLs and Groups] -. enforces .-> M
subgraph Maintenance_equipment_certification Module - maintenance_equipment_certification
direction LR
M:::layer
W:::layer
C:::layer
V:::layer
R:::layer
S:::layer
DX:::layer
end
classDef layer fill:#eef8ff,stroke:#6ea8fe,stroke-width:1px
```
Notes
- Views include tree/form/kanban templates and report templates.
- Controllers provide website/portal routes when present.
- Wizards are UI flows implemented with `models.TransientModel`.
- Data XML loads data/demo records; Security defines groups and access.

View file

@ -0,0 +1,3 @@
# Configuration
Refer to Odoo settings for maintenance_equipment_certification. Configure related models, access rights, and options as needed.

View file

@ -0,0 +1,3 @@
# Controllers
This module does not define custom HTTP controllers.

View file

@ -0,0 +1,5 @@
# Dependencies
This addon depends on:
- [maintenance](../../odoo-bringout-oca-ocb-maintenance)

View file

@ -0,0 +1,4 @@
# FAQ
- Q: Which Odoo version? A: 16.0 (OCA/OCB packaged).
- Q: How to enable? A: Start server with --addon maintenance_equipment_certification or install in UI.

View file

@ -0,0 +1,7 @@
# Install
```bash
pip install odoo-bringout-oca-maintenance-maintenance_equipment_certification"
# or
uv pip install odoo-bringout-oca-maintenance-maintenance_equipment_certification"
```

View file

@ -0,0 +1,13 @@
# Models
Detected core models and extensions in maintenance_equipment_certification.
```mermaid
classDiagram
class maintenance_equipment_certificate
class maintenance_equipment
```
Notes
- Classes show model technical names; fields omitted for brevity.
- Items listed under _inherit are extensions of existing models.

View file

@ -0,0 +1,6 @@
# Overview
Packaged Odoo addon: maintenance_equipment_certification. Provides features documented in upstream Odoo 16 under this addon.
- Source: OCA/OCB 16.0, addon maintenance_equipment_certification
- License: LGPL-3

View file

@ -0,0 +1,3 @@
# Reports
This module does not define custom reports.

View file

@ -0,0 +1,34 @@
# Security
Access control and security definitions in maintenance_equipment_certification.
## Access Control Lists (ACLs)
Model access permissions defined in:
- **[ir.model.access.csv](../maintenance_equipment_certification/security/ir.model.access.csv)**
- 2 model access rules
## Record Rules
Row-level security rules defined in:
```mermaid
graph TB
subgraph "Security Layers"
A[Users] --> B[Groups]
B --> C[Access Control Lists]
C --> D[Models]
B --> E[Record Rules]
E --> F[Individual Records]
end
```
Security files overview:
- **[ir.model.access.csv](../maintenance_equipment_certification/security/ir.model.access.csv)**
- Model access permissions (CRUD rights)
Notes
- Access Control Lists define which groups can access which models
- Record Rules provide row-level security (filter records by user/group)
- Security groups organize users and define permission sets
- All security is enforced at the ORM level by Odoo

View file

@ -0,0 +1,5 @@
# Troubleshooting
- Ensure Python and Odoo environment matches repo guidance.
- Check database connectivity and logs if startup fails.
- Validate that dependent addons listed in DEPENDENCIES.md are installed.

View file

@ -0,0 +1,7 @@
# Usage
Start Odoo including this addon (from repo root):
```bash
python3 scripts/nix_odoo_web_server.py --db-name mydb --addon maintenance_equipment_certification
```

View file

@ -0,0 +1,3 @@
# Wizards
This module does not include UI wizards.

View file

@ -0,0 +1,94 @@
===================================
Maintenance equipment certification
===================================
..
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!! This file is generated by oca-gen-addon-readme !!
!! changes will be overwritten. !!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!! source digest: sha256:73d6dedecc9753187ee8d4627069ea90fe0ec5baf550af7b0d0208b7134ce46b
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
.. |badge1| image:: https://img.shields.io/badge/maturity-Beta-yellow.png
:target: https://odoo-community.org/page/development-status
:alt: Beta
.. |badge2| image:: https://img.shields.io/badge/licence-AGPL--3-blue.png
:target: http://www.gnu.org/licenses/agpl-3.0-standalone.html
:alt: License: AGPL-3
.. |badge3| image:: https://img.shields.io/badge/github-OCA%2Fmaintenance-lightgray.png?logo=github
:target: https://github.com/OCA/maintenance/tree/16.0/maintenance_equipment_certification
:alt: OCA/maintenance
.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png
:target: https://translation.odoo-community.org/projects/maintenance-16-0/maintenance-16-0-maintenance_equipment_certification
:alt: Translate me on Weblate
.. |badge5| image:: https://img.shields.io/badge/runboat-Try%20me-875A7B.png
:target: https://runboat.odoo-community.org/builds?repo=OCA/maintenance&target_branch=16.0
:alt: Try me on Runboat
|badge1| |badge2| |badge3| |badge4| |badge5|
Allows you to store a record of the certifications associated with a piece of
equipment.
**Table of contents**
.. contents::
:local:
Usage
=====
* Got to **Maintenance > Equipment** menu.
* Open any equipment.
* You will see a Certification tab.
Bug Tracker
===========
Bugs are tracked on `GitHub Issues <https://github.com/OCA/maintenance/issues>`_.
In case of trouble, please check there if your issue has already been reported.
If you spotted it first, help us to smash it by providing a detailed and welcomed
`feedback <https://github.com/OCA/maintenance/issues/new?body=module:%20maintenance_equipment_certification%0Aversion:%2016.0%0A%0A**Steps%20to%20reproduce**%0A-%20...%0A%0A**Current%20behavior**%0A%0A**Expected%20behavior**>`_.
Do not contact contributors directly about support or help with technical issues.
Credits
=======
Authors
~~~~~~~
* Trey (www.trey.es)
Contributors
~~~~~~~~~~~~
* `Trey <https://www.trey.es>`_:
* Vicent Cubells <vicent@trey.es>
Maintainers
~~~~~~~~~~~
This module is maintained by the OCA.
.. image:: https://odoo-community.org/logo.png
:alt: Odoo Community Association
:target: https://odoo-community.org
OCA, or the Odoo Community Association, is a nonprofit organization whose
mission is to support the collaborative development of Odoo features and
promote its widespread use.
.. |maintainer-cubells| image:: https://github.com/cubells.png?size=40px
:target: https://github.com/cubells
:alt: cubells
Current `maintainer <https://odoo-community.org/page/maintainer-role>`__:
|maintainer-cubells|
This module is part of the `OCA/maintenance <https://github.com/OCA/maintenance/tree/16.0/maintenance_equipment_certification>`_ project on GitHub.
You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute.

View file

@ -0,0 +1,19 @@
# Copyright 2025 Trey, Kilobytes de Soluciones - Vicent Cubells
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
{
"name": "Maintenance equipment certification",
"summary": "Add to store certifications associated with a equipment.",
"category": "Human Resources",
"version": "16.0.1.0.0",
"author": "Trey (www.trey.es), Odoo Community Association (OCA)",
"website": "https://github.com/OCA/maintenance",
"maintainers": ["cubells"],
"license": "AGPL-3",
"depends": [
"maintenance",
],
"data": [
"security/ir.model.access.csv",
"views/maintenance_equipment_views.xml",
],
}

View file

@ -0,0 +1,99 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * maintenance_equipment_certification
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 16.0\n"
"Report-Msgid-Bugs-To: \n"
"Last-Translator: \n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: \n"
#. module: maintenance_equipment_certification
#: model:ir.model.fields,field_description:maintenance_equipment_certification.field_maintenance_equipment_certificate__certificate_file
msgid "Certificate"
msgstr "Certificate"
#. module: maintenance_equipment_certification
#: model:ir.model.fields,field_description:maintenance_equipment_certification.field_maintenance_equipment_certificate__certificate_filename
msgid "Certificate file name"
msgstr "Certificate file name"
#. module: maintenance_equipment_certification
#: model:ir.model.fields,field_description:maintenance_equipment_certification.field_maintenance_equipment__certificate_ids
msgid "Certificates"
msgstr "Certificates"
#. module: maintenance_equipment_certification
#: model_terms:ir.ui.view,arch_db:maintenance_equipment_certification.hr_equipment_view_form
msgid "Certifications"
msgstr "Certifikacije"
#. module: maintenance_equipment_certification
#: model:ir.model.fields,field_description:maintenance_equipment_certification.field_maintenance_equipment_certificate__create_uid
msgid "Created by"
msgstr "Kreirao"
#. module: maintenance_equipment_certification
#: model:ir.model.fields,field_description:maintenance_equipment_certification.field_maintenance_equipment_certificate__create_date
msgid "Created on"
msgstr "Kreirano"
#. module: maintenance_equipment_certification
#: model:ir.model.fields,field_description:maintenance_equipment_certification.field_maintenance_equipment_certificate__date
msgid "Date"
msgstr "Datum"
#. module: maintenance_equipment_certification
#: model:ir.model.fields,field_description:maintenance_equipment_certification.field_maintenance_equipment_certificate__display_name
msgid "Display Name"
msgstr "Prikazani naziv"
#. module: maintenance_equipment_certification
#: model:ir.model.fields,field_description:maintenance_equipment_certification.field_maintenance_equipment_certificate__equipment_id
msgid "Equipment"
msgstr "Oprema"
#. module: maintenance_equipment_certification
#: model:ir.model.fields,field_description:maintenance_equipment_certification.field_maintenance_equipment_certificate__id
msgid "ID"
msgstr "ID"
#. module: maintenance_equipment_certification
#: model:ir.model.fields,field_description:maintenance_equipment_certification.field_maintenance_equipment_certificate____last_update
msgid "Last Modified on"
msgstr "Zadnje mijenjano"
#. module: maintenance_equipment_certification
#: model:ir.model.fields,field_description:maintenance_equipment_certification.field_maintenance_equipment_certificate__write_uid
msgid "Last Updated by"
msgstr "Zadnji ažurirao"
#. module: maintenance_equipment_certification
#: model:ir.model.fields,field_description:maintenance_equipment_certification.field_maintenance_equipment_certificate__write_date
msgid "Last Updated on"
msgstr "Zadnje ažurirano"
#. module: maintenance_equipment_certification
#: model:ir.model,name:maintenance_equipment_certification.model_maintenance_equipment
msgid "Maintenance Equipment"
msgstr "Oprema za održavanje"
#. module: maintenance_equipment_certification
#: model:ir.model,name:maintenance_equipment_certification.model_maintenance_equipment_certificate
msgid "Maintenance equipment certificate"
msgstr "Maintenance equipment certificate"
#. module: maintenance_equipment_certification
#: model:ir.model.fields,field_description:maintenance_equipment_certification.field_maintenance_equipment_certificate__name
msgid "Name"
msgstr "Naziv:"
#. module: maintenance_equipment_certification
#: model:ir.model.fields,field_description:maintenance_equipment_certification.field_maintenance_equipment_certificate__notes
msgid "Notes"
msgstr "Zabilješke"

View file

@ -0,0 +1,103 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * maintenance_equipment_certification
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 16.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-05-20 15:45+0000\n"
"PO-Revision-Date: 2025-05-20 17:48+0200\n"
"Last-Translator: \n"
"Language-Team: \n"
"Language: es\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Generator: Poedit 3.6\n"
#. module: maintenance_equipment_certification
#: model:ir.model.fields,field_description:maintenance_equipment_certification.field_maintenance_equipment_certificate__certificate_file
msgid "Certificate"
msgstr "Certificado"
#. module: maintenance_equipment_certification
#: model:ir.model.fields,field_description:maintenance_equipment_certification.field_maintenance_equipment_certificate__certificate_filename
msgid "Certificate file name"
msgstr "Nombre del fichero del certificado"
#. module: maintenance_equipment_certification
#: model:ir.model.fields,field_description:maintenance_equipment_certification.field_maintenance_equipment__certificate_ids
msgid "Certificates"
msgstr "Certificados"
#. module: maintenance_equipment_certification
#: model_terms:ir.ui.view,arch_db:maintenance_equipment_certification.hr_equipment_view_form
msgid "Certifications"
msgstr "Certificaciones"
#. module: maintenance_equipment_certification
#: model:ir.model.fields,field_description:maintenance_equipment_certification.field_maintenance_equipment_certificate__create_uid
msgid "Created by"
msgstr "Creado por"
#. module: maintenance_equipment_certification
#: model:ir.model.fields,field_description:maintenance_equipment_certification.field_maintenance_equipment_certificate__create_date
msgid "Created on"
msgstr "Creado el"
#. module: maintenance_equipment_certification
#: model:ir.model.fields,field_description:maintenance_equipment_certification.field_maintenance_equipment_certificate__date
msgid "Date"
msgstr "Fecha"
#. module: maintenance_equipment_certification
#: model:ir.model.fields,field_description:maintenance_equipment_certification.field_maintenance_equipment_certificate__display_name
msgid "Display Name"
msgstr "Nombre a mostrar"
#. module: maintenance_equipment_certification
#: model:ir.model.fields,field_description:maintenance_equipment_certification.field_maintenance_equipment_certificate__equipment_id
msgid "Equipment"
msgstr "Equipo"
#. module: maintenance_equipment_certification
#: model:ir.model.fields,field_description:maintenance_equipment_certification.field_maintenance_equipment_certificate__id
msgid "ID"
msgstr "Identificador"
#. module: maintenance_equipment_certification
#: model:ir.model.fields,field_description:maintenance_equipment_certification.field_maintenance_equipment_certificate____last_update
msgid "Last Modified on"
msgstr "Última modificación el"
#. module: maintenance_equipment_certification
#: model:ir.model.fields,field_description:maintenance_equipment_certification.field_maintenance_equipment_certificate__write_uid
msgid "Last Updated by"
msgstr "Última modificación por"
#. module: maintenance_equipment_certification
#: model:ir.model.fields,field_description:maintenance_equipment_certification.field_maintenance_equipment_certificate__write_date
msgid "Last Updated on"
msgstr "Última actualización el"
#. module: maintenance_equipment_certification
#: model:ir.model,name:maintenance_equipment_certification.model_maintenance_equipment
msgid "Maintenance Equipment"
msgstr "Equipo de mantenimiento"
#. module: maintenance_equipment_certification
#: model:ir.model,name:maintenance_equipment_certification.model_maintenance_equipment_certificate
msgid "Maintenance equipment certificate"
msgstr "Certificado del equipo de mantenimiento"
#. module: maintenance_equipment_certification
#: model:ir.model.fields,field_description:maintenance_equipment_certification.field_maintenance_equipment_certificate__name
msgid "Name"
msgstr "Nombre"
#. module: maintenance_equipment_certification
#: model:ir.model.fields,field_description:maintenance_equipment_certification.field_maintenance_equipment_certificate__notes
msgid "Notes"
msgstr "Notas"

View file

@ -0,0 +1,102 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * maintenance_equipment_certification
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 16.0\n"
"Report-Msgid-Bugs-To: \n"
"PO-Revision-Date: 2025-06-04 10:26+0000\n"
"Last-Translator: mymage <stefano.consolaro@mymage.it>\n"
"Language-Team: none\n"
"Language: it\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
"X-Generator: Weblate 5.10.4\n"
#. module: maintenance_equipment_certification
#: model:ir.model.fields,field_description:maintenance_equipment_certification.field_maintenance_equipment_certificate__certificate_file
msgid "Certificate"
msgstr "Certificato"
#. module: maintenance_equipment_certification
#: model:ir.model.fields,field_description:maintenance_equipment_certification.field_maintenance_equipment_certificate__certificate_filename
msgid "Certificate file name"
msgstr "Nome file certificato"
#. module: maintenance_equipment_certification
#: model:ir.model.fields,field_description:maintenance_equipment_certification.field_maintenance_equipment__certificate_ids
msgid "Certificates"
msgstr "Certificati"
#. module: maintenance_equipment_certification
#: model_terms:ir.ui.view,arch_db:maintenance_equipment_certification.hr_equipment_view_form
msgid "Certifications"
msgstr "Certificati"
#. module: maintenance_equipment_certification
#: model:ir.model.fields,field_description:maintenance_equipment_certification.field_maintenance_equipment_certificate__create_uid
msgid "Created by"
msgstr "Creato da"
#. module: maintenance_equipment_certification
#: model:ir.model.fields,field_description:maintenance_equipment_certification.field_maintenance_equipment_certificate__create_date
msgid "Created on"
msgstr "Creato il"
#. module: maintenance_equipment_certification
#: model:ir.model.fields,field_description:maintenance_equipment_certification.field_maintenance_equipment_certificate__date
msgid "Date"
msgstr "Data"
#. module: maintenance_equipment_certification
#: model:ir.model.fields,field_description:maintenance_equipment_certification.field_maintenance_equipment_certificate__display_name
msgid "Display Name"
msgstr "Nome visualizzato"
#. module: maintenance_equipment_certification
#: model:ir.model.fields,field_description:maintenance_equipment_certification.field_maintenance_equipment_certificate__equipment_id
msgid "Equipment"
msgstr "Attrezzatura"
#. module: maintenance_equipment_certification
#: model:ir.model.fields,field_description:maintenance_equipment_certification.field_maintenance_equipment_certificate__id
msgid "ID"
msgstr "ID"
#. module: maintenance_equipment_certification
#: model:ir.model.fields,field_description:maintenance_equipment_certification.field_maintenance_equipment_certificate____last_update
msgid "Last Modified on"
msgstr "Ultima modifica il"
#. module: maintenance_equipment_certification
#: model:ir.model.fields,field_description:maintenance_equipment_certification.field_maintenance_equipment_certificate__write_uid
msgid "Last Updated by"
msgstr "Ultimo aggiornamento di"
#. module: maintenance_equipment_certification
#: model:ir.model.fields,field_description:maintenance_equipment_certification.field_maintenance_equipment_certificate__write_date
msgid "Last Updated on"
msgstr "Ultimo aggiornamento il"
#. module: maintenance_equipment_certification
#: model:ir.model,name:maintenance_equipment_certification.model_maintenance_equipment
msgid "Maintenance Equipment"
msgstr "Attrezzatura manutenzione"
#. module: maintenance_equipment_certification
#: model:ir.model,name:maintenance_equipment_certification.model_maintenance_equipment_certificate
msgid "Maintenance equipment certificate"
msgstr "Certificato attrezzatura manutenzione"
#. module: maintenance_equipment_certification
#: model:ir.model.fields,field_description:maintenance_equipment_certification.field_maintenance_equipment_certificate__name
msgid "Name"
msgstr "Nome"
#. module: maintenance_equipment_certification
#: model:ir.model.fields,field_description:maintenance_equipment_certification.field_maintenance_equipment_certificate__notes
msgid "Notes"
msgstr "Note"

View file

@ -0,0 +1,99 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * maintenance_equipment_certification
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 16.0\n"
"Report-Msgid-Bugs-To: \n"
"Last-Translator: \n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: \n"
#. module: maintenance_equipment_certification
#: model:ir.model.fields,field_description:maintenance_equipment_certification.field_maintenance_equipment_certificate__certificate_file
msgid "Certificate"
msgstr ""
#. module: maintenance_equipment_certification
#: model:ir.model.fields,field_description:maintenance_equipment_certification.field_maintenance_equipment_certificate__certificate_filename
msgid "Certificate file name"
msgstr ""
#. module: maintenance_equipment_certification
#: model:ir.model.fields,field_description:maintenance_equipment_certification.field_maintenance_equipment__certificate_ids
msgid "Certificates"
msgstr ""
#. module: maintenance_equipment_certification
#: model_terms:ir.ui.view,arch_db:maintenance_equipment_certification.hr_equipment_view_form
msgid "Certifications"
msgstr ""
#. module: maintenance_equipment_certification
#: model:ir.model.fields,field_description:maintenance_equipment_certification.field_maintenance_equipment_certificate__create_uid
msgid "Created by"
msgstr ""
#. module: maintenance_equipment_certification
#: model:ir.model.fields,field_description:maintenance_equipment_certification.field_maintenance_equipment_certificate__create_date
msgid "Created on"
msgstr ""
#. module: maintenance_equipment_certification
#: model:ir.model.fields,field_description:maintenance_equipment_certification.field_maintenance_equipment_certificate__date
msgid "Date"
msgstr ""
#. module: maintenance_equipment_certification
#: model:ir.model.fields,field_description:maintenance_equipment_certification.field_maintenance_equipment_certificate__display_name
msgid "Display Name"
msgstr ""
#. module: maintenance_equipment_certification
#: model:ir.model.fields,field_description:maintenance_equipment_certification.field_maintenance_equipment_certificate__equipment_id
msgid "Equipment"
msgstr ""
#. module: maintenance_equipment_certification
#: model:ir.model.fields,field_description:maintenance_equipment_certification.field_maintenance_equipment_certificate__id
msgid "ID"
msgstr ""
#. module: maintenance_equipment_certification
#: model:ir.model.fields,field_description:maintenance_equipment_certification.field_maintenance_equipment_certificate____last_update
msgid "Last Modified on"
msgstr ""
#. module: maintenance_equipment_certification
#: model:ir.model.fields,field_description:maintenance_equipment_certification.field_maintenance_equipment_certificate__write_uid
msgid "Last Updated by"
msgstr ""
#. module: maintenance_equipment_certification
#: model:ir.model.fields,field_description:maintenance_equipment_certification.field_maintenance_equipment_certificate__write_date
msgid "Last Updated on"
msgstr ""
#. module: maintenance_equipment_certification
#: model:ir.model,name:maintenance_equipment_certification.model_maintenance_equipment
msgid "Maintenance Equipment"
msgstr ""
#. module: maintenance_equipment_certification
#: model:ir.model,name:maintenance_equipment_certification.model_maintenance_equipment_certificate
msgid "Maintenance equipment certificate"
msgstr ""
#. module: maintenance_equipment_certification
#: model:ir.model.fields,field_description:maintenance_equipment_certification.field_maintenance_equipment_certificate__name
msgid "Name"
msgstr ""
#. module: maintenance_equipment_certification
#: model:ir.model.fields,field_description:maintenance_equipment_certification.field_maintenance_equipment_certificate__notes
msgid "Notes"
msgstr ""

View file

@ -0,0 +1,2 @@
from . import maintenance_equipment
from . import maintenance_equipment_certificate

View file

@ -0,0 +1,13 @@
# Copyright 2025 Trey, Kilobytes de Soluciones - Vicent Cubells
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
from odoo import fields, models
class MaintenanceEquipment(models.Model):
_inherit = "maintenance.equipment"
certificate_ids = fields.One2many(
comodel_name="maintenance.equipment.certificate",
inverse_name="equipment_id",
string="Certificates",
)

View file

@ -0,0 +1,22 @@
# Copyright 2025 Trey, Kilobytes de Soluciones - Vicent Cubells
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
from odoo import fields, models
class MaintenanceEquipmentCertificate(models.Model):
_name = "maintenance.equipment.certificate"
_description = "Maintenance equipment certificate"
name = fields.Char()
notes = fields.Text()
date = fields.Date()
certificate_file = fields.Binary(
string="Certificate",
attachment=True,
)
certificate_filename = fields.Char(
string="Certificate file name",
)
equipment_id = fields.Many2one(
comodel_name="maintenance.equipment",
)

View file

@ -0,0 +1,3 @@
* `Trey <https://www.trey.es>`_:
* Vicent Cubells <vicent@trey.es>

View file

@ -0,0 +1,2 @@
Allows you to store a record of the certifications associated with a piece of
equipment.

View file

@ -0,0 +1,3 @@
* Got to **Maintenance > Equipment** menu.
* Open any equipment.
* You will see a Certification tab.

View file

@ -0,0 +1,3 @@
id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
access_equipment_certification_user,Certification user,model_maintenance_equipment_certificate,base.group_user,1,0,0,0
access_equipment_certification_admin,Certification admin,model_maintenance_equipment_certificate,maintenance.group_equipment_manager,1,1,1,1
1 id name model_id:id group_id:id perm_read perm_write perm_create perm_unlink
2 access_equipment_certification_user Certification user model_maintenance_equipment_certificate base.group_user 1 0 0 0
3 access_equipment_certification_admin Certification admin model_maintenance_equipment_certificate maintenance.group_equipment_manager 1 1 1 1

View file

@ -0,0 +1,438 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="generator" content="Docutils: https://docutils.sourceforge.io/" />
<title>Maintenance equipment certification</title>
<style type="text/css">
/*
:Author: David Goodger (goodger@python.org)
:Id: $Id: html4css1.css 9511 2024-01-13 09:50:07Z milde $
:Copyright: This stylesheet has been placed in the public domain.
Default cascading style sheet for the HTML output of Docutils.
Despite the name, some widely supported CSS2 features are used.
See https://docutils.sourceforge.io/docs/howto/html-stylesheets.html for how to
customize this style sheet.
*/
/* used to remove borders from tables and images */
.borderless, table.borderless td, table.borderless th {
border: 0 }
table.borderless td, table.borderless th {
/* Override padding for "table.docutils td" with "! important".
The right padding separates the table cells. */
padding: 0 0.5em 0 0 ! important }
.first {
/* Override more specific margin styles with "! important". */
margin-top: 0 ! important }
.last, .with-subtitle {
margin-bottom: 0 ! important }
.hidden {
display: none }
.subscript {
vertical-align: sub;
font-size: smaller }
.superscript {
vertical-align: super;
font-size: smaller }
a.toc-backref {
text-decoration: none ;
color: black }
blockquote.epigraph {
margin: 2em 5em ; }
dl.docutils dd {
margin-bottom: 0.5em }
object[type="image/svg+xml"], object[type="application/x-shockwave-flash"] {
overflow: hidden;
}
/* Uncomment (and remove this text!) to get bold-faced definition list terms
dl.docutils dt {
font-weight: bold }
*/
div.abstract {
margin: 2em 5em }
div.abstract p.topic-title {
font-weight: bold ;
text-align: center }
div.admonition, div.attention, div.caution, div.danger, div.error,
div.hint, div.important, div.note, div.tip, div.warning {
margin: 2em ;
border: medium outset ;
padding: 1em }
div.admonition p.admonition-title, div.hint p.admonition-title,
div.important p.admonition-title, div.note p.admonition-title,
div.tip p.admonition-title {
font-weight: bold ;
font-family: sans-serif }
div.attention p.admonition-title, div.caution p.admonition-title,
div.danger p.admonition-title, div.error p.admonition-title,
div.warning p.admonition-title, .code .error {
color: red ;
font-weight: bold ;
font-family: sans-serif }
/* Uncomment (and remove this text!) to get reduced vertical space in
compound paragraphs.
div.compound .compound-first, div.compound .compound-middle {
margin-bottom: 0.5em }
div.compound .compound-last, div.compound .compound-middle {
margin-top: 0.5em }
*/
div.dedication {
margin: 2em 5em ;
text-align: center ;
font-style: italic }
div.dedication p.topic-title {
font-weight: bold ;
font-style: normal }
div.figure {
margin-left: 2em ;
margin-right: 2em }
div.footer, div.header {
clear: both;
font-size: smaller }
div.line-block {
display: block ;
margin-top: 1em ;
margin-bottom: 1em }
div.line-block div.line-block {
margin-top: 0 ;
margin-bottom: 0 ;
margin-left: 1.5em }
div.sidebar {
margin: 0 0 0.5em 1em ;
border: medium outset ;
padding: 1em ;
background-color: #ffffee ;
width: 40% ;
float: right ;
clear: right }
div.sidebar p.rubric {
font-family: sans-serif ;
font-size: medium }
div.system-messages {
margin: 5em }
div.system-messages h1 {
color: red }
div.system-message {
border: medium outset ;
padding: 1em }
div.system-message p.system-message-title {
color: red ;
font-weight: bold }
div.topic {
margin: 2em }
h1.section-subtitle, h2.section-subtitle, h3.section-subtitle,
h4.section-subtitle, h5.section-subtitle, h6.section-subtitle {
margin-top: 0.4em }
h1.title {
text-align: center }
h2.subtitle {
text-align: center }
hr.docutils {
width: 75% }
img.align-left, .figure.align-left, object.align-left, table.align-left {
clear: left ;
float: left ;
margin-right: 1em }
img.align-right, .figure.align-right, object.align-right, table.align-right {
clear: right ;
float: right ;
margin-left: 1em }
img.align-center, .figure.align-center, object.align-center {
display: block;
margin-left: auto;
margin-right: auto;
}
table.align-center {
margin-left: auto;
margin-right: auto;
}
.align-left {
text-align: left }
.align-center {
clear: both ;
text-align: center }
.align-right {
text-align: right }
/* reset inner alignment in figures */
div.align-right {
text-align: inherit }
/* div.align-center * { */
/* text-align: left } */
.align-top {
vertical-align: top }
.align-middle {
vertical-align: middle }
.align-bottom {
vertical-align: bottom }
ol.simple, ul.simple {
margin-bottom: 1em }
ol.arabic {
list-style: decimal }
ol.loweralpha {
list-style: lower-alpha }
ol.upperalpha {
list-style: upper-alpha }
ol.lowerroman {
list-style: lower-roman }
ol.upperroman {
list-style: upper-roman }
p.attribution {
text-align: right ;
margin-left: 50% }
p.caption {
font-style: italic }
p.credits {
font-style: italic ;
font-size: smaller }
p.label {
white-space: nowrap }
p.rubric {
font-weight: bold ;
font-size: larger ;
color: maroon ;
text-align: center }
p.sidebar-title {
font-family: sans-serif ;
font-weight: bold ;
font-size: larger }
p.sidebar-subtitle {
font-family: sans-serif ;
font-weight: bold }
p.topic-title {
font-weight: bold }
pre.address {
margin-bottom: 0 ;
margin-top: 0 ;
font: inherit }
pre.literal-block, pre.doctest-block, pre.math, pre.code {
margin-left: 2em ;
margin-right: 2em }
pre.code .ln { color: gray; } /* line numbers */
pre.code, code { background-color: #eeeeee }
pre.code .comment, code .comment { color: #5C6576 }
pre.code .keyword, code .keyword { color: #3B0D06; font-weight: bold }
pre.code .literal.string, code .literal.string { color: #0C5404 }
pre.code .name.builtin, code .name.builtin { color: #352B84 }
pre.code .deleted, code .deleted { background-color: #DEB0A1}
pre.code .inserted, code .inserted { background-color: #A3D289}
span.classifier {
font-family: sans-serif ;
font-style: oblique }
span.classifier-delimiter {
font-family: sans-serif ;
font-weight: bold }
span.interpreted {
font-family: sans-serif }
span.option {
white-space: nowrap }
span.pre {
white-space: pre }
span.problematic, pre.problematic {
color: red }
span.section-subtitle {
/* font-size relative to parent (h1..h6 element) */
font-size: 80% }
table.citation {
border-left: solid 1px gray;
margin-left: 1px }
table.docinfo {
margin: 2em 4em }
table.docutils {
margin-top: 0.5em ;
margin-bottom: 0.5em }
table.footnote {
border-left: solid 1px black;
margin-left: 1px }
table.docutils td, table.docutils th,
table.docinfo td, table.docinfo th {
padding-left: 0.5em ;
padding-right: 0.5em ;
vertical-align: top }
table.docutils th.field-name, table.docinfo th.docinfo-name {
font-weight: bold ;
text-align: left ;
white-space: nowrap ;
padding-left: 0 }
/* "booktabs" style (no vertical lines) */
table.docutils.booktabs {
border: 0px;
border-top: 2px solid;
border-bottom: 2px solid;
border-collapse: collapse;
}
table.docutils.booktabs * {
border: 0px;
}
table.docutils.booktabs th {
border-bottom: thin solid;
text-align: left;
}
h1 tt.docutils, h2 tt.docutils, h3 tt.docutils,
h4 tt.docutils, h5 tt.docutils, h6 tt.docutils {
font-size: 100% }
ul.auto-toc {
list-style-type: none }
</style>
</head>
<body>
<div class="document" id="maintenance-equipment-certification">
<h1 class="title">Maintenance equipment certification</h1>
<!-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!! This file is generated by oca-gen-addon-readme !!
!! changes will be overwritten. !!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!! source digest: sha256:73d6dedecc9753187ee8d4627069ea90fe0ec5baf550af7b0d0208b7134ce46b
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->
<p><a class="reference external image-reference" href="https://odoo-community.org/page/development-status"><img alt="Beta" src="https://img.shields.io/badge/maturity-Beta-yellow.png" /></a> <a class="reference external image-reference" href="http://www.gnu.org/licenses/agpl-3.0-standalone.html"><img alt="License: AGPL-3" src="https://img.shields.io/badge/licence-AGPL--3-blue.png" /></a> <a class="reference external image-reference" href="https://github.com/OCA/maintenance/tree/16.0/maintenance_equipment_certification"><img alt="OCA/maintenance" src="https://img.shields.io/badge/github-OCA%2Fmaintenance-lightgray.png?logo=github" /></a> <a class="reference external image-reference" href="https://translation.odoo-community.org/projects/maintenance-16-0/maintenance-16-0-maintenance_equipment_certification"><img alt="Translate me on Weblate" src="https://img.shields.io/badge/weblate-Translate%20me-F47D42.png" /></a> <a class="reference external image-reference" href="https://runboat.odoo-community.org/builds?repo=OCA/maintenance&amp;target_branch=16.0"><img alt="Try me on Runboat" src="https://img.shields.io/badge/runboat-Try%20me-875A7B.png" /></a></p>
<p>Allows you to store a record of the certifications associated with a piece of
equipment.</p>
<p><strong>Table of contents</strong></p>
<div class="contents local topic" id="contents">
<ul class="simple">
<li><a class="reference internal" href="#usage" id="toc-entry-1">Usage</a></li>
<li><a class="reference internal" href="#bug-tracker" id="toc-entry-2">Bug Tracker</a></li>
<li><a class="reference internal" href="#credits" id="toc-entry-3">Credits</a><ul>
<li><a class="reference internal" href="#authors" id="toc-entry-4">Authors</a></li>
<li><a class="reference internal" href="#contributors" id="toc-entry-5">Contributors</a></li>
<li><a class="reference internal" href="#maintainers" id="toc-entry-6">Maintainers</a></li>
</ul>
</li>
</ul>
</div>
<div class="section" id="usage">
<h1><a class="toc-backref" href="#toc-entry-1">Usage</a></h1>
<ul class="simple">
<li>Got to <strong>Maintenance &gt; Equipment</strong> menu.</li>
<li>Open any equipment.</li>
<li>You will see a Certification tab.</li>
</ul>
</div>
<div class="section" id="bug-tracker">
<h1><a class="toc-backref" href="#toc-entry-2">Bug Tracker</a></h1>
<p>Bugs are tracked on <a class="reference external" href="https://github.com/OCA/maintenance/issues">GitHub Issues</a>.
In case of trouble, please check there if your issue has already been reported.
If you spotted it first, help us to smash it by providing a detailed and welcomed
<a class="reference external" href="https://github.com/OCA/maintenance/issues/new?body=module:%20maintenance_equipment_certification%0Aversion:%2016.0%0A%0A**Steps%20to%20reproduce**%0A-%20...%0A%0A**Current%20behavior**%0A%0A**Expected%20behavior**">feedback</a>.</p>
<p>Do not contact contributors directly about support or help with technical issues.</p>
</div>
<div class="section" id="credits">
<h1><a class="toc-backref" href="#toc-entry-3">Credits</a></h1>
<div class="section" id="authors">
<h2><a class="toc-backref" href="#toc-entry-4">Authors</a></h2>
<ul class="simple">
<li>Trey (www.trey.es)</li>
</ul>
</div>
<div class="section" id="contributors">
<h2><a class="toc-backref" href="#toc-entry-5">Contributors</a></h2>
<ul class="simple">
<li><a class="reference external" href="https://www.trey.es">Trey</a>:<ul>
<li>Vicent Cubells &lt;<a class="reference external" href="mailto:vicent&#64;trey.es">vicent&#64;trey.es</a>&gt;</li>
</ul>
</li>
</ul>
</div>
<div class="section" id="maintainers">
<h2><a class="toc-backref" href="#toc-entry-6">Maintainers</a></h2>
<p>This module is maintained by the OCA.</p>
<a class="reference external image-reference" href="https://odoo-community.org">
<img alt="Odoo Community Association" src="https://odoo-community.org/logo.png" />
</a>
<p>OCA, or the Odoo Community Association, is a nonprofit organization whose
mission is to support the collaborative development of Odoo features and
promote its widespread use.</p>
<p>Current <a class="reference external" href="https://odoo-community.org/page/maintainer-role">maintainer</a>:</p>
<p><a class="reference external image-reference" href="https://github.com/cubells"><img alt="cubells" src="https://github.com/cubells.png?size=40px" /></a></p>
<p>This module is part of the <a class="reference external" href="https://github.com/OCA/maintenance/tree/16.0/maintenance_equipment_certification">OCA/maintenance</a> project on GitHub.</p>
<p>You are welcome to contribute. To learn how please visit <a class="reference external" href="https://odoo-community.org/page/Contribute">https://odoo-community.org/page/Contribute</a>.</p>
</div>
</div>
</div>
</body>
</html>

View file

@ -0,0 +1 @@
from . import test_maintenance_equipment_certification

View file

@ -0,0 +1,41 @@
# Copyright 2025 Trey, Kilobytes de Soluciones - Vicent Cubells
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
from odoo.exceptions import AccessError
from odoo.tests.common import TransactionCase
class TestMaintenanceEquipmentCertification(TransactionCase):
def setUp(self):
super().setUp()
self.equipment = self.env["maintenance.equipment"].create(
{
"name": "Test equipment",
}
)
self.user_demo = self.env["res.users"].create(
{
"name": "Demo User",
"login": "Demo",
"email": "demo@user.com",
"groups_id": [
(6, 0, [self.env.ref("base.group_user").id]),
],
}
)
def test_user_with_no_permission(self):
"""Test user with no permission can not modify equipment."""
with self.assertRaises(AccessError):
self.equipment.with_user(self.user_demo).name = "Test equipment rename"
def test_user_with_permission(self):
"""Test user with permission can modify equipment."""
self.user_demo.write(
{
"groups_id": [
(6, 0, [self.env.ref("maintenance.group_equipment_manager").id])
],
}
)
self.equipment.with_user(self.user_demo).name = "Test equipment rename"
self.assertEqual(self.equipment.name, "Test equipment rename")

View file

@ -0,0 +1,27 @@
<?xml version="1.0" encoding="utf-8" ?>
<odoo>
<record id="hr_equipment_view_form" model="ir.ui.view">
<field name="model">maintenance.equipment</field>
<field name="inherit_id" ref="maintenance.hr_equipment_view_form" />
<field name="arch" type="xml">
<xpath expr="//notebook" position="inside">
<page name="certifications" string="Certifications">
<group>
<field name="certificate_ids" nolabel="1" colspan="2">
<tree editable="top">
<field name="date" />
<field name="name" />
<field name="notes" />
<field name="certificate_filename" invisible="1" />
<field
name="certificate_file"
filename="certificate_filename"
/>
</tree>
</field>
</group>
</page>
</xpath>
</field>
</record>
</odoo>

View file

@ -0,0 +1,42 @@
[project]
name = "odoo-bringout-oca-maintenance-maintenance_equipment_certification"
version = "16.0.0"
description = "Maintenance equipment certification - Add to store certifications associated with a equipment."
authors = [
{ name = "Ernad Husremovic", email = "hernad@bring.out.ba" }
]
dependencies = [
"odoo-bringout-oca-maintenance-maintenance>=16.0.0",
"requests>=2.25.1"
]
readme = "README.md"
requires-python = ">= 3.11"
classifiers = [
"Development Status :: 5 - Production/Stable",
"Intended Audience :: Developers",
"License :: OSI Approved :: GNU Lesser General Public License v3 (LGPLv3)",
"Programming Language :: Python :: 3",
"Programming Language :: Python :: 3.11",
"Programming Language :: Python :: 3.12",
"Topic :: Office/Business",
]
[project.urls]
homepage = "https://github.com/bringout/0"
repository = "https://github.com/bringout/0"
[build-system]
requires = ["hatchling"]
build-backend = "hatchling.build"
[tool.hatch.metadata]
allow-direct-references = true
[tool.hatch.build.targets.wheel]
packages = ["maintenance_equipment_certification"]
[tool.rye]
managed = true
dev-dependencies = [
"pytest>=8.4.1",
]