diff --git a/apps_product_creator/README.rst b/apps_product_creator/README.rst new file mode 100644 index 0000000..4764170 --- /dev/null +++ b/apps_product_creator/README.rst @@ -0,0 +1,162 @@ +====================== +Github product creator +====================== + +.. + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! This file is generated by oca-gen-addon-readme !! + !! changes will be overwritten. !! + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! source digest: sha256:b9a9099b55ddd4ba9b83ea395d5f31598e2adcb75141b70cdf90c580e1f59b5d + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + +.. |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%2Fapps--store-lightgray.png?logo=github + :target: https://github.com/OCA/apps-store/tree/18.0/apps_product_creator + :alt: OCA/apps-store +.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png + :target: https://translation.odoo-community.org/projects/apps-store-18-0/apps-store-18-0-apps_product_creator + :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/apps-store&target_branch=18.0 + :alt: Try me on Runboat + +|badge1| |badge2| |badge3| |badge4| |badge5| + +This module extends the functionality of the module Github connector to +create a product for every module found. A variant is also created for +every version of the module. + +**Table of contents** + +.. contents:: + :local: + +Configuration +============= + +There's an scheduled action that creates the product, disabled by +default. For enabling it: + +1. Go to *Settings > Technical > Automation > Scheduled Actions*. +2. Locate "Create/Update product variants for each module version" and + access its form. + +Usage +===== + +To see the module working + + - Import some modules with + `github_connector `__ + +1. Run manually the scheduled action mentioned on the configure section + or wait until its execution. +2. Go to *Website > Products > Products*. +3. Click on Filters > Add Custom Filter, and apply the filter "Odoo + Module" > "is set". +4. You will see the created products in the list. + +.. + + Now you can see the products created. + +Changelog +========= + +14.0.1.0.0 (2021-08-02) +----------------------- + +- Migration to 14.0 + +13.0.1.0.0 (2020-07-10) +----------------------- + +- Migration to 13.0 + +12.0.1.0.0 (2019-04-10) +----------------------- + +- Migration to 12.0 + +11.0.1.1.2 (2018-10-02) +----------------------- + +- Publish the modules automatically on the website + +11.0.1.1.0 (2018-10-02) +----------------------- + +- [ADD] Added dependency on github_connector_oca to display + development_status + (`#19 `__) + +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 +------- + +* BizzAppDev + +Contributors +------------ + +- Alex Comba +- Antonio Esposito +- Eric Caudal +- François Honoré +- Nicola Malcontenti +- Roel Adriaans +- Ruchir Shukla +- `Tecnativa `__: + + - Victor M.M. Torres + - Carlos Roca + - Alexandre D. Díaz + - Ernesto Tejeda + +- `PyTech `__: + + - Simone Rubino + +Other credits +------------- + +Images +~~~~~~ + +- Odoo Community Association: + `Icon `__. + +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/apps-store `_ project on GitHub. + +You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute. diff --git a/apps_product_creator/__init__.py b/apps_product_creator/__init__.py new file mode 100644 index 0000000..0650744 --- /dev/null +++ b/apps_product_creator/__init__.py @@ -0,0 +1 @@ +from . import models diff --git a/apps_product_creator/__manifest__.py b/apps_product_creator/__manifest__.py new file mode 100644 index 0000000..54d7442 --- /dev/null +++ b/apps_product_creator/__manifest__.py @@ -0,0 +1,27 @@ +# Copyright 2017-2018 Odoo Community Association (OCA) +# Copyright 2019 Tecnativa - Pedro M. Baeza +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). +{ + "name": "Github product creator", + "summary": "Create a product variant (by version) for every module found " + "in the Github repositories", + "version": "18.0.1.0.0", + "category": "Connector", + "website": "https://github.com/OCA/apps-store", + "license": "AGPL-3", + "author": "Odoo Community Association (OCA), BizzAppDev", + "depends": [ + "github_connector_oca", + "github_connector_odoo", + "product", + "website_sale", + ], + "data": [ + "data/ir_cron.xml", + "data/product_attribute.xml", + "data/product_public_categ_data.xml", + "views/view_odoo_module.xml", + "views/view_product_product.xml", + ], + "installable": True, +} diff --git a/apps_product_creator/data/ir_cron.xml b/apps_product_creator/data/ir_cron.xml new file mode 100644 index 0000000..413ae39 --- /dev/null +++ b/apps_product_creator/data/ir_cron.xml @@ -0,0 +1,18 @@ + + + + + + Create/Update product variants for each module version + + code + model.cron_create_product() + 1 + days + + + 2025-10-31 10:00:00 + + diff --git a/apps_product_creator/data/product_attribute.xml b/apps_product_creator/data/product_attribute.xml new file mode 100644 index 0000000..bd674af --- /dev/null +++ b/apps_product_creator/data/product_attribute.xml @@ -0,0 +1,69 @@ + + + + + + Odoo Version + + + 5.0 + + + + 6.0 + + + + 6.1 + + + + 7.0 + + + + 8.0 + + + + 9.0 + + + + 10.0 + + + + 11.0 + + + + 12.0 + + + + 13.0 + + + + 14.0 + + + + 15.0 + + + + 16.0 + + + + 17.0 + + + + 18.0 + + + diff --git a/apps_product_creator/data/product_public_categ_data.xml b/apps_product_creator/data/product_public_categ_data.xml new file mode 100644 index 0000000..1b2bcf1 --- /dev/null +++ b/apps_product_creator/data/product_public_categ_data.xml @@ -0,0 +1,76 @@ + + + + + Accounting + 1 + + + Discuss + 2 + + + Document Management + 3 + + + eCommerce + 4 + + + Human Resources + 5 + + + Industries + 6 + + + Localization + 7 + + + Manufacturing + 8 + + + Point of Sale + 9 + + + Productivity + 10 + + + Project + 11 + + + Purchases + 12 + + + Sales + 13 + + + Warehouse + 14 + + + Website + 15 + + + Extra Tools + 16 + + + Other + 17 + + diff --git a/apps_product_creator/i18n/apps_product_creator.pot b/apps_product_creator/i18n/apps_product_creator.pot new file mode 100644 index 0000000..d026941 --- /dev/null +++ b/apps_product_creator/i18n/apps_product_creator.pot @@ -0,0 +1,280 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * apps_product_creator +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 14.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: apps_product_creator +#: model:ir.model.fields,field_description:apps_product_creator.field_odoo_module__product_qty +msgid "# of Products" +msgstr "" + +#. module: apps_product_creator +#: model:product.attribute.value,name:apps_product_creator.odoo_version_100 +msgid "10.0" +msgstr "" + +#. module: apps_product_creator +#: model:product.attribute.value,name:apps_product_creator.odoo_version_110 +msgid "11.0" +msgstr "" + +#. module: apps_product_creator +#: model:product.attribute.value,name:apps_product_creator.odoo_version_120 +msgid "12.0" +msgstr "" + +#. module: apps_product_creator +#: model:product.attribute.value,name:apps_product_creator.odoo_version_130 +msgid "13.0" +msgstr "" + +#. module: apps_product_creator +#: model:product.attribute.value,name:apps_product_creator.odoo_version_140 +msgid "14.0" +msgstr "" + +#. module: apps_product_creator +#: model:product.attribute.value,name:apps_product_creator.odoo_version_50 +msgid "5.0" +msgstr "" + +#. module: apps_product_creator +#: model:product.attribute.value,name:apps_product_creator.odoo_version_60 +msgid "6.0" +msgstr "" + +#. module: apps_product_creator +#: model:product.attribute.value,name:apps_product_creator.odoo_version_61 +msgid "6.1" +msgstr "" + +#. module: apps_product_creator +#: model:product.attribute.value,name:apps_product_creator.odoo_version_70 +msgid "7.0" +msgstr "" + +#. module: apps_product_creator +#: model:product.attribute.value,name:apps_product_creator.odoo_version_80 +msgid "8.0" +msgstr "" + +#. module: apps_product_creator +#: model:product.attribute.value,name:apps_product_creator.odoo_version_90 +msgid "9.0" +msgstr "" + +#. module: apps_product_creator +#: model:product.public.category,name:apps_product_creator.accounting +msgid "Accounting" +msgstr "" + +#. module: apps_product_creator +#: model:ir.model.fields,field_description:apps_product_creator.field_product_product__app_author_ids +msgid "Authors" +msgstr "" + +#. module: apps_product_creator +#: model:ir.actions.server,name:apps_product_creator.cron_update_organization_ir_actions_server +#: model:ir.cron,cron_name:apps_product_creator.cron_update_organization +#: model:ir.cron,name:apps_product_creator.cron_update_organization +msgid "Create/Update product variants for each module version" +msgstr "" + +#. module: apps_product_creator +#: model:ir.model.fields,field_description:apps_product_creator.field_product_product__dependent_product_ids +msgid "Dependent Products" +msgstr "" + +#. module: apps_product_creator +#: model:product.public.category,name:apps_product_creator.discuss +msgid "Discuss" +msgstr "" + +#. module: apps_product_creator +#: model:ir.model.fields,field_description:apps_product_creator.field_odoo_module__display_name +#: model:ir.model.fields,field_description:apps_product_creator.field_odoo_module_version__display_name +#: model:ir.model.fields,field_description:apps_product_creator.field_product_product__display_name +#: model:ir.model.fields,field_description:apps_product_creator.field_product_template__display_name +msgid "Display Name" +msgstr "" + +#. module: apps_product_creator +#: model:product.public.category,name:apps_product_creator.document_management +msgid "Document Management" +msgstr "" + +#. module: apps_product_creator +#: model:product.public.category,name:apps_product_creator.extra_tools +msgid "Extra Tools" +msgstr "" + +#. module: apps_product_creator +#: model:ir.model.fields,field_description:apps_product_creator.field_product_product__app_github_url +msgid "Github URL" +msgstr "" + +#. module: apps_product_creator +#: model:ir.model.fields,field_description:apps_product_creator.field_product_product__app_description_rst_html +msgid "HTML of the RST Description" +msgstr "" + +#. module: apps_product_creator +#: model:product.public.category,name:apps_product_creator.human_resources +msgid "Human Resources" +msgstr "" + +#. module: apps_product_creator +#: model:ir.model.fields,field_description:apps_product_creator.field_odoo_module__id +#: model:ir.model.fields,field_description:apps_product_creator.field_odoo_module_version__id +#: model:ir.model.fields,field_description:apps_product_creator.field_product_product__id +#: model:ir.model.fields,field_description:apps_product_creator.field_product_template__id +msgid "ID" +msgstr "" + +#. module: apps_product_creator +#: model:product.public.category,name:apps_product_creator.industries +msgid "Industries" +msgstr "" + +#. module: apps_product_creator +#: model:ir.model.fields,field_description:apps_product_creator.field_odoo_module____last_update +#: model:ir.model.fields,field_description:apps_product_creator.field_odoo_module_version____last_update +#: model:ir.model.fields,field_description:apps_product_creator.field_product_product____last_update +#: model:ir.model.fields,field_description:apps_product_creator.field_product_template____last_update +msgid "Last Modified on" +msgstr "" + +#. module: apps_product_creator +#: model:ir.model.fields,field_description:apps_product_creator.field_product_product__app_license_id +msgid "License" +msgstr "" + +#. module: apps_product_creator +#: model:product.public.category,name:apps_product_creator.localization +msgid "Localization" +msgstr "" + +#. module: apps_product_creator +#: model:product.public.category,name:apps_product_creator.manufacturing +msgid "Manufacturing" +msgstr "" + +#. module: apps_product_creator +#: model_terms:ir.ui.view,arch_db:apps_product_creator.product_product_form_view +msgid "Module Informations" +msgstr "" + +#. module: apps_product_creator +#: model:ir.model.fields,field_description:apps_product_creator.field_product_product__app_development_status +msgid "Module maturity" +msgstr "" + +#. module: apps_product_creator +#: model:ir.model,name:apps_product_creator.model_odoo_module +#: model:ir.model.fields,field_description:apps_product_creator.field_product_product__odoo_module_id +#: model:ir.model.fields,field_description:apps_product_creator.field_product_template__odoo_module_id +msgid "Odoo Module" +msgstr "" + +#. module: apps_product_creator +#: model:ir.model,name:apps_product_creator.model_odoo_module_version +#: model:ir.model.fields,field_description:apps_product_creator.field_product_product__odoo_module_version_id +msgid "Odoo Module Version" +msgstr "" + +#. module: apps_product_creator +#: model:product.attribute,name:apps_product_creator.attribute_odoo_version +msgid "Odoo Version" +msgstr "" + +#. module: apps_product_creator +#: model:product.public.category,name:apps_product_creator.other +msgid "Other" +msgstr "" + +#. module: apps_product_creator +#: model:product.public.category,name:apps_product_creator.point_of_sale +msgid "Point of Sale" +msgstr "" + +#. module: apps_product_creator +#: model:ir.model,name:apps_product_creator.model_product_product +msgid "Product" +msgstr "" + +#. module: apps_product_creator +#: model:ir.model,name:apps_product_creator.model_product_template +#: model:ir.model.fields,field_description:apps_product_creator.field_odoo_module__product_template_id +msgid "Product Template" +msgstr "" + +#. module: apps_product_creator +#: model:product.public.category,name:apps_product_creator.productivity +msgid "Productivity" +msgstr "" + +#. module: apps_product_creator +#: model_terms:ir.ui.view,arch_db:apps_product_creator.odoo_module_form_view +msgid "Products" +msgstr "" + +#. module: apps_product_creator +#: model:product.public.category,name:apps_product_creator.project +msgid "Project" +msgstr "" + +#. module: apps_product_creator +#: model:product.public.category,name:apps_product_creator.purchases +msgid "Purchases" +msgstr "" + +#. module: apps_product_creator +#: model:product.public.category,name:apps_product_creator.sales +msgid "Sales" +msgstr "" + +#. module: apps_product_creator +#: model:ir.model.fields,field_description:apps_product_creator.field_product_product__app_summary +msgid "Summary (Manifest)" +msgstr "" + +#. module: apps_product_creator +#: model:ir.model.fields,field_description:apps_product_creator.field_product_product__technical_name +#: model:ir.model.fields,field_description:apps_product_creator.field_product_template__technical_name +msgid "Technical Name" +msgstr "" + +#. module: apps_product_creator +#: model:ir.model.fields,field_description:apps_product_creator.field_product_product__app_version +msgid "Version (Manifest)" +msgstr "" + +#. module: apps_product_creator +#: model:product.public.category,name:apps_product_creator.warehouse +msgid "Warehouse" +msgstr "" + +#. module: apps_product_creator +#: model:product.public.category,name:apps_product_creator.website +msgid "Website" +msgstr "" + +#. module: apps_product_creator +#: model:ir.model.fields,field_description:apps_product_creator.field_product_product__app_website +msgid "Website (Manifest)" +msgstr "" + +#. module: apps_product_creator +#: model:product.public.category,name:apps_product_creator.ecommerce +msgid "eCommerce" +msgstr "" diff --git a/apps_product_creator/i18n/es.po b/apps_product_creator/i18n/es.po new file mode 100644 index 0000000..0cc1747 --- /dev/null +++ b/apps_product_creator/i18n/es.po @@ -0,0 +1,286 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * apps_product_creator +# +# Translators: +# enjolras , 2018 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2018-02-10 01:37+0000\n" +"PO-Revision-Date: 2024-01-26 16:33+0000\n" +"Last-Translator: Ivorra78 \n" +"Language-Team: Spanish (https://www.transifex.com/oca/teams/23907/es/)\n" +"Language: es\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 4.17\n" + +#. module: apps_product_creator +#: model:ir.model.fields,field_description:apps_product_creator.field_odoo_module__product_qty +msgid "# of Products" +msgstr "Nº de productos" + +#. module: apps_product_creator +#: model:product.attribute.value,name:apps_product_creator.odoo_version_100 +msgid "10.0" +msgstr "10.0" + +#. module: apps_product_creator +#: model:product.attribute.value,name:apps_product_creator.odoo_version_110 +msgid "11.0" +msgstr "11.0" + +#. module: apps_product_creator +#: model:product.attribute.value,name:apps_product_creator.odoo_version_120 +msgid "12.0" +msgstr "12.0" + +#. module: apps_product_creator +#: model:product.attribute.value,name:apps_product_creator.odoo_version_130 +msgid "13.0" +msgstr "13.0" + +#. module: apps_product_creator +#: model:product.attribute.value,name:apps_product_creator.odoo_version_140 +msgid "14.0" +msgstr "14.0" + +#. module: apps_product_creator +#: model:product.attribute.value,name:apps_product_creator.odoo_version_50 +msgid "5.0" +msgstr "5.0" + +#. module: apps_product_creator +#: model:product.attribute.value,name:apps_product_creator.odoo_version_60 +msgid "6.0" +msgstr "6.0" + +#. module: apps_product_creator +#: model:product.attribute.value,name:apps_product_creator.odoo_version_61 +msgid "6.1" +msgstr "6.1" + +#. module: apps_product_creator +#: model:product.attribute.value,name:apps_product_creator.odoo_version_70 +msgid "7.0" +msgstr "7.0" + +#. module: apps_product_creator +#: model:product.attribute.value,name:apps_product_creator.odoo_version_80 +msgid "8.0" +msgstr "8.0" + +#. module: apps_product_creator +#: model:product.attribute.value,name:apps_product_creator.odoo_version_90 +msgid "9.0" +msgstr "9.0" + +#. module: apps_product_creator +#: model:product.public.category,name:apps_product_creator.accounting +msgid "Accounting" +msgstr "Contabilidad" + +#. module: apps_product_creator +#: model:ir.model.fields,field_description:apps_product_creator.field_product_product__app_author_ids +msgid "Authors" +msgstr "Autores" + +#. module: apps_product_creator +#: model:ir.actions.server,name:apps_product_creator.cron_update_organization_ir_actions_server +#: model:ir.cron,cron_name:apps_product_creator.cron_update_organization +#: model:ir.cron,name:apps_product_creator.cron_update_organization +msgid "Create/Update product variants for each module version" +msgstr "Crear/Actualizar variantes de producto para cada versión de módulo" + +#. module: apps_product_creator +#: model:ir.model.fields,field_description:apps_product_creator.field_product_product__dependent_product_ids +msgid "Dependent Products" +msgstr "Productos Dependientes" + +#. module: apps_product_creator +#: model:product.public.category,name:apps_product_creator.discuss +msgid "Discuss" +msgstr "Discutir" + +#. module: apps_product_creator +#: model:ir.model.fields,field_description:apps_product_creator.field_odoo_module__display_name +#: model:ir.model.fields,field_description:apps_product_creator.field_odoo_module_version__display_name +#: model:ir.model.fields,field_description:apps_product_creator.field_product_product__display_name +#: model:ir.model.fields,field_description:apps_product_creator.field_product_template__display_name +msgid "Display Name" +msgstr "Mostrar Nombre" + +#. module: apps_product_creator +#: model:product.public.category,name:apps_product_creator.document_management +msgid "Document Management" +msgstr "Gestión de Documentos" + +#. module: apps_product_creator +#: model:product.public.category,name:apps_product_creator.extra_tools +msgid "Extra Tools" +msgstr "Herramientas Extra" + +#. module: apps_product_creator +#: model:ir.model.fields,field_description:apps_product_creator.field_product_product__app_github_url +msgid "Github URL" +msgstr "URL de github" + +#. module: apps_product_creator +#: model:ir.model.fields,field_description:apps_product_creator.field_product_product__app_description_rst_html +msgid "HTML of the RST Description" +msgstr "HTML del RST Descripción" + +#. module: apps_product_creator +#: model:product.public.category,name:apps_product_creator.human_resources +msgid "Human Resources" +msgstr "Recursos Humanos" + +#. module: apps_product_creator +#: model:ir.model.fields,field_description:apps_product_creator.field_odoo_module__id +#: model:ir.model.fields,field_description:apps_product_creator.field_odoo_module_version__id +#: model:ir.model.fields,field_description:apps_product_creator.field_product_product__id +#: model:ir.model.fields,field_description:apps_product_creator.field_product_template__id +msgid "ID" +msgstr "ID" + +#. module: apps_product_creator +#: model:product.public.category,name:apps_product_creator.industries +msgid "Industries" +msgstr "Industrias" + +#. module: apps_product_creator +#: model:ir.model.fields,field_description:apps_product_creator.field_odoo_module____last_update +#: model:ir.model.fields,field_description:apps_product_creator.field_odoo_module_version____last_update +#: model:ir.model.fields,field_description:apps_product_creator.field_product_product____last_update +#: model:ir.model.fields,field_description:apps_product_creator.field_product_template____last_update +msgid "Last Modified on" +msgstr "Última Modificación el" + +#. module: apps_product_creator +#: model:ir.model.fields,field_description:apps_product_creator.field_product_product__app_license_id +msgid "License" +msgstr "Licencia" + +#. module: apps_product_creator +#: model:product.public.category,name:apps_product_creator.localization +msgid "Localization" +msgstr "Localización" + +#. module: apps_product_creator +#: model:product.public.category,name:apps_product_creator.manufacturing +msgid "Manufacturing" +msgstr "Fabricación" + +#. module: apps_product_creator +#: model_terms:ir.ui.view,arch_db:apps_product_creator.product_product_form_view +msgid "Module Informations" +msgstr "Informaciones del módulo" + +#. module: apps_product_creator +#: model:ir.model.fields,field_description:apps_product_creator.field_product_product__app_development_status +msgid "Module maturity" +msgstr "Madurez del módulo" + +#. module: apps_product_creator +#: model:ir.model,name:apps_product_creator.model_odoo_module +#: model:ir.model.fields,field_description:apps_product_creator.field_product_product__odoo_module_id +#: model:ir.model.fields,field_description:apps_product_creator.field_product_template__odoo_module_id +msgid "Odoo Module" +msgstr "Módulo Odoo" + +#. module: apps_product_creator +#: model:ir.model,name:apps_product_creator.model_odoo_module_version +#: model:ir.model.fields,field_description:apps_product_creator.field_product_product__odoo_module_version_id +msgid "Odoo Module Version" +msgstr "Versión del módulo Odoo" + +#. module: apps_product_creator +#: model:product.attribute,name:apps_product_creator.attribute_odoo_version +msgid "Odoo Version" +msgstr "Versión Odoo" + +#. module: apps_product_creator +#: model:product.public.category,name:apps_product_creator.other +msgid "Other" +msgstr "Otro" + +#. module: apps_product_creator +#: model:product.public.category,name:apps_product_creator.point_of_sale +msgid "Point of Sale" +msgstr "Punto de Venta" + +#. module: apps_product_creator +#: model:ir.model,name:apps_product_creator.model_product_product +msgid "Product" +msgstr "Producto" + +#. module: apps_product_creator +#: model:ir.model,name:apps_product_creator.model_product_template +#: model:ir.model.fields,field_description:apps_product_creator.field_odoo_module__product_template_id +msgid "Product Template" +msgstr "Plantilla de producto" + +#. module: apps_product_creator +#: model:product.public.category,name:apps_product_creator.productivity +msgid "Productivity" +msgstr "Productividad" + +#. module: apps_product_creator +#: model_terms:ir.ui.view,arch_db:apps_product_creator.odoo_module_form_view +msgid "Products" +msgstr "Productos" + +#. module: apps_product_creator +#: model:product.public.category,name:apps_product_creator.project +msgid "Project" +msgstr "Proyecto" + +#. module: apps_product_creator +#: model:product.public.category,name:apps_product_creator.purchases +msgid "Purchases" +msgstr "Compras" + +#. module: apps_product_creator +#: model:product.public.category,name:apps_product_creator.sales +msgid "Sales" +msgstr "Ventas" + +#. module: apps_product_creator +#: model:ir.model.fields,field_description:apps_product_creator.field_product_product__app_summary +msgid "Summary (Manifest)" +msgstr "Resumen (Manifiesto)" + +#. module: apps_product_creator +#: model:ir.model.fields,field_description:apps_product_creator.field_product_product__technical_name +#: model:ir.model.fields,field_description:apps_product_creator.field_product_template__technical_name +msgid "Technical Name" +msgstr "Nombre técnic" + +#. module: apps_product_creator +#: model:ir.model.fields,field_description:apps_product_creator.field_product_product__app_version +msgid "Version (Manifest)" +msgstr "Versión (Manifiesto)" + +#. module: apps_product_creator +#: model:product.public.category,name:apps_product_creator.warehouse +msgid "Warehouse" +msgstr "Almacén" + +#. module: apps_product_creator +#: model:product.public.category,name:apps_product_creator.website +msgid "Website" +msgstr "Página Web" + +#. module: apps_product_creator +#: model:ir.model.fields,field_description:apps_product_creator.field_product_product__app_website +msgid "Website (Manifest)" +msgstr "Página web (Manifiesto)" + +#. module: apps_product_creator +#: model:product.public.category,name:apps_product_creator.ecommerce +msgid "eCommerce" +msgstr "Comercio Electrónico" diff --git a/apps_product_creator/i18n/es_AR.po b/apps_product_creator/i18n/es_AR.po new file mode 100644 index 0000000..6d8d855 --- /dev/null +++ b/apps_product_creator/i18n/es_AR.po @@ -0,0 +1,283 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * apps_product_creator +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 13.0\n" +"Report-Msgid-Bugs-To: \n" +"PO-Revision-Date: 2020-07-28 01:19+0000\n" +"Last-Translator: Ignacio Buioli \n" +"Language-Team: none\n" +"Language: es_AR\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 3.10\n" + +#. module: apps_product_creator +#: model:ir.model.fields,field_description:apps_product_creator.field_odoo_module__product_qty +msgid "# of Products" +msgstr "# de Productos" + +#. module: apps_product_creator +#: model:product.attribute.value,name:apps_product_creator.odoo_version_100 +msgid "10.0" +msgstr "10.0" + +#. module: apps_product_creator +#: model:product.attribute.value,name:apps_product_creator.odoo_version_110 +msgid "11.0" +msgstr "11.0" + +#. module: apps_product_creator +#: model:product.attribute.value,name:apps_product_creator.odoo_version_120 +msgid "12.0" +msgstr "12.0" + +#. module: apps_product_creator +#: model:product.attribute.value,name:apps_product_creator.odoo_version_130 +msgid "13.0" +msgstr "13.0" + +#. module: apps_product_creator +#: model:product.attribute.value,name:apps_product_creator.odoo_version_140 +msgid "14.0" +msgstr "14.0" + +#. module: apps_product_creator +#: model:product.attribute.value,name:apps_product_creator.odoo_version_50 +msgid "5.0" +msgstr "5.0" + +#. module: apps_product_creator +#: model:product.attribute.value,name:apps_product_creator.odoo_version_60 +msgid "6.0" +msgstr "6.0" + +#. module: apps_product_creator +#: model:product.attribute.value,name:apps_product_creator.odoo_version_61 +msgid "6.1" +msgstr "6.1" + +#. module: apps_product_creator +#: model:product.attribute.value,name:apps_product_creator.odoo_version_70 +msgid "7.0" +msgstr "7.0" + +#. module: apps_product_creator +#: model:product.attribute.value,name:apps_product_creator.odoo_version_80 +msgid "8.0" +msgstr "8.0" + +#. module: apps_product_creator +#: model:product.attribute.value,name:apps_product_creator.odoo_version_90 +msgid "9.0" +msgstr "9.0" + +#. module: apps_product_creator +#: model:product.public.category,name:apps_product_creator.accounting +msgid "Accounting" +msgstr "Contabilidad" + +#. module: apps_product_creator +#: model:ir.model.fields,field_description:apps_product_creator.field_product_product__app_author_ids +msgid "Authors" +msgstr "Autores" + +#. module: apps_product_creator +#: model:ir.actions.server,name:apps_product_creator.cron_update_organization_ir_actions_server +#: model:ir.cron,cron_name:apps_product_creator.cron_update_organization +#: model:ir.cron,name:apps_product_creator.cron_update_organization +msgid "Create/Update product variants for each module version" +msgstr "Crear o Actualizar variantes de producto de cada versión del módulo" + +#. module: apps_product_creator +#: model:ir.model.fields,field_description:apps_product_creator.field_product_product__dependent_product_ids +msgid "Dependent Products" +msgstr "" + +#. module: apps_product_creator +#: model:product.public.category,name:apps_product_creator.discuss +msgid "Discuss" +msgstr "Discutir" + +#. module: apps_product_creator +#: model:ir.model.fields,field_description:apps_product_creator.field_odoo_module__display_name +#: model:ir.model.fields,field_description:apps_product_creator.field_odoo_module_version__display_name +#: model:ir.model.fields,field_description:apps_product_creator.field_product_product__display_name +#: model:ir.model.fields,field_description:apps_product_creator.field_product_template__display_name +msgid "Display Name" +msgstr "" + +#. module: apps_product_creator +#: model:product.public.category,name:apps_product_creator.document_management +msgid "Document Management" +msgstr "Gestionar Documento" + +#. module: apps_product_creator +#: model:product.public.category,name:apps_product_creator.extra_tools +msgid "Extra Tools" +msgstr "Herramientas Extra" + +#. module: apps_product_creator +#: model:ir.model.fields,field_description:apps_product_creator.field_product_product__app_github_url +msgid "Github URL" +msgstr "URL de Github" + +#. module: apps_product_creator +#: model:ir.model.fields,field_description:apps_product_creator.field_product_product__app_description_rst_html +msgid "HTML of the RST Description" +msgstr "HTML de la Descripción RST" + +#. module: apps_product_creator +#: model:product.public.category,name:apps_product_creator.human_resources +msgid "Human Resources" +msgstr "Recursos Humanos" + +#. module: apps_product_creator +#: model:ir.model.fields,field_description:apps_product_creator.field_odoo_module__id +#: model:ir.model.fields,field_description:apps_product_creator.field_odoo_module_version__id +#: model:ir.model.fields,field_description:apps_product_creator.field_product_product__id +#: model:ir.model.fields,field_description:apps_product_creator.field_product_template__id +msgid "ID" +msgstr "" + +#. module: apps_product_creator +#: model:product.public.category,name:apps_product_creator.industries +msgid "Industries" +msgstr "Industrias" + +#. module: apps_product_creator +#: model:ir.model.fields,field_description:apps_product_creator.field_odoo_module____last_update +#: model:ir.model.fields,field_description:apps_product_creator.field_odoo_module_version____last_update +#: model:ir.model.fields,field_description:apps_product_creator.field_product_product____last_update +#: model:ir.model.fields,field_description:apps_product_creator.field_product_template____last_update +msgid "Last Modified on" +msgstr "" + +#. module: apps_product_creator +#: model:ir.model.fields,field_description:apps_product_creator.field_product_product__app_license_id +msgid "License" +msgstr "Licencia" + +#. module: apps_product_creator +#: model:product.public.category,name:apps_product_creator.localization +msgid "Localization" +msgstr "Localización" + +#. module: apps_product_creator +#: model:product.public.category,name:apps_product_creator.manufacturing +msgid "Manufacturing" +msgstr "Fabricación" + +#. module: apps_product_creator +#: model_terms:ir.ui.view,arch_db:apps_product_creator.product_product_form_view +msgid "Module Informations" +msgstr "Información del Módulo" + +#. module: apps_product_creator +#: model:ir.model.fields,field_description:apps_product_creator.field_product_product__app_development_status +msgid "Module maturity" +msgstr "Madurez del módulo" + +#. module: apps_product_creator +#: model:ir.model,name:apps_product_creator.model_odoo_module +#: model:ir.model.fields,field_description:apps_product_creator.field_product_product__odoo_module_id +#: model:ir.model.fields,field_description:apps_product_creator.field_product_template__odoo_module_id +msgid "Odoo Module" +msgstr "Módulo de Odoo" + +#. module: apps_product_creator +#: model:ir.model,name:apps_product_creator.model_odoo_module_version +#: model:ir.model.fields,field_description:apps_product_creator.field_product_product__odoo_module_version_id +msgid "Odoo Module Version" +msgstr "Versión del Módulo de Odoo" + +#. module: apps_product_creator +#: model:product.attribute,name:apps_product_creator.attribute_odoo_version +msgid "Odoo Version" +msgstr "Versión de Odoo" + +#. module: apps_product_creator +#: model:product.public.category,name:apps_product_creator.other +msgid "Other" +msgstr "Otro" + +#. module: apps_product_creator +#: model:product.public.category,name:apps_product_creator.point_of_sale +msgid "Point of Sale" +msgstr "Punto de Venta" + +#. module: apps_product_creator +#: model:ir.model,name:apps_product_creator.model_product_product +msgid "Product" +msgstr "Producto" + +#. module: apps_product_creator +#: model:ir.model,name:apps_product_creator.model_product_template +#: model:ir.model.fields,field_description:apps_product_creator.field_odoo_module__product_template_id +msgid "Product Template" +msgstr "Plantilla del Producto" + +#. module: apps_product_creator +#: model:product.public.category,name:apps_product_creator.productivity +msgid "Productivity" +msgstr "Productividad" + +#. module: apps_product_creator +#: model_terms:ir.ui.view,arch_db:apps_product_creator.odoo_module_form_view +msgid "Products" +msgstr "Productos" + +#. module: apps_product_creator +#: model:product.public.category,name:apps_product_creator.project +msgid "Project" +msgstr "Proyecto" + +#. module: apps_product_creator +#: model:product.public.category,name:apps_product_creator.purchases +msgid "Purchases" +msgstr "Compras" + +#. module: apps_product_creator +#: model:product.public.category,name:apps_product_creator.sales +msgid "Sales" +msgstr "Ventas" + +#. module: apps_product_creator +#: model:ir.model.fields,field_description:apps_product_creator.field_product_product__app_summary +msgid "Summary (Manifest)" +msgstr "Resumen (Manifiesto)" + +#. module: apps_product_creator +#: model:ir.model.fields,field_description:apps_product_creator.field_product_product__technical_name +#: model:ir.model.fields,field_description:apps_product_creator.field_product_template__technical_name +msgid "Technical Name" +msgstr "Nombre Técnico" + +#. module: apps_product_creator +#: model:ir.model.fields,field_description:apps_product_creator.field_product_product__app_version +msgid "Version (Manifest)" +msgstr "Versión (Manifiesto)" + +#. module: apps_product_creator +#: model:product.public.category,name:apps_product_creator.warehouse +msgid "Warehouse" +msgstr "Depósito" + +#. module: apps_product_creator +#: model:product.public.category,name:apps_product_creator.website +msgid "Website" +msgstr "Sitio Web" + +#. module: apps_product_creator +#: model:ir.model.fields,field_description:apps_product_creator.field_product_product__app_website +msgid "Website (Manifest)" +msgstr "Sitio Web (Manifiesto)" + +#. module: apps_product_creator +#: model:product.public.category,name:apps_product_creator.ecommerce +msgid "eCommerce" +msgstr "Comercio Electrónico" diff --git a/apps_product_creator/i18n/fr.po b/apps_product_creator/i18n/fr.po new file mode 100644 index 0000000..541b474 --- /dev/null +++ b/apps_product_creator/i18n/fr.po @@ -0,0 +1,286 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * apps_product_creator +# +# Translators: +# Quentin THEURET , 2018 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2018-02-08 01:39+0000\n" +"PO-Revision-Date: 2018-02-08 01:39+0000\n" +"Last-Translator: Quentin THEURET , 2018\n" +"Language-Team: French (https://www.transifex.com/oca/teams/23907/fr/)\n" +"Language: fr\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" + +#. module: apps_product_creator +#: model:ir.model.fields,field_description:apps_product_creator.field_odoo_module__product_qty +msgid "# of Products" +msgstr "" + +#. module: apps_product_creator +#: model:product.attribute.value,name:apps_product_creator.odoo_version_100 +msgid "10.0" +msgstr "" + +#. module: apps_product_creator +#: model:product.attribute.value,name:apps_product_creator.odoo_version_110 +msgid "11.0" +msgstr "" + +#. module: apps_product_creator +#: model:product.attribute.value,name:apps_product_creator.odoo_version_120 +msgid "12.0" +msgstr "" + +#. module: apps_product_creator +#: model:product.attribute.value,name:apps_product_creator.odoo_version_130 +msgid "13.0" +msgstr "" + +#. module: apps_product_creator +#: model:product.attribute.value,name:apps_product_creator.odoo_version_140 +msgid "14.0" +msgstr "" + +#. module: apps_product_creator +#: model:product.attribute.value,name:apps_product_creator.odoo_version_50 +msgid "5.0" +msgstr "" + +#. module: apps_product_creator +#: model:product.attribute.value,name:apps_product_creator.odoo_version_60 +msgid "6.0" +msgstr "" + +#. module: apps_product_creator +#: model:product.attribute.value,name:apps_product_creator.odoo_version_61 +msgid "6.1" +msgstr "" + +#. module: apps_product_creator +#: model:product.attribute.value,name:apps_product_creator.odoo_version_70 +msgid "7.0" +msgstr "" + +#. module: apps_product_creator +#: model:product.attribute.value,name:apps_product_creator.odoo_version_80 +msgid "8.0" +msgstr "" + +#. module: apps_product_creator +#: model:product.attribute.value,name:apps_product_creator.odoo_version_90 +msgid "9.0" +msgstr "" + +#. module: apps_product_creator +#: model:product.public.category,name:apps_product_creator.accounting +msgid "Accounting" +msgstr "" + +#. module: apps_product_creator +#: model:ir.model.fields,field_description:apps_product_creator.field_product_product__app_author_ids +msgid "Authors" +msgstr "" + +#. module: apps_product_creator +#: model:ir.actions.server,name:apps_product_creator.cron_update_organization_ir_actions_server +#: model:ir.cron,cron_name:apps_product_creator.cron_update_organization +#: model:ir.cron,name:apps_product_creator.cron_update_organization +msgid "Create/Update product variants for each module version" +msgstr "" + +#. module: apps_product_creator +#: model:ir.model.fields,field_description:apps_product_creator.field_product_product__dependent_product_ids +msgid "Dependent Products" +msgstr "" + +#. module: apps_product_creator +#: model:product.public.category,name:apps_product_creator.discuss +msgid "Discuss" +msgstr "" + +#. module: apps_product_creator +#: model:ir.model.fields,field_description:apps_product_creator.field_odoo_module__display_name +#: model:ir.model.fields,field_description:apps_product_creator.field_odoo_module_version__display_name +#: model:ir.model.fields,field_description:apps_product_creator.field_product_product__display_name +#: model:ir.model.fields,field_description:apps_product_creator.field_product_template__display_name +msgid "Display Name" +msgstr "" + +#. module: apps_product_creator +#: model:product.public.category,name:apps_product_creator.document_management +msgid "Document Management" +msgstr "" + +#. module: apps_product_creator +#: model:product.public.category,name:apps_product_creator.extra_tools +msgid "Extra Tools" +msgstr "" + +#. module: apps_product_creator +#: model:ir.model.fields,field_description:apps_product_creator.field_product_product__app_github_url +msgid "Github URL" +msgstr "" + +#. module: apps_product_creator +#: model:ir.model.fields,field_description:apps_product_creator.field_product_product__app_description_rst_html +msgid "HTML of the RST Description" +msgstr "" + +#. module: apps_product_creator +#: model:product.public.category,name:apps_product_creator.human_resources +msgid "Human Resources" +msgstr "" + +#. module: apps_product_creator +#: model:ir.model.fields,field_description:apps_product_creator.field_odoo_module__id +#: model:ir.model.fields,field_description:apps_product_creator.field_odoo_module_version__id +#: model:ir.model.fields,field_description:apps_product_creator.field_product_product__id +#: model:ir.model.fields,field_description:apps_product_creator.field_product_template__id +msgid "ID" +msgstr "" + +#. module: apps_product_creator +#: model:product.public.category,name:apps_product_creator.industries +msgid "Industries" +msgstr "" + +#. module: apps_product_creator +#: model:ir.model.fields,field_description:apps_product_creator.field_odoo_module____last_update +#: model:ir.model.fields,field_description:apps_product_creator.field_odoo_module_version____last_update +#: model:ir.model.fields,field_description:apps_product_creator.field_product_product____last_update +#: model:ir.model.fields,field_description:apps_product_creator.field_product_template____last_update +msgid "Last Modified on" +msgstr "" + +#. module: apps_product_creator +#: model:ir.model.fields,field_description:apps_product_creator.field_product_product__app_license_id +msgid "License" +msgstr "" + +#. module: apps_product_creator +#: model:product.public.category,name:apps_product_creator.localization +msgid "Localization" +msgstr "" + +#. module: apps_product_creator +#: model:product.public.category,name:apps_product_creator.manufacturing +msgid "Manufacturing" +msgstr "" + +#. module: apps_product_creator +#: model_terms:ir.ui.view,arch_db:apps_product_creator.product_product_form_view +msgid "Module Informations" +msgstr "" + +#. module: apps_product_creator +#: model:ir.model.fields,field_description:apps_product_creator.field_product_product__app_development_status +msgid "Module maturity" +msgstr "" + +#. module: apps_product_creator +#: model:ir.model,name:apps_product_creator.model_odoo_module +#: model:ir.model.fields,field_description:apps_product_creator.field_product_product__odoo_module_id +#: model:ir.model.fields,field_description:apps_product_creator.field_product_template__odoo_module_id +msgid "Odoo Module" +msgstr "" + +#. module: apps_product_creator +#: model:ir.model,name:apps_product_creator.model_odoo_module_version +#: model:ir.model.fields,field_description:apps_product_creator.field_product_product__odoo_module_version_id +msgid "Odoo Module Version" +msgstr "" + +#. module: apps_product_creator +#: model:product.attribute,name:apps_product_creator.attribute_odoo_version +msgid "Odoo Version" +msgstr "" + +#. module: apps_product_creator +#: model:product.public.category,name:apps_product_creator.other +msgid "Other" +msgstr "" + +#. module: apps_product_creator +#: model:product.public.category,name:apps_product_creator.point_of_sale +msgid "Point of Sale" +msgstr "" + +#. module: apps_product_creator +#: model:ir.model,name:apps_product_creator.model_product_product +msgid "Product" +msgstr "Produit" + +#. module: apps_product_creator +#: model:ir.model,name:apps_product_creator.model_product_template +#: model:ir.model.fields,field_description:apps_product_creator.field_odoo_module__product_template_id +msgid "Product Template" +msgstr "" + +#. module: apps_product_creator +#: model:product.public.category,name:apps_product_creator.productivity +#, fuzzy +msgid "Productivity" +msgstr "Produit" + +#. module: apps_product_creator +#: model_terms:ir.ui.view,arch_db:apps_product_creator.odoo_module_form_view +msgid "Products" +msgstr "" + +#. module: apps_product_creator +#: model:product.public.category,name:apps_product_creator.project +msgid "Project" +msgstr "" + +#. module: apps_product_creator +#: model:product.public.category,name:apps_product_creator.purchases +msgid "Purchases" +msgstr "" + +#. module: apps_product_creator +#: model:product.public.category,name:apps_product_creator.sales +msgid "Sales" +msgstr "" + +#. module: apps_product_creator +#: model:ir.model.fields,field_description:apps_product_creator.field_product_product__app_summary +msgid "Summary (Manifest)" +msgstr "" + +#. module: apps_product_creator +#: model:ir.model.fields,field_description:apps_product_creator.field_product_product__technical_name +#: model:ir.model.fields,field_description:apps_product_creator.field_product_template__technical_name +msgid "Technical Name" +msgstr "" + +#. module: apps_product_creator +#: model:ir.model.fields,field_description:apps_product_creator.field_product_product__app_version +msgid "Version (Manifest)" +msgstr "" + +#. module: apps_product_creator +#: model:product.public.category,name:apps_product_creator.warehouse +msgid "Warehouse" +msgstr "" + +#. module: apps_product_creator +#: model:product.public.category,name:apps_product_creator.website +msgid "Website" +msgstr "" + +#. module: apps_product_creator +#: model:ir.model.fields,field_description:apps_product_creator.field_product_product__app_website +msgid "Website (Manifest)" +msgstr "" + +#. module: apps_product_creator +#: model:product.public.category,name:apps_product_creator.ecommerce +msgid "eCommerce" +msgstr "" diff --git a/apps_product_creator/i18n/it.po b/apps_product_creator/i18n/it.po new file mode 100644 index 0000000..1ec5c36 --- /dev/null +++ b/apps_product_creator/i18n/it.po @@ -0,0 +1,283 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * apps_product_creator +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 12.0\n" +"Report-Msgid-Bugs-To: \n" +"PO-Revision-Date: 2025-04-02 09:06+0000\n" +"Last-Translator: mymage \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.2\n" + +#. module: apps_product_creator +#: model:ir.model.fields,field_description:apps_product_creator.field_odoo_module__product_qty +msgid "# of Products" +msgstr "N° di prodotti" + +#. module: apps_product_creator +#: model:product.attribute.value,name:apps_product_creator.odoo_version_100 +msgid "10.0" +msgstr "10.0" + +#. module: apps_product_creator +#: model:product.attribute.value,name:apps_product_creator.odoo_version_110 +msgid "11.0" +msgstr "11.0" + +#. module: apps_product_creator +#: model:product.attribute.value,name:apps_product_creator.odoo_version_120 +msgid "12.0" +msgstr "12.0" + +#. module: apps_product_creator +#: model:product.attribute.value,name:apps_product_creator.odoo_version_130 +msgid "13.0" +msgstr "13.0" + +#. module: apps_product_creator +#: model:product.attribute.value,name:apps_product_creator.odoo_version_140 +msgid "14.0" +msgstr "14.0" + +#. module: apps_product_creator +#: model:product.attribute.value,name:apps_product_creator.odoo_version_50 +msgid "5.0" +msgstr "5.0" + +#. module: apps_product_creator +#: model:product.attribute.value,name:apps_product_creator.odoo_version_60 +msgid "6.0" +msgstr "6.0" + +#. module: apps_product_creator +#: model:product.attribute.value,name:apps_product_creator.odoo_version_61 +msgid "6.1" +msgstr "6.1" + +#. module: apps_product_creator +#: model:product.attribute.value,name:apps_product_creator.odoo_version_70 +msgid "7.0" +msgstr "7.0" + +#. module: apps_product_creator +#: model:product.attribute.value,name:apps_product_creator.odoo_version_80 +msgid "8.0" +msgstr "8.0" + +#. module: apps_product_creator +#: model:product.attribute.value,name:apps_product_creator.odoo_version_90 +msgid "9.0" +msgstr "9.0" + +#. module: apps_product_creator +#: model:product.public.category,name:apps_product_creator.accounting +msgid "Accounting" +msgstr "Contabilità" + +#. module: apps_product_creator +#: model:ir.model.fields,field_description:apps_product_creator.field_product_product__app_author_ids +msgid "Authors" +msgstr "Autori" + +#. module: apps_product_creator +#: model:ir.actions.server,name:apps_product_creator.cron_update_organization_ir_actions_server +#: model:ir.cron,cron_name:apps_product_creator.cron_update_organization +#: model:ir.cron,name:apps_product_creator.cron_update_organization +msgid "Create/Update product variants for each module version" +msgstr "Crea/Aggiorna le varianti prodotto per ciascuna versione del modulo" + +#. module: apps_product_creator +#: model:ir.model.fields,field_description:apps_product_creator.field_product_product__dependent_product_ids +msgid "Dependent Products" +msgstr "Prodotti dipendenti" + +#. module: apps_product_creator +#: model:product.public.category,name:apps_product_creator.discuss +msgid "Discuss" +msgstr "Comunicazioni" + +#. module: apps_product_creator +#: model:ir.model.fields,field_description:apps_product_creator.field_odoo_module__display_name +#: model:ir.model.fields,field_description:apps_product_creator.field_odoo_module_version__display_name +#: model:ir.model.fields,field_description:apps_product_creator.field_product_product__display_name +#: model:ir.model.fields,field_description:apps_product_creator.field_product_template__display_name +msgid "Display Name" +msgstr "Nome visualizzato" + +#. module: apps_product_creator +#: model:product.public.category,name:apps_product_creator.document_management +msgid "Document Management" +msgstr "Gestione documentale" + +#. module: apps_product_creator +#: model:product.public.category,name:apps_product_creator.extra_tools +msgid "Extra Tools" +msgstr "Strumenti aggiuntivi" + +#. module: apps_product_creator +#: model:ir.model.fields,field_description:apps_product_creator.field_product_product__app_github_url +msgid "Github URL" +msgstr "URL GitHub" + +#. module: apps_product_creator +#: model:ir.model.fields,field_description:apps_product_creator.field_product_product__app_description_rst_html +msgid "HTML of the RST Description" +msgstr "HTML della descrizione RST" + +#. module: apps_product_creator +#: model:product.public.category,name:apps_product_creator.human_resources +msgid "Human Resources" +msgstr "Risorse umane" + +#. module: apps_product_creator +#: model:ir.model.fields,field_description:apps_product_creator.field_odoo_module__id +#: model:ir.model.fields,field_description:apps_product_creator.field_odoo_module_version__id +#: model:ir.model.fields,field_description:apps_product_creator.field_product_product__id +#: model:ir.model.fields,field_description:apps_product_creator.field_product_template__id +msgid "ID" +msgstr "ID" + +#. module: apps_product_creator +#: model:product.public.category,name:apps_product_creator.industries +msgid "Industries" +msgstr "Settori" + +#. module: apps_product_creator +#: model:ir.model.fields,field_description:apps_product_creator.field_odoo_module____last_update +#: model:ir.model.fields,field_description:apps_product_creator.field_odoo_module_version____last_update +#: model:ir.model.fields,field_description:apps_product_creator.field_product_product____last_update +#: model:ir.model.fields,field_description:apps_product_creator.field_product_template____last_update +msgid "Last Modified on" +msgstr "Ultima modifica il" + +#. module: apps_product_creator +#: model:ir.model.fields,field_description:apps_product_creator.field_product_product__app_license_id +msgid "License" +msgstr "Licenza" + +#. module: apps_product_creator +#: model:product.public.category,name:apps_product_creator.localization +msgid "Localization" +msgstr "Localizzazione" + +#. module: apps_product_creator +#: model:product.public.category,name:apps_product_creator.manufacturing +msgid "Manufacturing" +msgstr "Produzione" + +#. module: apps_product_creator +#: model_terms:ir.ui.view,arch_db:apps_product_creator.product_product_form_view +msgid "Module Informations" +msgstr "Informazioni modulo" + +#. module: apps_product_creator +#: model:ir.model.fields,field_description:apps_product_creator.field_product_product__app_development_status +msgid "Module maturity" +msgstr "Maturità modulo" + +#. module: apps_product_creator +#: model:ir.model,name:apps_product_creator.model_odoo_module +#: model:ir.model.fields,field_description:apps_product_creator.field_product_product__odoo_module_id +#: model:ir.model.fields,field_description:apps_product_creator.field_product_template__odoo_module_id +msgid "Odoo Module" +msgstr "Modulo Odoo" + +#. module: apps_product_creator +#: model:ir.model,name:apps_product_creator.model_odoo_module_version +#: model:ir.model.fields,field_description:apps_product_creator.field_product_product__odoo_module_version_id +msgid "Odoo Module Version" +msgstr "Versione modulo Odoo" + +#. module: apps_product_creator +#: model:product.attribute,name:apps_product_creator.attribute_odoo_version +msgid "Odoo Version" +msgstr "Versione Odoo" + +#. module: apps_product_creator +#: model:product.public.category,name:apps_product_creator.other +msgid "Other" +msgstr "Altro" + +#. module: apps_product_creator +#: model:product.public.category,name:apps_product_creator.point_of_sale +msgid "Point of Sale" +msgstr "Punto vendita" + +#. module: apps_product_creator +#: model:ir.model,name:apps_product_creator.model_product_product +msgid "Product" +msgstr "Prodotto" + +#. module: apps_product_creator +#: model:ir.model,name:apps_product_creator.model_product_template +#: model:ir.model.fields,field_description:apps_product_creator.field_odoo_module__product_template_id +msgid "Product Template" +msgstr "Modello prodotto" + +#. module: apps_product_creator +#: model:product.public.category,name:apps_product_creator.productivity +msgid "Productivity" +msgstr "Produttività" + +#. module: apps_product_creator +#: model_terms:ir.ui.view,arch_db:apps_product_creator.odoo_module_form_view +msgid "Products" +msgstr "Prodotti" + +#. module: apps_product_creator +#: model:product.public.category,name:apps_product_creator.project +msgid "Project" +msgstr "Progetto" + +#. module: apps_product_creator +#: model:product.public.category,name:apps_product_creator.purchases +msgid "Purchases" +msgstr "Acquisti" + +#. module: apps_product_creator +#: model:product.public.category,name:apps_product_creator.sales +msgid "Sales" +msgstr "Vendite" + +#. module: apps_product_creator +#: model:ir.model.fields,field_description:apps_product_creator.field_product_product__app_summary +msgid "Summary (Manifest)" +msgstr "Riepilogo (manifest)" + +#. module: apps_product_creator +#: model:ir.model.fields,field_description:apps_product_creator.field_product_product__technical_name +#: model:ir.model.fields,field_description:apps_product_creator.field_product_template__technical_name +msgid "Technical Name" +msgstr "Nome tecnico" + +#. module: apps_product_creator +#: model:ir.model.fields,field_description:apps_product_creator.field_product_product__app_version +msgid "Version (Manifest)" +msgstr "Versione (manifest)" + +#. module: apps_product_creator +#: model:product.public.category,name:apps_product_creator.warehouse +msgid "Warehouse" +msgstr "Magazzino" + +#. module: apps_product_creator +#: model:product.public.category,name:apps_product_creator.website +msgid "Website" +msgstr "Sito web" + +#. module: apps_product_creator +#: model:ir.model.fields,field_description:apps_product_creator.field_product_product__app_website +msgid "Website (Manifest)" +msgstr "Sito web (manifest)" + +#. module: apps_product_creator +#: model:product.public.category,name:apps_product_creator.ecommerce +msgid "eCommerce" +msgstr "E-commerce" diff --git a/apps_product_creator/models/__init__.py b/apps_product_creator/models/__init__.py new file mode 100644 index 0000000..16115c1 --- /dev/null +++ b/apps_product_creator/models/__init__.py @@ -0,0 +1,4 @@ +from . import product_template +from . import product_product +from . import odoo_module +from . import odoo_module_version diff --git a/apps_product_creator/models/odoo_module.py b/apps_product_creator/models/odoo_module.py new file mode 100644 index 0000000..841b8bc --- /dev/null +++ b/apps_product_creator/models/odoo_module.py @@ -0,0 +1,183 @@ +# Copyright (C) 2017-Today: Odoo Community Association (OCA) +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). +from odoo import api, fields, models + + +class OdooModule(models.Model): + _inherit = "odoo.module" + + @api.depends("product_template_id", "product_template_id.product_variant_ids") + def _compute_product_qty(self): + for module in self: + module.product_qty = len(module.product_template_id.product_variant_ids) + + product_template_id = fields.Many2one( + "product.template", + "Product Template", + ) + product_qty = fields.Integer( + "# of Products", compute="_compute_product_qty", store=True + ) + + def action_view_products(self): + action = self.env.ref("product.product_normal_action_sell") + result = action.read()[0] + product_ids = self.mapped("product_template_id.product_variant_ids").ids + # choose the view_mode accordingly + if len(product_ids) > 1: + result["domain"] = "[('id','in', %s)]" % str(product_ids) + elif len(product_ids) == 1: + res = self.env.ref("product.product_normal_form_view", False) + result["views"] = [(res and res.id or False, "form")] + result["res_id"] = product_ids[0] + return result + + def action_create_product(self): + self._create_product() + + def action_update_product(self): + self._update_product() + + def _create_product(self): + """ + Create the product template related to the module in current recordset. + :return: product.template recordset + """ + new_products = self.env["product.template"] + modules_without_product_template = self.filtered( + lambda m: not m.product_template_id + ) + domain = [ + ("odoo_module_id", "in", modules_without_product_template.ids), + ] + matching_products = ( + self.env["product.template"].with_context(active_test=False).search(domain) + ) + for odoo_module in modules_without_product_template: + product = matching_products.filtered( + lambda p: p.odoo_module_id == odoo_module + ) + # odoo_module_id and product_template_id are set in the same + # transaction this condition is mainly true in most cases + if not product and not odoo_module.product_template_id: + product_values = odoo_module._prepare_template() + new_product = self.env["product.template"].create(product_values) + odoo_module.write({"product_template_id": new_product.id}) + new_products |= new_product + self.product_template_id.write( + { + "active": True, + "website_published": True, + } + ) + return new_products + + def _update_product(self): + attribute = self.env.ref("apps_product_creator.attribute_odoo_version") + attribute_val = self.env["product.attribute.value"] + modules = self.filtered("product_template_id") + self._update_series_product_attribute_values() + for module in modules: + series = module.module_version_ids.mapped( + "repository_branch_id.organization_serie_id.name" + ) + product = module.product_template_id + att_line = product.attribute_line_ids.filtered( + lambda a: a.attribute_id.id == attribute.id + ) + att_vals = att_line.mapped("value_ids.name") + to_update_vals = list(set(series) - set(att_vals)) + att_val_ids = attribute_val.search( + [("name", "in", to_update_vals), ("attribute_id", "=", attribute.id)] + ) + att_line.write({"value_ids": [[4, record.id] for record in att_val_ids]}) + product._create_variant_ids() + product.active = True + product.website_published = True + no_version_variants = product.product_variant_ids.filtered( + lambda variant: not variant.odoo_module_version_id + ) + for variant in no_version_variants: + values = variant.product_template_attribute_value_ids.product_attribute_value_id + for value in values: + version = self.env["product.product"]._get_version_with_attribute( + module.module_version_ids, value + ) + if version: + variant.odoo_module_version_id = version + break + + @api.model + def _update_series_product_attribute_values(self): + attribute = self.env.ref("apps_product_creator.attribute_odoo_version") + attribute_val = self.env["product.attribute.value"] + series = self.env["github.organization.serie"].search([]) + for serie in series: + attribute_val = attribute_val.search([("name", "=", serie.name)], limit=1) + if not attribute_val: + attribute_val.create({"name": serie.name, "attribute_id": attribute.id}) + + def _prepare_template(self): + """ + Create the dict to create a product.template recordset based on the + current recordset. + The values dict contains info to link the future product with the + current module. It also fill the name of the future product with the + name of the current module. + :return: dict + """ + self.ensure_one() + attribute_obj = self.env["product.attribute.value"] + categ_obj = self.env["product.public.category"] + series = self.module_version_ids.mapped( + "repository_branch_id.organization_serie_id.name" + ) + attributes = attribute_obj.search([("name", "in", series)]) + attribute = self.env.ref("apps_product_creator.attribute_odoo_version") + attribute_line_values = { + "attribute_id": attribute.id, + "value_ids": [(6, 0, attributes.ids)], + } + version_categ = self.module_version_ids.mapped("category_id") + category = False + if version_categ: + category = categ_obj.search([("name", "=", version_categ[0].name)], limit=1) + if not category: + category = self.env.ref("apps_product_creator.other") + values = { + "odoo_module_id": self.id, + "type": "service", + "name": self.name, + "purchase_ok": False, + "list_price": 0, + "standard_price": 0, + "image_1920": self.image, + "attribute_line_ids": [(0, 0, attribute_line_values)], + "public_categ_ids": [(4, category._ids)] or None, + "website_published": True, + } + return values + + def write(self, values): + to_update = "image" in values + result = super().write(values) + if to_update: + for odoo_module in self.filtered("product_template_id"): + odoo_module.product_template_id.write({"image_1920": odoo_module.image}) + return result + + @api.model + def cron_create_product(self): + modules = self.search( + [("product_template_id", "=", False), ("module_version_qty", "!=", 0)] + ) + modules.action_create_product() + # Calling Update product for updating/creating new product Variants + # based on new versions added + modules = self.search([("module_version_qty", "!=", 0)]) + modules.action_update_product() + return True + + @api.model + def cron_update_product(self): + return True diff --git a/apps_product_creator/models/odoo_module_version.py b/apps_product_creator/models/odoo_module_version.py new file mode 100644 index 0000000..f9f7155 --- /dev/null +++ b/apps_product_creator/models/odoo_module_version.py @@ -0,0 +1,26 @@ +# Copyright (C) 2017-Today: Odoo Community Association (OCA), BizzAppDev +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). +from odoo import models + + +class OdooModuleVersion(models.Model): + _inherit = "odoo.module.version" + + def _process_clean_module_version(self): + product_obj = self.env["product.product"] + for module_version in self: + product = product_obj.search( + [("odoo_module_version_id", "=", module_version.id)] + ) + product.write({"active": False}) + active_variants = product_obj.search_count( + [ + ("product_tmpl_id", "=", product.product_tmpl_id.id), + ("active", "=", True), + ] + ) + if not active_variants: + product.product_tmpl_id.write( + {"active": False, "website_published": False} + ) + return super()._process_clean_module_version() diff --git a/apps_product_creator/models/product_product.py b/apps_product_creator/models/product_product.py new file mode 100644 index 0000000..353af54 --- /dev/null +++ b/apps_product_creator/models/product_product.py @@ -0,0 +1,259 @@ +# Copyright (C) 2017-Today: Odoo Community Association (OCA) +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). +import lxml + +from odoo import api, fields, models + + +def urljoin(*args): + """ + Joins given arguments into an url. Trailing but not leading slashes are + stripped for each argument. + """ + + return "/".join(map(lambda x: str(x).rstrip("/"), args)) + + +def hook_github_image_url(rst_desc, github_url): + html_node = lxml.html.fromstring(rst_desc) + github_url = github_url.replace("/tree/", "/blob/") + for node in html_node.xpath("//img"): + if not node.attrib["src"].startswith("/"): + continue + node.attrib["src"] = urljoin( + github_url, "/".join(node.attrib["src"].split("/")[2:]), "?raw=true" + ) + return lxml.html.tostring(html_node) + + +class ProductProduct(models.Model): + _inherit = "product.product" + + odoo_module_version_id = fields.Many2one( + "odoo.module.version", + "Odoo Module Version", + ) + app_license_id = fields.Many2one( + comodel_name="odoo.license", + string="License", + readonly=True, + related="odoo_module_version_id.license_id", + store=True, + ) + app_summary = fields.Char( + "Summary (Manifest)", + readonly=True, + related="odoo_module_version_id.summary", + store=True, + ) + app_website = fields.Char( + "Website (Manifest)", + readonly=True, + related="odoo_module_version_id.website", + store=True, + ) + app_description_rst_html = fields.Html( + "HTML of the RST Description", + compute="_compute_app_description_rst_html", + readonly=True, + store=True, + ) + app_version = fields.Char( + "Version (Manifest)", + readonly=True, + related="odoo_module_version_id.version", + store=True, + ) + app_author_ids = fields.Many2many( + string="Authors", + comodel_name="odoo.author", + relation="product_module_author_rel", + column1="product_id", + column2="author_id", + related="odoo_module_version_id.author_ids", + store=True, + ondelete="cascade", + ) + app_github_url = fields.Char( + "Github URL", + readonly=True, + related="odoo_module_version_id.github_url", + store=True, + ) + app_development_status = fields.Selection( + string="Module maturity", + readonly=True, + related="odoo_module_version_id.development_status", + store=True, + ) + dependent_product_ids = fields.Many2many( + "product.product", + "product_product_dependent_rel", + "src_id", + "dest_id", + string="Dependent Products", + ) + + @api.depends( + "odoo_module_version_id", "odoo_module_version_id.description_rst_html" + ) + def _compute_app_description_rst_html(self): + for product in self: + rst_desc = product.odoo_module_version_id.description_rst_html + if rst_desc and " 1: + attr_ids = attr_raw_ids[0][2] + attributes = attr_obj.browse(attr_ids) + # We should have 0 or 1 result maximum. Because we compare id. + attribute = attributes.filtered( + lambda a: a.product_attribute_value_id.attribute_id.id + == version_attribute.id + ) + return attribute.product_attribute_value_id diff --git a/apps_product_creator/models/product_template.py b/apps_product_creator/models/product_template.py new file mode 100644 index 0000000..74a9ccb --- /dev/null +++ b/apps_product_creator/models/product_template.py @@ -0,0 +1,18 @@ +# Copyright (C) 2017-Today: Odoo Community Association (OCA) +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). +from odoo import fields, models + + +class ProductTemplate(models.Model): + _inherit = "product.template" + + odoo_module_id = fields.Many2one( + "odoo.module", + "Odoo Module", + readonly=True, + ) + technical_name = fields.Char( + "Technical Name", + related="odoo_module_id.technical_name", + store=True, + ) diff --git a/apps_product_creator/pyproject.toml b/apps_product_creator/pyproject.toml new file mode 100644 index 0000000..4231d0c --- /dev/null +++ b/apps_product_creator/pyproject.toml @@ -0,0 +1,3 @@ +[build-system] +requires = ["whool"] +build-backend = "whool.buildapi" diff --git a/apps_product_creator/readme/CONFIGURE.md b/apps_product_creator/readme/CONFIGURE.md new file mode 100644 index 0000000..59c8363 --- /dev/null +++ b/apps_product_creator/readme/CONFIGURE.md @@ -0,0 +1,6 @@ +There's an scheduled action that creates the product, disabled by +default. For enabling it: + +1. Go to *Settings \> Technical \> Automation \> Scheduled Actions*. +2. Locate "Create/Update product variants for each module version" and + access its form. diff --git a/apps_product_creator/readme/CONTRIBUTORS.md b/apps_product_creator/readme/CONTRIBUTORS.md new file mode 100644 index 0000000..ddc4daf --- /dev/null +++ b/apps_product_creator/readme/CONTRIBUTORS.md @@ -0,0 +1,14 @@ +- Alex Comba \<\> +- Antonio Esposito \<\> +- Eric Caudal \<\> +- François Honoré \<\> +- Nicola Malcontenti \<\> +- Roel Adriaans \<\> +- Ruchir Shukla \<\> +- [Tecnativa](https://www.tecnativa.com): + - Victor M.M. Torres + - Carlos Roca + - Alexandre D. Díaz + - Ernesto Tejeda +- [PyTech](https://www.pytech.it): + - Simone Rubino \<\> diff --git a/apps_product_creator/readme/CREDITS.md b/apps_product_creator/readme/CREDITS.md new file mode 100644 index 0000000..a64e54d --- /dev/null +++ b/apps_product_creator/readme/CREDITS.md @@ -0,0 +1,4 @@ +## Images + +- Odoo Community Association: + [Icon](https://github.com/OCA/maintainer-tools/blob/master/template/module/static/description/icon.svg). diff --git a/apps_product_creator/readme/DESCRIPTION.md b/apps_product_creator/readme/DESCRIPTION.md new file mode 100644 index 0000000..89648da --- /dev/null +++ b/apps_product_creator/readme/DESCRIPTION.md @@ -0,0 +1,3 @@ +This module extends the functionality of the module Github connector to +create a product for every module found. A variant is also created for +every version of the module. diff --git a/apps_product_creator/readme/HISTORY.md b/apps_product_creator/readme/HISTORY.md new file mode 100644 index 0000000..2b447e1 --- /dev/null +++ b/apps_product_creator/readme/HISTORY.md @@ -0,0 +1,20 @@ +## 14.0.1.0.0 (2021-08-02) + +- Migration to 14.0 + +## 13.0.1.0.0 (2020-07-10) + +- Migration to 13.0 + +## 12.0.1.0.0 (2019-04-10) + +- Migration to 12.0 + +## 11.0.1.1.2 (2018-10-02) + +- Publish the modules automatically on the website + +## 11.0.1.1.0 (2018-10-02) + +- \[ADD\] Added dependency on github_connector_oca to display + development_status ([\#19](https://github.com/OCA/apps-store/pull/19)) diff --git a/apps_product_creator/readme/USAGE.md b/apps_product_creator/readme/USAGE.md new file mode 100644 index 0000000..5fdc397 --- /dev/null +++ b/apps_product_creator/readme/USAGE.md @@ -0,0 +1,13 @@ +To see the module working + +> - Import some modules with +> [github_connector](https://odoo-community.org/shop/product/1024) + +1. Run manually the scheduled action mentioned on the configure section + or wait until its execution. +2. Go to *Website \> Products \> Products*. +3. Click on Filters \> Add Custom Filter, and apply the filter "Odoo + Module" \> "is set". +4. You will see the created products in the list. + +> Now you can see the products created. diff --git a/apps_product_creator/static/description/icon.png b/apps_product_creator/static/description/icon.png new file mode 100644 index 0000000..3a0328b Binary files /dev/null and b/apps_product_creator/static/description/icon.png differ diff --git a/apps_product_creator/static/description/index.html b/apps_product_creator/static/description/index.html new file mode 100644 index 0000000..15fbe3f --- /dev/null +++ b/apps_product_creator/static/description/index.html @@ -0,0 +1,532 @@ + + + + + +Github product creator + + + +
+

Github product creator

+ + +

Beta License: AGPL-3 OCA/apps-store Translate me on Weblate Try me on Runboat

+

This module extends the functionality of the module Github connector to +create a product for every module found. A variant is also created for +every version of the module.

+

Table of contents

+ +
+

Configuration

+

There’s an scheduled action that creates the product, disabled by +default. For enabling it:

+
    +
  1. Go to Settings > Technical > Automation > Scheduled Actions.
  2. +
  3. Locate “Create/Update product variants for each module version” and +access its form.
  4. +
+
+
+

Usage

+

To see the module working

+
+ +
+
    +
  1. Run manually the scheduled action mentioned on the configure section +or wait until its execution.
  2. +
  3. Go to Website > Products > Products.
  4. +
  5. Click on Filters > Add Custom Filter, and apply the filter “Odoo +Module” > “is set”.
  6. +
  7. You will see the created products in the list.
  8. +
+ +
+Now you can see the products created.
+
+
+

Changelog

+
+

14.0.1.0.0 (2021-08-02)

+
    +
  • Migration to 14.0
  • +
+
+
+

13.0.1.0.0 (2020-07-10)

+
    +
  • Migration to 13.0
  • +
+
+
+

12.0.1.0.0 (2019-04-10)

+
    +
  • Migration to 12.0
  • +
+
+
+

11.0.1.1.2 (2018-10-02)

+
    +
  • Publish the modules automatically on the website
  • +
+
+
+

11.0.1.1.0 (2018-10-02)

+
    +
  • [ADD] Added dependency on github_connector_oca to display +development_status +(#19)
  • +
+
+
+
+

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

+
    +
  • BizzAppDev
  • +
+
+
+

Contributors

+ +
+
+

Other credits

+
+

Images

+
    +
  • Odoo Community Association: +Icon.
  • +
+
+
+
+

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/apps-store project on GitHub.

+

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

+
+
+
+ + diff --git a/apps_product_creator/tests/__init__.py b/apps_product_creator/tests/__init__.py new file mode 100644 index 0000000..9ada031 --- /dev/null +++ b/apps_product_creator/tests/__init__.py @@ -0,0 +1,3 @@ +# Copyright (C) 2017-Today: Odoo Community Association (OCA) +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). +from . import test_apps_product_creator diff --git a/apps_product_creator/tests/common.py b/apps_product_creator/tests/common.py new file mode 100644 index 0000000..aca1bdc --- /dev/null +++ b/apps_product_creator/tests/common.py @@ -0,0 +1,81 @@ +# Copyright (C) 2017-Today: Odoo Community Association (OCA) +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). +from odoo.tests.common import TransactionCase +from odoo.tools import config + + +class Common(TransactionCase): + @classmethod + def setUpClass(cls): + super().setUpClass() + # Trick this configuration value for avoiding an error + config["source_code_local_path"] = "/tmp/" + cls.organization1 = cls.env["github.organization"].create( + {"name": "Organization 1", "github_name": "login"} + ) + + cls.organization_serie1 = cls.env["github.organization.serie"].create( + {"name": "12.0", "sequence": 1, "organization_id": cls.organization1.id} + ) + + cls.repository1 = cls.env["github.repository"].create( + {"name": "Repository1", "organization_id": cls.organization1.id} + ) + + cls.branch1 = cls.env["github.repository.branch"].create( + { + "name": "12.0", + "repository_id": cls.repository1.id, + "organization_id": cls.organization1.id, + } + ) + + cls.odoo_module2 = cls.env["odoo.module"].create( + {"technical_name": "odoo_module2"} + ) + + cls.odoo_module1_version2 = cls.env["odoo.module.version"].create( + { + "name": "Odoo Module 2", + "technical_name": "odoo_module2", + "module_id": cls.odoo_module2.id, + "repository_branch_id": cls.branch1.id, + "license": "AGPL-3", + "summary": "Summary Test", + "website": "Website Test", + "description_rst": "Description Test", + "version": "10.0", + "author": "OCA", + "depends": "base", + "external_dependencies": "{}", + "full_module_path": "/repo/10.0/odoo_module_2", + } + ) + + cls.odoo_module1 = cls.env["odoo.module"].create( + { + "technical_name": "odoo_module1", + "dependence_module_version_ids": [ + (6, 0, [cls.odoo_module1_version2.id]) + ], + } + ) + + cls.odoo_module1_version1 = cls.env["odoo.module.version"].create( + { + "name": "Odoo Module 1", + "technical_name": "odoo_module1", + "module_id": cls.odoo_module1.id, + "repository_branch_id": cls.branch1.id, + "license": "AGPL-3", + "summary": "Summary Test", + "website": "Website Test", + "description_rst": "Description Test", + "version": "10.0", + "author": "OCA", + "depends": "base", + "external_dependencies": "{}", + "full_module_path": "/repo/10.0/odoo_module_1", + } + ) + cls.odoo_module2.action_create_product() diff --git a/apps_product_creator/tests/test_apps_product_creator.py b/apps_product_creator/tests/test_apps_product_creator.py new file mode 100644 index 0000000..17bbc18 --- /dev/null +++ b/apps_product_creator/tests/test_apps_product_creator.py @@ -0,0 +1,53 @@ +# Copyright (C) 2017-Today: Odoo Community Association (OCA) +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). + +from .common import Common + + +class TestAppsProductCreator(Common): + def test1_product_create(self): + self.assertFalse(self.odoo_module1.product_template_id) + self.odoo_module1.action_create_product() + self.assertTrue(self.odoo_module1.product_template_id) + action = self.odoo_module1.action_view_products() + self.assertEqual( + self.odoo_module1.product_template_id.product_variant_ids.ids[0], + action["res_id"], + ) + + def test_process_clean_module_version(self): + self.assertTrue(self.odoo_module2.product_template_id) + self.odoo_module1_version2._process_clean_module_version() + self.assertFalse(self.odoo_module1.product_template_id.active) + self.assertFalse(self.odoo_module1.product_template_id.website_published) + + def test_action_create_product_active_product(self): + self.odoo_module1_version2._process_clean_module_version() + self.odoo_module2.action_create_product() + self.assertTrue(self.odoo_module2.product_template_id.active) + self.assertTrue(self.odoo_module2.product_template_id.website_published) + + def test_odoo_module_update_product(self): + self.odoo_module1_version2._process_clean_module_version() + self.odoo_module2._update_product() + self.assertTrue(self.odoo_module2.product_template_id.active) + self.assertTrue(self.odoo_module2.product_template_id.website_published) + + def test_restore_variant_module_version(self): + # Arrange + module = self.odoo_module2 + module.action_create_product() + template = module.product_template_id + variant = template.product_variant_ids + module_version = variant.odoo_module_version_id + variant.odoo_module_version_id = False + # pre-condition + self.assertEqual(len(variant), 1) + self.assertFalse(variant.odoo_module_version_id) + self.assertTrue(module_version) + + # Act + module._update_product() + + # Assert + self.assertEqual(variant.odoo_module_version_id, module_version) diff --git a/apps_product_creator/views/view_odoo_module.xml b/apps_product_creator/views/view_odoo_module.xml new file mode 100644 index 0000000..63c44ff --- /dev/null +++ b/apps_product_creator/views/view_odoo_module.xml @@ -0,0 +1,25 @@ + + + + + + odoo.module + + + + + + + + + + + diff --git a/apps_product_creator/views/view_product_product.xml b/apps_product_creator/views/view_product_product.xml new file mode 100644 index 0000000..adc438e --- /dev/null +++ b/apps_product_creator/views/view_product_product.xml @@ -0,0 +1,41 @@ + + + + + + product.product + + + + + + + + + + + + + + + + + + + + + + + + + +