From 8321f35ab3f50321fd94e2b35e1c6caaf53ac896 Mon Sep 17 00:00:00 2001 From: bosd Date: Mon, 5 May 2025 22:45:16 +0200 Subject: [PATCH] base_iso7010 --- base_iso7010/README.rst | 191 +++++++ base_iso7010/__init__.py | 1 + base_iso7010/__manifest__.py | 26 + base_iso7010/i18n/base_iso7010.pot | 207 ++++++++ base_iso7010/i18n/nl.po | 210 ++++++++ base_iso7010/models/__init__.py | 1 + base_iso7010/models/iso7010_symbol.py | 57 +++ base_iso7010/pyproject.toml | 3 + base_iso7010/readme/CONFIGURE.md | 8 + base_iso7010/readme/CONTEXT.md | 5 + base_iso7010/readme/CONTRIBUTORS.md | 1 + base_iso7010/readme/CREDITS.md | 0 base_iso7010/readme/DESCRIPTION.md | 12 + base_iso7010/readme/HISTORY.md | 1 + base_iso7010/readme/INSTALL.md | 4 + base_iso7010/readme/ROADMAP.md | 1 + base_iso7010/readme/USAGE.md | 22 + base_iso7010/security/ir.model.access.csv | 3 + base_iso7010/static/description/icon.png | Bin 0 -> 16632 bytes base_iso7010/static/description/icon.svg | 1 + base_iso7010/static/description/index.html | 530 ++++++++++++++++++++ base_iso7010/views/iso7010_symbol_views.xml | 146 ++++++ 22 files changed, 1430 insertions(+) create mode 100644 base_iso7010/README.rst create mode 100644 base_iso7010/__init__.py create mode 100644 base_iso7010/__manifest__.py create mode 100644 base_iso7010/i18n/base_iso7010.pot create mode 100644 base_iso7010/i18n/nl.po create mode 100644 base_iso7010/models/__init__.py create mode 100644 base_iso7010/models/iso7010_symbol.py create mode 100644 base_iso7010/pyproject.toml create mode 100644 base_iso7010/readme/CONFIGURE.md create mode 100644 base_iso7010/readme/CONTEXT.md create mode 100644 base_iso7010/readme/CONTRIBUTORS.md create mode 100644 base_iso7010/readme/CREDITS.md create mode 100644 base_iso7010/readme/DESCRIPTION.md create mode 100644 base_iso7010/readme/HISTORY.md create mode 100644 base_iso7010/readme/INSTALL.md create mode 100644 base_iso7010/readme/ROADMAP.md create mode 100644 base_iso7010/readme/USAGE.md create mode 100644 base_iso7010/security/ir.model.access.csv create mode 100644 base_iso7010/static/description/icon.png create mode 100644 base_iso7010/static/description/icon.svg create mode 100644 base_iso7010/static/description/index.html create mode 100644 base_iso7010/views/iso7010_symbol_views.xml diff --git a/base_iso7010/README.rst b/base_iso7010/README.rst new file mode 100644 index 000000000..634968e9b --- /dev/null +++ b/base_iso7010/README.rst @@ -0,0 +1,191 @@ +=============================== +Base ISO 7010 Symbols Structure +=============================== + +.. + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! This file is generated by oca-gen-addon-readme !! + !! changes will be overwritten. !! + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! source digest: sha256:cb8eb8886d248b317c4c5bcac3835d77dd51b3da6597d74e1734455d5635e1a6 + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + +.. |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-LGPL--3-blue.png + :target: http://www.gnu.org/licenses/lgpl-3.0-standalone.html + :alt: License: LGPL-3 +.. |badge3| image:: https://img.shields.io/badge/github-OCA%2Fcommunity--data--files-lightgray.png?logo=github + :target: https://github.com/OCA/community-data-files/tree/18.0/base_iso7010 + :alt: OCA/community-data-files +.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png + :target: https://translation.odoo-community.org/projects/community-data-files-18-0/community-data-files-18-0-base_iso7010 + :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/community-data-files&target_branch=18.0 + :alt: Try me on Runboat + +|badge1| |badge2| |badge3| |badge4| |badge5| + +This module provides the core data structure, views, security, and menus +for managing ISO 7010 graphical symbols for safety signs within Odoo. + +**Important:** This module only provides the *structure*. It does +**not** contain any actual symbol data records or image files. To load +symbols, you must install separate data modules, such as +``base_iso7010_data_mandatory``, ``base_iso7010_data_warning``, etc. + +This module serves as a base dependency for other modules that need to +load or reference standard ISO 7010 symbols. + +Key Features +------------ + +- Defines the ``iso7010.symbol`` model with fields for ISO code, name, + description, category (mandatory, warning, etc.), and image. +- Provides basic views (list, form, search) for managing these symbols. +- Adds a menu item under Settings > Technical > ISO Standards > ISO + 7010 Symbols (visible to Administrators). +- Includes necessary access control rules. + +**Table of contents** + +.. contents:: + :local: + +Use Cases / Context +=================== + +In many industries, particularly manufacturing, logistics, and +healthcare, clear and standardized visual communication of safety +information is crucial for accident prevention and regulatory +compliance. Using internationally recognized symbols, like those defined +in the ISO 7010 standard, ensures immediate and universal understanding +of hazards, prohibitions, and required actions (like wearing specific +Personal Protective Equipment - PPE). + +The business requirement is to have a centralized, consistent, and +easily accessible library of these standard safety symbols within the +Odoo environment. This avoids redundant definitions across different +applications (MRP, Inventory, Maintenance, Field Service) and ensures +that the correct, standardized symbol is used whenever safety +information needs to be displayed or referenced (e.g., on work +instructions, product labels, workstation signage, reports). + +*Example Use Case:* A company wants to display the mandatory "Wear Eye +Protection" symbol (M004) on work orders for specific machines and also +on handling instructions for certain materials in the warehouse. This +module provides the foundation to manage the M004 symbol record +centrally. + +Installation +============ + +To install this module, you need to: + +1. Add this repository to your Odoo addons path. +2. Install the module 'Base ISO 7010 Symbols Structure' + (``base_iso7010``). + +Configuration +============= + +This module requires no specific configuration steps after installation. + +To access the symbols management area (requires data modules to be +installed to see data): + +1. Ensure you are logged in as an Administrator. +2. Navigate to Settings > Technical > ISO Standards > ISO 7010 Symbols. + +Note: Without installing data modules, the list view in this menu will +be empty. + +Usage +===== + +This module primarily provides the backend structure and is intended as +a dependency for data-loading or integration modules. + +**Viewing Symbol Structure (Administrator):** + +1. Log in as an Administrator. +2. Navigate to Settings > Technical > ISO Standards > ISO 7010 Symbols. +3. You will see the list view defined for symbols. This list will be + empty until you install one or more data modules (e.g., + ``base_iso7010_data_mandatory``). + +**Developer Usage:** + +- Other modules should add ``base_iso7010`` to their dependencies. +- Use Many2one or Many2many fields in your custom models linking to the + ``iso7010.symbol`` model to reference safety symbols. Example: + .. code:: python + + from odoo import fields, models + + class MyModel(models.Model): + _name = 'my.model' + + required_symbol_id = fields.Many2one('iso7010.symbol', string='Required Symbol') + applicable_symbols_ids = fields.Many2many('iso7010.symbol', string='Applicable Symbols') + +- Ensure that appropriate ``base_iso7010_data_*`` modules are also + installed in the target database to provide the necessary symbol + records for selection in your custom fields. + +Known issues / Roadmap +====================== + + + +Changelog +========= + + + +Bug Tracker +=========== + +Bugs are tracked on `GitHub 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 `_. + +Do not contact contributors directly about support or help with technical issues. + +Credits +======= + +Authors +------- + +* bosd + +Contributors +------------ + +- bosd + +Other credits +------------- + + + +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. + +This module is part of the `OCA/community-data-files `_ project on GitHub. + +You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute. diff --git a/base_iso7010/__init__.py b/base_iso7010/__init__.py new file mode 100644 index 000000000..0650744f6 --- /dev/null +++ b/base_iso7010/__init__.py @@ -0,0 +1 @@ +from . import models diff --git a/base_iso7010/__manifest__.py b/base_iso7010/__manifest__.py new file mode 100644 index 000000000..cd7f6f6b6 --- /dev/null +++ b/base_iso7010/__manifest__.py @@ -0,0 +1,26 @@ +{ + "name": "Base ISO 7010 Symbols Structure", + "version": "18.0.1.0.0", + "summary": """ + This module provides the core structure (model, views, security, menus) + for managing ISO 7010 safety symbols. + + It does NOT contain any actual symbol data records. Install separate + 'base_iso7010_data_*' modules to load symbol data for specific categories + (e.g., base_iso7010_data_mandatory). + """, + "author": "bosd, Odoo Community Association (OCA)", + "website": "https://github.com/OCA/community-data-files", + "category": "Extra Tools", + "license": "LGPL-3", + "depends": [ + "base", + ], + "data": [ + "security/ir.model.access.csv", + "views/iso7010_symbol_views.xml", + ], + "installable": True, + "application": False, + "auto_install": False, +} diff --git a/base_iso7010/i18n/base_iso7010.pot b/base_iso7010/i18n/base_iso7010.pot new file mode 100644 index 000000000..197af6ab4 --- /dev/null +++ b/base_iso7010/i18n/base_iso7010.pot @@ -0,0 +1,207 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * base_iso7010 +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 18.0+e\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2025-05-05 21:06+0000\n" +"PO-Revision-Date: 2025-05-05 21:06+0000\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: base_iso7010 +#: model:ir.model.fields,field_description:base_iso7010.field_iso7010_symbol__active +msgid "Active" +msgstr "" + +#. module: base_iso7010 +#: model_terms:ir.ui.view,arch_db:base_iso7010.view_iso7010_symbol_search +msgid "Archived" +msgstr "" + +#. module: base_iso7010 +#: model:ir.model.fields,field_description:base_iso7010.field_iso7010_symbol__category +#: model_terms:ir.ui.view,arch_db:base_iso7010.view_iso7010_symbol_search +msgid "Category" +msgstr "" + +#. module: base_iso7010 +#: model:ir.model.fields,field_description:base_iso7010.field_iso7010_symbol__create_uid +msgid "Created by" +msgstr "" + +#. module: base_iso7010 +#: model:ir.model.fields,field_description:base_iso7010.field_iso7010_symbol__create_date +msgid "Created on" +msgstr "" + +#. module: base_iso7010 +#: model:ir.model.fields,field_description:base_iso7010.field_iso7010_symbol__description +#: model_terms:ir.ui.view,arch_db:base_iso7010.view_iso7010_symbol_form +msgid "Description" +msgstr "" + +#. module: base_iso7010 +#: model:ir.model.fields,field_description:base_iso7010.field_iso7010_symbol__display_name +msgid "Display Name" +msgstr "" + +#. module: base_iso7010 +#: model_terms:ir.ui.view,arch_db:base_iso7010.view_iso7010_symbol_search +msgid "Emergency" +msgstr "" + +#. module: base_iso7010 +#: model:ir.model.fields.selection,name:base_iso7010.selection__iso7010_symbol__category__emergency +msgid "Emergency Escape/First-Aid (Green Square)" +msgstr "" + +#. module: base_iso7010 +#: model_terms:ir.ui.view,arch_db:base_iso7010.view_iso7010_symbol_search +msgid "Fire" +msgstr "" + +#. module: base_iso7010 +#: model:ir.model.fields.selection,name:base_iso7010.selection__iso7010_symbol__category__fire +msgid "Fire Equipment (Red Square)" +msgstr "" + +#. module: base_iso7010 +#: model_terms:ir.ui.view,arch_db:base_iso7010.view_iso7010_symbol_search +msgid "Group By" +msgstr "" + +#. module: base_iso7010 +#: model:ir.model.fields,field_description:base_iso7010.field_iso7010_symbol__id +msgid "ID" +msgstr "" + +#. module: base_iso7010 +#: model:ir.model,name:base_iso7010.model_iso7010_symbol +msgid "ISO 7010 Safety Symbol" +msgstr "" + +#. module: base_iso7010 +#: model_terms:ir.ui.view,arch_db:base_iso7010.view_iso7010_symbol_form +msgid "ISO 7010 Symbol" +msgstr "" + +#. module: base_iso7010 +#: model:ir.actions.act_window,name:base_iso7010.action_iso7010_symbol +#: model:ir.ui.menu,name:base_iso7010.menu_iso7010_symbol +#: model_terms:ir.ui.view,arch_db:base_iso7010.view_iso7010_symbol_list +msgid "ISO 7010 Symbols" +msgstr "" + +#. module: base_iso7010 +#: model:ir.model.constraint,message:base_iso7010.constraint_iso7010_symbol_iso_code_uniq +msgid "ISO Code must be unique!" +msgstr "" + +#. module: base_iso7010 +#: model:ir.ui.menu,name:base_iso7010.menu_iso7010_symbol_root +msgid "ISO Standards" +msgstr "" + +#. module: base_iso7010 +#: model:ir.model.fields,help:base_iso7010.field_iso7010_symbol__image +msgid "Image representation of the symbol (preferably SVG)." +msgstr "" + +#. module: base_iso7010 +#: model_terms:ir.actions.act_window,help:base_iso7010.action_iso7010_symbol +msgid "" +"Install the specific 'base_iso7010_data_*' modules (e.g., 'base_iso7010_data_mandatory')\n" +" to load symbol data for the categories you need." +msgstr "" + +#. module: base_iso7010 +#: model:ir.model.fields,field_description:base_iso7010.field_iso7010_symbol__iso_code +msgid "Iso Code" +msgstr "" + +#. module: base_iso7010 +#: model:ir.model.fields,field_description:base_iso7010.field_iso7010_symbol__write_uid +msgid "Last Updated by" +msgstr "" + +#. module: base_iso7010 +#: model:ir.model.fields,field_description:base_iso7010.field_iso7010_symbol__write_date +msgid "Last Updated on" +msgstr "" + +#. module: base_iso7010 +#: model_terms:ir.ui.view,arch_db:base_iso7010.view_iso7010_symbol_search +msgid "Mandatory" +msgstr "" + +#. module: base_iso7010 +#: model:ir.model.fields.selection,name:base_iso7010.selection__iso7010_symbol__category__mandatory +msgid "Mandatory Action (Blue Circle)" +msgstr "" + +#. module: base_iso7010 +#: model:ir.model.fields,help:base_iso7010.field_iso7010_symbol__name +msgid "Meaning of the symbol, e.g., 'Wear eye protection'." +msgstr "" + +#. module: base_iso7010 +#: model:ir.model.fields,field_description:base_iso7010.field_iso7010_symbol__name +msgid "Name" +msgstr "" + +#. module: base_iso7010 +#: model_terms:ir.actions.act_window,help:base_iso7010.action_iso7010_symbol +msgid "No ISO 7010 symbols found." +msgstr "" + +#. module: base_iso7010 +#: model:ir.model.fields,help:base_iso7010.field_iso7010_symbol__description +msgid "Optional further details about the symbol or its usage." +msgstr "" + +#. module: base_iso7010 +#: model_terms:ir.ui.view,arch_db:base_iso7010.view_iso7010_symbol_search +msgid "Prohibition" +msgstr "" + +#. module: base_iso7010 +#: model:ir.model.fields.selection,name:base_iso7010.selection__iso7010_symbol__category__prohibition +msgid "Prohibition (Red Circle with Slash)" +msgstr "" + +#. module: base_iso7010 +#: model_terms:ir.ui.view,arch_db:base_iso7010.view_iso7010_symbol_search +msgid "Search ISO 7010 Symbols" +msgstr "" + +#. module: base_iso7010 +#: model:ir.model.fields.selection,name:base_iso7010.selection__iso7010_symbol__category__supplementary +msgid "Supplementary (Usually Rectangular)" +msgstr "" + +#. module: base_iso7010 +#: model:ir.model.fields,field_description:base_iso7010.field_iso7010_symbol__image +msgid "Symbol Image" +msgstr "" + +#. module: base_iso7010 +#: model:ir.model.fields,help:base_iso7010.field_iso7010_symbol__iso_code +msgid "The official ISO 7010 code, e.g., M001, W002, P003, E001, F001." +msgstr "" + +#. module: base_iso7010 +#: model_terms:ir.ui.view,arch_db:base_iso7010.view_iso7010_symbol_search +msgid "Warning" +msgstr "" + +#. module: base_iso7010 +#: model:ir.model.fields.selection,name:base_iso7010.selection__iso7010_symbol__category__warning +msgid "Warning (Yellow Triangle)" +msgstr "" diff --git a/base_iso7010/i18n/nl.po b/base_iso7010/i18n/nl.po new file mode 100644 index 000000000..afc873686 --- /dev/null +++ b/base_iso7010/i18n/nl.po @@ -0,0 +1,210 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * base_iso7010 +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 18.0+e\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2025-05-05 21:06+0000\n" +"PO-Revision-Date: 2025-05-05 22:38+0000\n" +"Last-Translator: \n" +"Language-Team: Dutch\n" +"Language: nl\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" + +#. module: base_iso7010 +#: model:ir.model.fields,field_description:base_iso7010.field_iso7010_symbol__active +msgid "Active" +msgstr "Actief" + +#. module: base_iso7010 +#: model_terms:ir.ui.view,arch_db:base_iso7010.view_iso7010_symbol_search +msgid "Archived" +msgstr "Gearchiveerd" + +#. module: base_iso7010 +#: model:ir.model.fields,field_description:base_iso7010.field_iso7010_symbol__category +#: model_terms:ir.ui.view,arch_db:base_iso7010.view_iso7010_symbol_search +msgid "Category" +msgstr "Categorie" + +#. module: base_iso7010 +#: model:ir.model.fields,field_description:base_iso7010.field_iso7010_symbol__create_uid +msgid "Created by" +msgstr "Aangemaakt door" + +#. module: base_iso7010 +#: model:ir.model.fields,field_description:base_iso7010.field_iso7010_symbol__create_date +msgid "Created on" +msgstr "Aangemaakt op" + +#. module: base_iso7010 +#: model:ir.model.fields,field_description:base_iso7010.field_iso7010_symbol__description +#: model_terms:ir.ui.view,arch_db:base_iso7010.view_iso7010_symbol_form +msgid "Description" +msgstr "Beschrijving" + +#. module: base_iso7010 +#: model:ir.model.fields,field_description:base_iso7010.field_iso7010_symbol__display_name +msgid "Display Name" +msgstr "Weergavenaam" + +#. module: base_iso7010 +#: model_terms:ir.ui.view,arch_db:base_iso7010.view_iso7010_symbol_search +msgid "Emergency" +msgstr "Noodgeval" + +#. module: base_iso7010 +#: model:ir.model.fields.selection,name:base_iso7010.selection__iso7010_symbol__category__emergency +msgid "Emergency Escape/First-Aid (Green Square)" +msgstr "Nooduitgang/Eerste Hulp (Groen Vierkant)" + +#. module: base_iso7010 +#: model_terms:ir.ui.view,arch_db:base_iso7010.view_iso7010_symbol_search +msgid "Fire" +msgstr "Brand" + +#. module: base_iso7010 +#: model:ir.model.fields.selection,name:base_iso7010.selection__iso7010_symbol__category__fire +msgid "Fire Equipment (Red Square)" +msgstr "Brandbestrijdingsmateriaal (Rood Vierkant)" + +#. module: base_iso7010 +#: model_terms:ir.ui.view,arch_db:base_iso7010.view_iso7010_symbol_search +msgid "Group By" +msgstr "Groeperen op" + +#. module: base_iso7010 +#: model:ir.model.fields,field_description:base_iso7010.field_iso7010_symbol__id +msgid "ID" +msgstr "ID" + +#. module: base_iso7010 +#: model:ir.model,name:base_iso7010.model_iso7010_symbol +msgid "ISO 7010 Safety Symbol" +msgstr "ISO 7010 Veiligheidssymbool" + +#. module: base_iso7010 +#: model_terms:ir.ui.view,arch_db:base_iso7010.view_iso7010_symbol_form +msgid "ISO 7010 Symbol" +msgstr "ISO 7010 Symbool" + +#. module: base_iso7010 +#: model:ir.actions.act_window,name:base_iso7010.action_iso7010_symbol +#: model:ir.ui.menu,name:base_iso7010.menu_iso7010_symbol +#: model_terms:ir.ui.view,arch_db:base_iso7010.view_iso7010_symbol_list +msgid "ISO 7010 Symbols" +msgstr "ISO 7010 Symbolen" + +#. module: base_iso7010 +#: model:ir.model.constraint,message:base_iso7010.constraint_iso7010_symbol_iso_code_uniq +msgid "ISO Code must be unique!" +msgstr "ISO Code moet uniek zijn!" + +#. module: base_iso7010 +#: model:ir.ui.menu,name:base_iso7010.menu_iso7010_symbol_root +msgid "ISO Standards" +msgstr "ISO Standaarden" + +#. module: base_iso7010 +#: model:ir.model.fields,help:base_iso7010.field_iso7010_symbol__image +msgid "Image representation of the symbol (preferably SVG)." +msgstr "Afbeelding van het symbool (bij voorkeur SVG)." + +#. module: base_iso7010 +#: model_terms:ir.actions.act_window,help:base_iso7010.action_iso7010_symbol +msgid "" +"Install the specific 'base_iso7010_data_*' modules (e.g., 'base_iso7010_data_mandatory')\n" +" to load symbol data for the categories you need." +msgstr "" +"Installeer de specifieke 'base_iso7010_data_*' modules (bijv. 'base_iso7010_data_mandatory')\n" +" om symboolgegevens te laden voor de categorieën die u nodig heeft." + +#. module: base_iso7010 +#: model:ir.model.fields,field_description:base_iso7010.field_iso7010_symbol__iso_code +msgid "Iso Code" +msgstr "Iso Code" + +#. module: base_iso7010 +#: model:ir.model.fields,field_description:base_iso7010.field_iso7010_symbol__write_uid +msgid "Last Updated by" +msgstr "Laatst bijgewerkt door" + +#. module: base_iso7010 +#: model:ir.model.fields,field_description:base_iso7010.field_iso7010_symbol__write_date +msgid "Last Updated on" +msgstr "Laatst bijgewerkt op" + +#. module: base_iso7010 +#: model_terms:ir.ui.view,arch_db:base_iso7010.view_iso7010_symbol_search +msgid "Mandatory" +msgstr "Gebod" + +#. module: base_iso7010 +#: model:ir.model.fields.selection,name:base_iso7010.selection__iso7010_symbol__category__mandatory +msgid "Mandatory Action (Blue Circle)" +msgstr "Gebodsactie (Blauwe Cirkel)" + +#. module: base_iso7010 +#: model:ir.model.fields,help:base_iso7010.field_iso7010_symbol__name +msgid "Meaning of the symbol, e.g., 'Wear eye protection'." +msgstr "Betekenis van het symbool, bijv. 'Draag oogbescherming'." + +#. module: base_iso7010 +#: model:ir.model.fields,field_description:base_iso7010.field_iso7010_symbol__name +msgid "Name" +msgstr "Naam" + +#. module: base_iso7010 +#: model_terms:ir.actions.act_window,help:base_iso7010.action_iso7010_symbol +msgid "No ISO 7010 symbols found." +msgstr "Geen ISO 7010 symbolen gevonden." + +#. module: base_iso7010 +#: model:ir.model.fields,help:base_iso7010.field_iso7010_symbol__description +msgid "Optional further details about the symbol or its usage." +msgstr "Optionele verdere details over het symbool of het gebruik ervan." + +#. module: base_iso7010 +#: model_terms:ir.ui.view,arch_db:base_iso7010.view_iso7010_symbol_search +msgid "Prohibition" +msgstr "Verbod" + +#. module: base_iso7010 +#: model:ir.model.fields.selection,name:base_iso7010.selection__iso7010_symbol__category__prohibition +msgid "Prohibition (Red Circle with Slash)" +msgstr "Verbod (Rode Cirkel met Streep)" + +#. module: base_iso7010 +#: model_terms:ir.ui.view,arch_db:base_iso7010.view_iso7010_symbol_search +msgid "Search ISO 7010 Symbols" +msgstr "Zoek ISO 7010 Symbolen" + +#. module: base_iso7010 +#: model:ir.model.fields.selection,name:base_iso7010.selection__iso7010_symbol__category__supplementary +msgid "Supplementary (Usually Rectangular)" +msgstr "Aanvullend (Meestal Rechthoekig)" + +#. module: base_iso7010 +#: model:ir.model.fields,field_description:base_iso7010.field_iso7010_symbol__image +msgid "Symbol Image" +msgstr "Symbool Afbeelding" + +#. module: base_iso7010 +#: model:ir.model.fields,help:base_iso7010.field_iso7010_symbol__iso_code +msgid "The official ISO 7010 code, e.g., M001, W002, P003, E001, F001." +msgstr "De officiële ISO 7010 code, bijv. M001, W002, P003, E001, F001." + +#. module: base_iso7010 +#: model_terms:ir.ui.view,arch_db:base_iso7010.view_iso7010_symbol_search +msgid "Warning" +msgstr "Waarschuwing" + +#. module: base_iso7010 +#: model:ir.model.fields.selection,name:base_iso7010.selection__iso7010_symbol__category__warning +msgid "Warning (Yellow Triangle)" +msgstr "Waarschuwing (Gele Driehoek)" diff --git a/base_iso7010/models/__init__.py b/base_iso7010/models/__init__.py new file mode 100644 index 000000000..e1fedacef --- /dev/null +++ b/base_iso7010/models/__init__.py @@ -0,0 +1 @@ +from . import iso7010_symbol diff --git a/base_iso7010/models/iso7010_symbol.py b/base_iso7010/models/iso7010_symbol.py new file mode 100644 index 000000000..26e9f9f83 --- /dev/null +++ b/base_iso7010/models/iso7010_symbol.py @@ -0,0 +1,57 @@ +from odoo import fields, models + + +class Iso7010Symbol(models.Model): + _name = "iso7010.symbol" + _description = "ISO 7010 Safety Symbol" + _order = "iso_code" + + name = fields.Char( + required=True, + translate=True, + help="Meaning of the symbol, e.g., 'Wear eye protection'.", + ) + description = fields.Text( + translate=True, + help="Optional further details about the symbol or its usage.", + ) + iso_code = fields.Char( + required=True, + readonly=True, + copy=False, + index=True, + help="The official ISO 7010 code, e.g., M001, W002, P003, E001, F001.", + ) + category = fields.Selection( + [ + ("mandatory", "Mandatory Action (Blue Circle)"), + ("warning", "Warning (Yellow Triangle)"), + ("prohibition", "Prohibition (Red Circle with Slash)"), + ("emergency", "Emergency Escape/First-Aid (Green Square)"), + ("fire", "Fire Equipment (Red Square)"), + ("supplementary", "Supplementary (Usually Rectangular)"), + ], + required=True, + index=True, + readonly=True, + ) + image = fields.Image( + string="Symbol Image", + max_width=256, # Define max width/height for storage variants + max_height=256, + readonly=True, # Data loaded from files + help="Image representation of the symbol (preferably SVG).", + ) + active = fields.Boolean(default=True, index=True) + + _sql_constraints = [ + ("iso_code_uniq", "unique(iso_code)", "ISO Code must be unique!") + ] + + def name_get(self): + """Include ISO code in the display name""" + res = [] + for record in self: + name = f"[{record.iso_code}] {record.name}" + res.append((record.id, name)) + return res diff --git a/base_iso7010/pyproject.toml b/base_iso7010/pyproject.toml new file mode 100644 index 000000000..4231d0ccc --- /dev/null +++ b/base_iso7010/pyproject.toml @@ -0,0 +1,3 @@ +[build-system] +requires = ["whool"] +build-backend = "whool.buildapi" diff --git a/base_iso7010/readme/CONFIGURE.md b/base_iso7010/readme/CONFIGURE.md new file mode 100644 index 000000000..e7a90e4a5 --- /dev/null +++ b/base_iso7010/readme/CONFIGURE.md @@ -0,0 +1,8 @@ +This module requires no specific configuration steps after installation. + +To access the symbols management area (requires data modules to be installed to see data): + +1. Ensure you are logged in as an Administrator. +2. Navigate to Settings > Technical > ISO Standards > ISO 7010 Symbols. + +Note: Without installing data modules, the list view in this menu will be empty. diff --git a/base_iso7010/readme/CONTEXT.md b/base_iso7010/readme/CONTEXT.md new file mode 100644 index 000000000..b9917e742 --- /dev/null +++ b/base_iso7010/readme/CONTEXT.md @@ -0,0 +1,5 @@ +In many industries, particularly manufacturing, logistics, and healthcare, clear and standardized visual communication of safety information is crucial for accident prevention and regulatory compliance. Using internationally recognized symbols, like those defined in the ISO 7010 standard, ensures immediate and universal understanding of hazards, prohibitions, and required actions (like wearing specific Personal Protective Equipment - PPE). + +The business requirement is to have a centralized, consistent, and easily accessible library of these standard safety symbols within the Odoo environment. This avoids redundant definitions across different applications (MRP, Inventory, Maintenance, Field Service) and ensures that the correct, standardized symbol is used whenever safety information needs to be displayed or referenced (e.g., on work instructions, product labels, workstation signage, reports). + +*Example Use Case:* A company wants to display the mandatory "Wear Eye Protection" symbol (M004) on work orders for specific machines and also on handling instructions for certain materials in the warehouse. This module provides the foundation to manage the M004 symbol record centrally. diff --git a/base_iso7010/readme/CONTRIBUTORS.md b/base_iso7010/readme/CONTRIBUTORS.md new file mode 100644 index 000000000..1b22f2a4d --- /dev/null +++ b/base_iso7010/readme/CONTRIBUTORS.md @@ -0,0 +1 @@ +- bosd diff --git a/base_iso7010/readme/CREDITS.md b/base_iso7010/readme/CREDITS.md new file mode 100644 index 000000000..e69de29bb diff --git a/base_iso7010/readme/DESCRIPTION.md b/base_iso7010/readme/DESCRIPTION.md new file mode 100644 index 000000000..a143e024b --- /dev/null +++ b/base_iso7010/readme/DESCRIPTION.md @@ -0,0 +1,12 @@ +This module provides the core data structure, views, security, and menus for managing ISO 7010 graphical symbols for safety signs within Odoo. + +**Important:** This module only provides the *structure*. It does **not** contain any actual symbol data records or image files. To load symbols, you must install separate data modules, such as `base_iso7010_data_mandatory`, `base_iso7010_data_warning`, etc. + +This module serves as a base dependency for other modules that need to load or reference standard ISO 7010 symbols. + +## Key Features + +* Defines the `iso7010.symbol` model with fields for ISO code, name, description, category (mandatory, warning, etc.), and image. +* Provides basic views (list, form, search) for managing these symbols. +* Adds a menu item under Settings > Technical > ISO Standards > ISO 7010 Symbols (visible to Administrators). +* Includes necessary access control rules. diff --git a/base_iso7010/readme/HISTORY.md b/base_iso7010/readme/HISTORY.md new file mode 100644 index 000000000..8b1378917 --- /dev/null +++ b/base_iso7010/readme/HISTORY.md @@ -0,0 +1 @@ + diff --git a/base_iso7010/readme/INSTALL.md b/base_iso7010/readme/INSTALL.md new file mode 100644 index 000000000..c891adcfa --- /dev/null +++ b/base_iso7010/readme/INSTALL.md @@ -0,0 +1,4 @@ +To install this module, you need to: + +1. Add this repository to your Odoo addons path. +2. Install the module 'Base ISO 7010 Symbols Structure' (`base_iso7010`). diff --git a/base_iso7010/readme/ROADMAP.md b/base_iso7010/readme/ROADMAP.md new file mode 100644 index 000000000..8b1378917 --- /dev/null +++ b/base_iso7010/readme/ROADMAP.md @@ -0,0 +1 @@ + diff --git a/base_iso7010/readme/USAGE.md b/base_iso7010/readme/USAGE.md new file mode 100644 index 000000000..85308e294 --- /dev/null +++ b/base_iso7010/readme/USAGE.md @@ -0,0 +1,22 @@ +This module primarily provides the backend structure and is intended as a dependency for data-loading or integration modules. + +**Viewing Symbol Structure (Administrator):** + +1. Log in as an Administrator. +2. Navigate to Settings > Technical > ISO Standards > ISO 7010 Symbols. +3. You will see the list view defined for symbols. This list will be empty until you install one or more data modules (e.g., `base_iso7010_data_mandatory`). + +**Developer Usage:** + +* Other modules should add `base_iso7010` to their dependencies. +* Use Many2one or Many2many fields in your custom models linking to the `iso7010.symbol` model to reference safety symbols. Example: + ```python + from odoo import fields, models + + class MyModel(models.Model): + _name = 'my.model' + + required_symbol_id = fields.Many2one('iso7010.symbol', string='Required Symbol') + applicable_symbols_ids = fields.Many2many('iso7010.symbol', string='Applicable Symbols') + ``` +* Ensure that appropriate `base_iso7010_data_*` modules are also installed in the target database to provide the necessary symbol records for selection in your custom fields. diff --git a/base_iso7010/security/ir.model.access.csv b/base_iso7010/security/ir.model.access.csv new file mode 100644 index 000000000..59f87f7a3 --- /dev/null +++ b/base_iso7010/security/ir.model.access.csv @@ -0,0 +1,3 @@ +id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink +access_iso7010_symbol_user,iso7010.symbol user,model_iso7010_symbol,base.group_user,1,0,0,0 +access_iso7010_symbol_admin,iso7010.symbol admin,model_iso7010_symbol,base.group_system,1,1,1,1 diff --git a/base_iso7010/static/description/icon.png b/base_iso7010/static/description/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..cd30312a6dfd4315fda9961107f1a736013fdc31 GIT binary patch literal 16632 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 Wzd%&+s10}lNLpM$tXjk<`2PWK1(OK? literal 0 HcmV?d00001 diff --git a/base_iso7010/static/description/icon.svg b/base_iso7010/static/description/icon.svg new file mode 100644 index 000000000..d8f6b62b5 --- /dev/null +++ b/base_iso7010/static/description/icon.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/base_iso7010/static/description/index.html b/base_iso7010/static/description/index.html new file mode 100644 index 000000000..67a27fdc6 --- /dev/null +++ b/base_iso7010/static/description/index.html @@ -0,0 +1,530 @@ + + + + + +Base ISO 7010 Symbols Structure + + + +
+

Base ISO 7010 Symbols Structure

+ + +

Beta License: LGPL-3 OCA/community-data-files Translate me on Weblate Try me on Runboat

+

This module provides the core data structure, views, security, and menus +for managing ISO 7010 graphical symbols for safety signs within Odoo.

+

Important: This module only provides the structure. It does +not contain any actual symbol data records or image files. To load +symbols, you must install separate data modules, such as +base_iso7010_data_mandatory, base_iso7010_data_warning, etc.

+

This module serves as a base dependency for other modules that need to +load or reference standard ISO 7010 symbols.

+
+

Key Features

+
    +
  • Defines the iso7010.symbol model with fields for ISO code, name, +description, category (mandatory, warning, etc.), and image.
  • +
  • Provides basic views (list, form, search) for managing these symbols.
  • +
  • Adds a menu item under Settings > Technical > ISO Standards > ISO +7010 Symbols (visible to Administrators).
  • +
  • Includes necessary access control rules.
  • +
+

Table of contents

+ +
+

Use Cases / Context

+

In many industries, particularly manufacturing, logistics, and +healthcare, clear and standardized visual communication of safety +information is crucial for accident prevention and regulatory +compliance. Using internationally recognized symbols, like those defined +in the ISO 7010 standard, ensures immediate and universal understanding +of hazards, prohibitions, and required actions (like wearing specific +Personal Protective Equipment - PPE).

+

The business requirement is to have a centralized, consistent, and +easily accessible library of these standard safety symbols within the +Odoo environment. This avoids redundant definitions across different +applications (MRP, Inventory, Maintenance, Field Service) and ensures +that the correct, standardized symbol is used whenever safety +information needs to be displayed or referenced (e.g., on work +instructions, product labels, workstation signage, reports).

+

Example Use Case: A company wants to display the mandatory “Wear Eye +Protection” symbol (M004) on work orders for specific machines and also +on handling instructions for certain materials in the warehouse. This +module provides the foundation to manage the M004 symbol record +centrally.

+
+
+

Installation

+

To install this module, you need to:

+
    +
  1. Add this repository to your Odoo addons path.
  2. +
  3. Install the module ‘Base ISO 7010 Symbols Structure’ +(base_iso7010).
  4. +
+
+
+

Configuration

+

This module requires no specific configuration steps after installation.

+

To access the symbols management area (requires data modules to be +installed to see data):

+
    +
  1. Ensure you are logged in as an Administrator.
  2. +
  3. Navigate to Settings > Technical > ISO Standards > ISO 7010 Symbols.
  4. +
+

Note: Without installing data modules, the list view in this menu will +be empty.

+
+
+

Usage

+

This module primarily provides the backend structure and is intended as +a dependency for data-loading or integration modules.

+

Viewing Symbol Structure (Administrator):

+
    +
  1. Log in as an Administrator.
  2. +
  3. Navigate to Settings > Technical > ISO Standards > ISO 7010 Symbols.
  4. +
  5. You will see the list view defined for symbols. This list will be +empty until you install one or more data modules (e.g., +base_iso7010_data_mandatory).
  6. +
+

Developer Usage:

+
    +
  • Other modules should add base_iso7010 to their dependencies.

    +
  • +
  • Use Many2one or Many2many fields in your custom models linking to the +iso7010.symbol model to reference safety symbols. Example: +.. code:: python

    +
    +

    from odoo import fields, models

    +
    +
    class MyModel(models.Model):
    +

    _name = ‘my.model’

    +

    required_symbol_id = fields.Many2one(‘iso7010.symbol’, string=’Required Symbol’) +applicable_symbols_ids = fields.Many2many(‘iso7010.symbol’, string=’Applicable Symbols’)

    +
    +
    +
    +
  • +
  • Ensure that appropriate base_iso7010_data_* modules are also +installed in the target database to provide the necessary symbol +records for selection in your custom fields.

    +
  • +
+
+ + +
+

Bug Tracker

+

Bugs are tracked on GitHub 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.

+

Do not contact contributors directly about support or help with technical issues.

+
+ +
+
+

Authors

+
    +
  • bosd
  • +
+
+
+

Contributors

+
    +
  • bosd
  • +
+
+
+

Other credits

+
+
+

Maintainers

+

This module is maintained by the OCA.

+ +Odoo Community Association + +

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.

+

This module is part of the OCA/community-data-files project on GitHub.

+

You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute.

+
+
+ + diff --git a/base_iso7010/views/iso7010_symbol_views.xml b/base_iso7010/views/iso7010_symbol_views.xml new file mode 100644 index 000000000..65653276c --- /dev/null +++ b/base_iso7010/views/iso7010_symbol_views.xml @@ -0,0 +1,146 @@ + + + + iso7010.symbol.list + iso7010.symbol + list + + + + + + + + + + + + + iso7010.symbol.form + iso7010.symbol + +
+ + + +
+
+ + + + + + + + + + +
+
+
+
+ + + iso7010.symbol.search + iso7010.symbol + + + + + + + + + + + + + + + + + + + + ISO 7010 Symbols + iso7010.symbol + list,form + + +

+ No ISO 7010 symbols found. +

+

+ Install the specific 'base_iso7010_data_*' modules (e.g., 'base_iso7010_data_mandatory') + to load symbol data for the categories you need. +

+
+
+ + + +