diff --git a/.eslintrc.yml b/.eslintrc.yml index d4cc423ccda9db9691205c9da83307af97b2670f..fed88d70d23ecb3297ea28854b320c4d62ee3c26 100644 --- a/.eslintrc.yml +++ b/.eslintrc.yml @@ -4,7 +4,7 @@ env: # See https://github.com/OCA/odoo-community.org/issues/37#issuecomment-470686449 parserOptions: - ecmaVersion: 2017 + ecmaVersion: 2019 overrides: - files: @@ -22,6 +22,7 @@ globals: odoo: readonly openerp: readonly owl: readonly + luxon: readonly # Styling is handled by Prettier, so we only need to enable AST rules; # see https://github.com/OCA/maintainer-quality-tools/pull/618#issuecomment-558576890 diff --git a/.flake8 b/.flake8 deleted file mode 100644 index e397e8ed4e3e7f7fe7785dd391bb80aa6d85575e..0000000000000000000000000000000000000000 --- a/.flake8 +++ /dev/null @@ -1,12 +0,0 @@ -[flake8] -max-line-length = 88 -max-complexity = 16 -# B = bugbear -# B9 = bugbear opinionated (incl line length) -select = C,E,F,W,B,B9 -# E203: whitespace before ':' (black behaviour) -# E501: flake8 line length (covered by bugbear B950) -# W503: line break before binary operator (black behaviour) -ignore = E203,E501,W503 -per-file-ignores= - __init__.py:F401 diff --git a/.gitignore b/.gitignore index 818770fb1bdc0a144e924c9a5940f0b035df8a0d..d99361a24aa02c2d19d8165c3a057b84bc575166 100644 --- a/.gitignore +++ b/.gitignore @@ -3,6 +3,7 @@ __pycache__/ *.py[cod] /.venv /.pytest_cache +/.ruff_cache # C extensions *.so @@ -15,7 +16,6 @@ build/ develop-eggs/ dist/ eggs/ -lib/ lib64/ parts/ sdist/ @@ -24,6 +24,7 @@ var/ .installed.cfg *.egg *.eggs +.copier-answers.yml # Installer logs pip-log.txt diff --git a/.isort.cfg b/.isort.cfg deleted file mode 100644 index 0ec187efd1bf802844749f508cda0c8f138970f9..0000000000000000000000000000000000000000 --- a/.isort.cfg +++ /dev/null @@ -1,13 +0,0 @@ -[settings] -; see https://github.com/psf/black -multi_line_output=3 -include_trailing_comma=True -force_grid_wrap=0 -combine_as_imports=True -use_parentheses=True -line_length=88 -known_odoo=odoo -known_odoo_addons=odoo.addons -sections=FUTURE,STDLIB,THIRDPARTY,ODOO,ODOO_ADDONS,FIRSTPARTY,LOCALFOLDER -default_section=THIRDPARTY -ensure_newline_before_comments = True diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 732d0c4a644eb444d6b4385643ff32fab19fab52..3efb4d9157dc36d84e372eec5fc21e7f4a417a58 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -6,15 +6,21 @@ exclude: | ^setup/|/static/description/index\.html$| # We don't want to mess with tool-generated files .svg$|/tests/([^/]+/)?cassettes/|^.copier-answers.yml$|^.github/| + # Maybe reactivate this when all README files include prettier ignore tags? + ^README\.md$| # Library files can have extraneous formatting (even minimized) /static/(src/)?lib/| # Repos using Sphinx to generate docs don't need prettying ^docs/_templates/.*\.html$| + # Don't bother non-technical authors with formatting issues in docs + readme/.*\.(rst|md)$| + # Ignore build and dist directories in addons + /build/|/dist/| # You don't usually want a bot to modify your legal texts (LICENSE.*|COPYING.*) default_language_version: python: python3 - node: "14.13.0" + node: "16.17.0" repos: - repo: local hooks: @@ -25,41 +31,44 @@ repos: entry: found forbidden files; remove them language: fail files: "\\.rej$" + - id: en-po-files + name: en.po files cannot exist + entry: found a en.po file + language: fail + files: '[a-zA-Z0-9_]*/i18n/en\.po$' - repo: https://github.com/oca/maintainer-tools - rev: 7d8a9f9ad73db0976fb03cbee43d953bc29b89e9 + rev: f71041f22b8cd68cf7c77b73a14ca8d8cd190a60 hooks: # update the NOT INSTALLABLE ADDONS section above - id: oca-update-pre-commit-excluded-addons - id: oca-fix-manifest-website args: ["https://le-filament.com"] - - repo: https://github.com/myint/autoflake - rev: v1.4 - hooks: - - id: autoflake + - id: oca-gen-addon-readme args: - - --expand-star-imports - - --ignore-init-module-imports - - --in-place - - --remove-all-unused-imports - - --remove-duplicate-keys - - --remove-unused-variables - - repo: https://github.com/psf/black - rev: 22.3.0 + - --addons-dir=. + - --branch=16.0 + - --org-name=lefilament + - --repo-name=template_module + - --if-source-changed + - --keep-source-digest + - repo: https://github.com/OCA/odoo-pre-commit-hooks + rev: v0.0.25 hooks: - - id: black + - id: oca-checks-odoo-module + - id: oca-checks-po - repo: https://github.com/pre-commit/mirrors-prettier - rev: v2.6.2 + rev: v2.7.1 hooks: - id: prettier name: prettier (with plugin-xml) additional_dependencies: - - "prettier@2.1.2" - - "@prettier/plugin-xml@0.12.0" + - "prettier@2.7.1" + - "@prettier/plugin-xml@2.2.0" args: - --plugin=@prettier/plugin-xml files: \.(css|htm|html|js|json|jsx|less|md|scss|toml|ts|xml|yaml|yml)$ - repo: https://github.com/pre-commit/mirrors-eslint - rev: v8.15.0 + rev: v8.24.0 hooks: - id: eslint verbose: true @@ -67,7 +76,7 @@ repos: - --color - --fix - repo: https://github.com/pre-commit/pre-commit-hooks - rev: v4.2.0 + rev: v4.3.0 hooks: - id: trailing-whitespace # exclude autogenerated files @@ -88,38 +97,21 @@ repos: - id: check-xml - id: mixed-line-ending args: ["--fix=lf"] - - repo: https://github.com/asottile/pyupgrade - rev: v2.32.1 - hooks: - - id: pyupgrade - args: ["--keep-percent-format"] - - repo: https://github.com/PyCQA/isort - rev: 5.10.1 - hooks: - - id: isort - name: isort except __init__.py - args: - - --settings=. - exclude: /__init__\.py$ - - repo: https://gitlab.com/PyCQA/flake8 - rev: 3.9.2 + - repo: https://github.com/astral-sh/ruff-pre-commit + rev: v0.1.3 hooks: - - id: flake8 - name: flake8 - additional_dependencies: ["flake8-bugbear==20.1.4"] - - repo: https://github.com/PyCQA/pylint - rev: v2.11.1 + - id: ruff + args: [--fix, --exit-non-zero-on-fix] + - id: ruff-format + - repo: https://github.com/OCA/pylint-odoo + rev: v8.0.19 hooks: - - id: pylint + - id: pylint_odoo name: pylint with optional checks args: - --rcfile=.pylintrc - --exit-zero verbose: true - additional_dependencies: &pylint_deps - - pylint-odoo==5.0.5 - - id: pylint - name: pylint with mandatory checks + - id: pylint_odoo args: - --rcfile=.pylintrc-mandatory - additional_dependencies: *pylint_deps diff --git a/.prettierrc.yml b/.prettierrc.yml deleted file mode 100644 index 5b6d4b361ace92f3877993bf2848fac190d8fab6..0000000000000000000000000000000000000000 --- a/.prettierrc.yml +++ /dev/null @@ -1,8 +0,0 @@ -# Defaults for all prettier-supported languages. -# Prettier will complete this with settings from .editorconfig file. -bracketSpacing: false -printWidth: 88 -proseWrap: always -semi: true -trailingComma: "es5" -xmlWhitespaceSensitivity: "strict" diff --git a/.pylintrc b/.pylintrc index 30c91fa46625e252a409ca61b98f72145209f319..71c476d4f10ac08a7333729b93705c9573d240d5 100644 --- a/.pylintrc +++ b/.pylintrc @@ -1,3 +1,5 @@ + + [MASTER] load-plugins=pylint_odoo score=n @@ -8,7 +10,7 @@ manifest_required_authors=Le Filament manifest_required_keys=license manifest_deprecated_keys=description,active license_allowed=AGPL-3,GPL-2,GPL-2 or any later version,GPL-3,GPL-3 or any later version,LGPL-3 -valid_odoo_versions=12.0 +valid_odoo_versions=16.0 [MESSAGES CONTROL] disable=all @@ -64,6 +66,39 @@ enable=anomalous-backslash-in-string, use-vim-comment, wrong-tabs-instead-of-spaces, xml-syntax-error, + attribute-string-redundant, + character-not-valid-in-resource-link, + consider-merging-classes-inherited, + context-overridden, + create-user-wo-reset-password, + dangerous-filter-wo-user, + dangerous-qweb-replace-wo-priority, + deprecated-data-xml-node, + deprecated-openerp-xml-node, + duplicate-po-message-definition, + except-pass, + file-not-used, + invalid-commit, + manifest-maintainers-list, + missing-newline-extrafiles, + missing-readme, + missing-return, + odoo-addons-relative-import, + old-api7-method-defined, + po-msgstr-variables, + po-syntax-error, + renamed-field-parameter, + resource-not-exist, + str-format-used, + test-folder-imported, + translation-contains-variable, + translation-positional-used, + unnecessary-utf8-coding-comment, + website-manifest-key-not-valid-uri, + xml-attribute-translatable, + xml-deprecated-qweb-directive, + xml-deprecated-tree-attribute, + external-request-timeout, # messages that do not cause the lint step to fail consider-merging-classes-inherited, create-user-wo-reset-password, @@ -73,6 +108,7 @@ enable=anomalous-backslash-in-string, invalid-commit, missing-manifest-dependency, missing-newline-extrafiles, + missing-readme, no-utf8-coding-comment, odoo-addons-relative-import, old-api7-method-defined, diff --git a/.pylintrc-mandatory b/.pylintrc-mandatory index e37fa6552376d2e484d5a26370b249ac7384a87b..99064933ef82c469ba5fda5b2904447c05c99dbe 100644 --- a/.pylintrc-mandatory +++ b/.pylintrc-mandatory @@ -1,14 +1,15 @@ + [MASTER] load-plugins=pylint_odoo score=n [ODOOLINT] -readme_template_url="https://github.com/OCA/maintainer-tools/blob/master/template/module/README.rst" -manifest_required_authors=Le Filament -manifest_required_keys=license -manifest_deprecated_keys=description,active -license_allowed=AGPL-3,GPL-2,GPL-2 or any later version,GPL-3,GPL-3 or any later version,LGPL-3 -valid_odoo_versions=12.0 +readme-template-url="https://github.com/OCA/maintainer-tools/blob/master/template/module/README.rst" +manifest-required-authors=Le Filament +manifest-required-keys=license +manifest-deprecated-keys=description,active +license-allowed=AGPL-3,GPL-2,GPL-2 or any later version,GPL-3,GPL-3 or any later version,LGPL-3 +valid-odoo-versions=16.0 [MESSAGES CONTROL] disable=all @@ -56,7 +57,40 @@ enable=anomalous-backslash-in-string, unreachable, use-vim-comment, wrong-tabs-instead-of-spaces, - xml-syntax-error + xml-syntax-error, + attribute-string-redundant, + character-not-valid-in-resource-link, + consider-merging-classes-inherited, + context-overridden, + create-user-wo-reset-password, + dangerous-filter-wo-user, + dangerous-qweb-replace-wo-priority, + deprecated-data-xml-node, + deprecated-openerp-xml-node, + duplicate-po-message-definition, + except-pass, + file-not-used, + invalid-commit, + manifest-maintainers-list, + missing-newline-extrafiles, + missing-readme, + missing-return, + odoo-addons-relative-import, + old-api7-method-defined, + po-msgstr-variables, + po-syntax-error, + renamed-field-parameter, + resource-not-exist, + str-format-used, + test-folder-imported, + translation-contains-variable, + translation-positional-used, + unnecessary-utf8-coding-comment, + website-manifest-key-not-valid-uri, + xml-attribute-translatable, + xml-deprecated-qweb-directive, + xml-deprecated-tree-attribute, + external-request-timeout [REPORTS] msg-template={path}:{line}: [{msg_id}({symbol}), {obj}] {msg} diff --git a/.ruff.toml b/.ruff.toml new file mode 100644 index 0000000000000000000000000000000000000000..0240c75f6a4ae4550f3473ad0a5faaef022bf6c7 --- /dev/null +++ b/.ruff.toml @@ -0,0 +1,30 @@ + +target-version = "py310" +fix = true + +[lint] +extend-select = [ + "B", + "C90", + "E501", # line too long (default 88) + "I", # isort + "UP", # pyupgrade +] +exclude = ["setup/*"] + +[format] +exclude = ["setup/*"] + +[per-file-ignores] +"__init__.py" = ["F401", "I001"] # ignore unused and unsorted imports in __init__.py +"__manifest__.py" = ["B018"] # useless expression + +[isort] +section-order = ["future", "standard-library", "third-party", "odoo", "odoo-addons", "first-party", "local-folder"] + +[isort.sections] +"odoo" = ["odoo"] +"odoo-addons" = ["odoo.addons"] + +[mccabe] +max-complexity = 16 diff --git a/__init__.py b/__init__.py index cef24355e7f584a19c71f2918d75eb33400e1356..b046ff82fc33987dc39e441795c2abe2b2aae54e 100644 --- a/__init__.py +++ b/__init__.py @@ -1,4 +1 @@ -# Copyright 2022 Le Filament (<http://www.le-filament.com>) -# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). - from . import models, wizard diff --git a/__manifest__.py b/__manifest__.py index e95dc789bac004f3b525d9d898b755071a6f86cb..9b68ddd9564dfa586db38c948d33907af29a2578 100644 --- a/__manifest__.py +++ b/__manifest__.py @@ -1,12 +1,9 @@ -# © 2022 Le Filament (<http://www.le-filament.com>) -# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). - { "name": "3A Dentaire - Achats", "summary": "Modifications module Achat 3A Dentaire", "author": "Le Filament", "website": "https://www.le-filament.com", - "version": "12.0.1.0.1", + "version": "16.0.1.0.0", "license": "AGPL-3", "depends": ["purchase"], "data": [ diff --git a/models/__init__.py b/models/__init__.py index 40401b88cdf8ba0d822b1635dce2f2ed95b03838..032dbe63acafb5941c989b3d48e42ed0dce8f2d7 100644 --- a/models/__init__.py +++ b/models/__init__.py @@ -1,5 +1,2 @@ -# Copyright 2022 Le Filament (<http://www.le-filament.com>) -# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). - from . import product_product from . import product_product_update_log diff --git a/models/product_product.py b/models/product_product.py index 51f0e38ed3325ebec7aa10fab1c5bd7eeeb2cfc5..a6a5de29e25eefa9f2a16eea31f38b9b1739c92a 100644 --- a/models/product_product.py +++ b/models/product_product.py @@ -1,4 +1,4 @@ -# Copyright 2021 Le Filament (<http://www.le-filament.com>) +# Copyright 2021- Le Filament (https://le-filament.com>) # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). @@ -8,6 +8,6 @@ from odoo import fields, models class ProductProduct(models.Model): _inherit = "product.product" - lst_price = fields.Float(track_visibility="always") - standard_price = fields.Float(track_visibility="always") + lst_price = fields.Float(tracking=True) + standard_price = fields.Float(tracking=True) is_updated_price = fields.Boolean("Bloquer la mise à jour", default=False) diff --git a/models/product_product_update_log.py b/models/product_product_update_log.py index f27fd47eab99eda51a754b64d9e8af7e2215f04a..a29b02987ddbd48949790d0876713e89a7a1a45b 100644 --- a/models/product_product_update_log.py +++ b/models/product_product_update_log.py @@ -1,4 +1,4 @@ -# Copyright 2021 Le Filament (<http://www.le-filament.com>) +# Copyright 2021- Le Filament (https://le-filament.com>) # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). import ast @@ -12,7 +12,7 @@ class ProductUpdateLog(models.Model): _order = "create_date desc" name = fields.Char("Nom du fichier") - log = fields.Text("Log") + log = fields.Text() log_html = fields.Html("Détail", compute="_compute_log_html") # ------------------------------------------------------ diff --git a/security/ir.model.access.csv b/security/ir.model.access.csv index 797adbdec9130d84d5bb945f247b1e96fb99712c..718174ba3e96c154ac1ed90b08572db4efbc290f 100644 --- a/security/ir.model.access.csv +++ b/security/ir.model.access.csv @@ -1,2 +1,3 @@ id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink access_product_product_update_log,product_product_update_log_user,model_product_product_update_log,purchase.group_purchase_manager,1,1,1,1 +access_import_provider_product_wizard,import_provider_product_wizard_user,model_import_provider_product_wizard,purchase.group_purchase_manager,1,1,1,1 diff --git a/views/product_product.xml b/views/product_product.xml index cd587a30145908c8e3ceb90e67766f8f5d361f65..4448f7d6a43d4ddab2897eba20fb7bacb1d74669 100644 --- a/views/product_product.xml +++ b/views/product_product.xml @@ -1,31 +1,30 @@ <?xml version="1.0" encoding="utf-8" ?> +<!-- Copyright 2021- Le Filament (https://le-filament.com) + License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). --> <odoo> - <data> - <!-- Form View --> - <record id="product_normal_form_view_inherited" model="ir.ui.view"> - <field name="name">product.product.inherited.form</field> - <field name="model">product.product</field> - <field name="inherit_id" ref="product.product_normal_form_view" /> - <field name="arch" type="xml"> - <xpath expr="//field[@name='company_id']" position="before"> - <field name="is_updated_price" widget="boolean_toggle" /> - </xpath> + <!-- Form View --> + <record id="product_normal_form_view_inherited" model="ir.ui.view"> + <field name="name">product.product.inherited.form</field> + <field name="model">product.product</field> + <field name="inherit_id" ref="product.product_normal_form_view" /> + <field name="arch" type="xml"> + <xpath expr="//field[@name='company_id']" position="before"> + <field name="is_updated_price" widget="boolean_toggle" /> + </xpath> - </field> - </record> + </field> + </record> - <!-- Tree View --> - <record id="product_normal_tree_view_inherited" model="ir.ui.view"> - <field name="name">product.product.inherited.tree</field> - <field name="model">product.product</field> - <field name="inherit_id" ref="product.product_product_tree_view" /> - <field name="arch" type="xml"> - <xpath expr="//field[@name='barcode']" position="before"> - <field name="is_updated_price" widget="boolean_toggle" /> - </xpath> + <!-- Tree View --> + <record id="product_normal_tree_view_inherited" model="ir.ui.view"> + <field name="name">product.product.inherited.tree</field> + <field name="model">product.product</field> + <field name="inherit_id" ref="product.product_product_tree_view" /> + <field name="arch" type="xml"> + <xpath expr="//field[@name='barcode']" position="before"> + <field name="is_updated_price" widget="boolean_toggle" /> + </xpath> - </field> - </record> - - </data> + </field> + </record> </odoo> diff --git a/views/product_product_update_log.xml b/views/product_product_update_log.xml index 058532924042970628c4934010e731a5ab38ce47..065073eccfedb99c7946efec431b27282f930ab9 100644 --- a/views/product_product_update_log.xml +++ b/views/product_product_update_log.xml @@ -1,88 +1,87 @@ <?xml version="1.0" encoding="utf-8" ?> +<!-- Copyright 2021- Le Filament (https://le-filament.com) + License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). --> <odoo> - <data> - <!-- Form View --> - <record id="product_product_update_log_form_view" model="ir.ui.view"> - <field name="name">product.product.update.log.form</field> - <field name="model">product.product.update.log</field> - <field name="arch" type="xml"> - <form string="Logs maj articles" edit="0" create="0" delete="0"> - <sheet> + <!-- Form View --> + <record id="product_product_update_log_form_view" model="ir.ui.view"> + <field name="name">product.product.update.log.form</field> + <field name="model">product.product.update.log</field> + <field name="arch" type="xml"> + <form string="Logs maj articles" edit="0" create="0" delete="0"> + <sheet> + <group> <group> - <group> - <field name="name" /> - </group> - <group> - <field name="create_date" string="Date import" /> - <field name="create_uid" string="Utilisateur" /> - </group> + <field name="name" /> + </group> + <group> + <field name="create_date" string="Date import" /> + <field name="create_uid" string="Utilisateur" /> </group> - <div class="col-12 text-center mt32"> - <field name="log_html" widget="html" /> - </div> - </sheet> - </form> - </field> - </record> - - <!-- Tree View --> - <record id="product_product_update_log_tree_view" model="ir.ui.view"> - <field name="name">product.product.update.log.tree</field> - <field name="model">product.product.update.log</field> - <field name="arch" type="xml"> - <tree string="Logs maj articles" edit="0" create="0" delete="0"> - <field name="create_date" string="Date import" /> - <field name="name" /> - <field name="create_uid" string="Utilisateur" /> - <field name="log_html" widget="html" /> - </tree> - </field> - </record> - - <!-- Search View --> - <record id="product_product_update_log_search_view" model="ir.ui.view"> - <field name="name">product.product.update.log.search</field> - <field name="model">product.product.update.log</field> - <field name="arch" type="xml"> - <search string="Logs maj articles"> - <field name="name" /> - <field name="create_uid" string="Utilisateur" /> - <group expand="1" string="Group By"> - <filter - string="Date import" - name="group_create_date" - context="{'group_by':'create_date'}" - /> - <filter - string="Utlisateur" - name="group_by_user" - domain="[]" - context="{'group_by':'create_uid'}" - /> </group> - </search> - </field> - </record> + <div class="col-12 text-center mt32"> + <field name="log_html" widget="html" /> + </div> + </sheet> + </form> + </field> + </record> + + <!-- Tree View --> + <record id="product_product_update_log_tree_view" model="ir.ui.view"> + <field name="name">product.product.update.log.tree</field> + <field name="model">product.product.update.log</field> + <field name="arch" type="xml"> + <tree string="Logs maj articles" edit="0" create="0" delete="0"> + <field name="create_date" string="Date import" /> + <field name="name" /> + <field name="create_uid" string="Utilisateur" /> + <field name="log_html" widget="html" /> + </tree> + </field> + </record> - <!-- Action --> - <record - id="product_product_update_log_act_window" - model="ir.actions.act_window" - > - <field name="name">Logs mise à jour articles</field> - <field name="type">ir.actions.act_window</field> - <field name="res_model">product.product.update.log</field> - <field name="view_mode">tree</field> - </record> + <!-- Search View --> + <record id="product_product_update_log_search_view" model="ir.ui.view"> + <field name="name">product.product.update.log.search</field> + <field name="model">product.product.update.log</field> + <field name="arch" type="xml"> + <search string="Logs maj articles"> + <field name="name" /> + <field name="create_uid" string="Utilisateur" /> + <group expand="1" string="Group By"> + <filter + string="Date import" + name="group_create_date" + context="{'group_by':'create_date'}" + /> + <filter + string="Utlisateur" + name="group_by_user" + domain="[]" + context="{'group_by':'create_uid'}" + /> + </group> + </search> + </field> + </record> - <menuitem - name="Logs mise à jour articles" - id="product_product_update_log_menu" - parent="purchase.menu_purchase_config" - action="product_product_update_log_act_window" - groups="purchase.group_purchase_manager" - sequence="90" - /> + <!-- Action --> + <record + id="product_product_update_log_act_window" + model="ir.actions.act_window" + > + <field name="name">Logs mise à jour articles</field> + <field name="type">ir.actions.act_window</field> + <field name="res_model">product.product.update.log</field> + <field name="view_mode">tree</field> + </record> - </data> + <menuitem + name="Logs mise à jour articles" + id="product_product_update_log_menu" + parent="purchase.menu_purchase_config" + action="product_product_update_log_act_window" + groups="purchase.group_purchase_manager" + sequence="90" + /> </odoo> diff --git a/wizard/__init__.py b/wizard/__init__.py index ebb32b20ee4fb6dd94dd0c3e0275ac865f4695b9..e67f201d8895492c97e09faa5a4bf6a7d75f3b6d 100644 --- a/wizard/__init__.py +++ b/wizard/__init__.py @@ -1,4 +1 @@ -# Copyright 2022 Le Filament (<http://www.le-filament.com>) -# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). - from . import import_provider_product_wizard diff --git a/wizard/import_provider_product_wizard.py b/wizard/import_provider_product_wizard.py index bf01c9455f76164a91fecd117337a6666911a72a..689e4aa2e1a63f4c21e3d0bd4880e860c86a6aa2 100644 --- a/wizard/import_provider_product_wizard.py +++ b/wizard/import_provider_product_wizard.py @@ -1,4 +1,4 @@ -# Copyright 2021 Le Filament (<http://www.le-filament.com>) +# Copyright 2021- Le Filament (https://le-filament.com>) # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). import base64 @@ -21,7 +21,7 @@ class ImportProviderProductWizard(models.TransientModel): # Fields declaration # ------------------------------------------------------ file = fields.Binary(string="Fichier Fournisseur", required=True) - filename = fields.Char("Filename") + filename = fields.Char() # ------------------------------------------------------ # Button actions diff --git a/wizard/import_provider_product_wizard.xml b/wizard/import_provider_product_wizard.xml index 07cb4ceab6745953a0f4badda9e6fdf897247c10..bfc5e71451ad1ab93719eb027096f13b406a7cb7 100644 --- a/wizard/import_provider_product_wizard.xml +++ b/wizard/import_provider_product_wizard.xml @@ -1,63 +1,61 @@ <?xml version="1.0" encoding="utf-8" ?> +<!-- Copyright 2021- Le Filament (https://le-filament.com) + License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). --> <odoo> - <data> - - <record id="import_provider_product_wizard_form_view" model="ir.ui.view"> - <field name="name">import.provider.product.wizard.form</field> - <field name="model">import.provider.product.wizard</field> - <field name="arch" type="xml"> - <form string="Mise à jour des prix"> - <sheet> + <record id="import_provider_product_wizard_form_view" model="ir.ui.view"> + <field name="name">import.provider.product.wizard.form</field> + <field name="model">import.provider.product.wizard</field> + <field name="arch" type="xml"> + <form string="Mise à jour des prix"> + <sheet> + <group> <group> - <group> - <field name="file" filename="filename" /> - <field - name="filename" - invisible="1" - readonly="1" - force_save="1" - /> - </group> - <footer> - <button - name="load_provider_product" - type="object" - string="Charger le fichier" - class="btn-info" - attrs="{'invisible': [('file', '=', False)]}" - /> - <button - string="Cancel" - class="oe_link" - special="cancel" - /> - </footer> + <field name="file" filename="filename" /> + <field + name="filename" + invisible="1" + readonly="1" + force_save="1" + /> </group> - </sheet> - </form> - </field> - </record> - - <record - id="import_provider_product_wizard_act_window" - model="ir.actions.act_window" - > - <field name="name">Mise à jour des prix</field> - <field name="type">ir.actions.act_window</field> - <field name="res_model">import.provider.product.wizard</field> - <field name="view_type">form</field> - <field name="view_mode">form</field> - <field name="target">new</field> - </record> + <footer> + <button + name="load_provider_product" + type="object" + string="Charger le fichier" + class="btn-info" + attrs="{'invisible': [('file', '=', False)]}" + /> + <button + string="Cancel" + class="oe_link" + special="cancel" + /> + </footer> + </group> + </sheet> + </form> + </field> + </record> - <menuitem - name="Mise à jour des tarifs" - id="import_provider_product_wizard_menu" - parent="purchase.menu_procurement_management" - action="import_provider_product_wizard_act_window" - sequence="90" - groups="purchase.group_purchase_manager" - /> + <record + id="import_provider_product_wizard_act_window" + model="ir.actions.act_window" + > + <field name="name">Mise à jour des prix</field> + <field name="type">ir.actions.act_window</field> + <field name="res_model">import.provider.product.wizard</field> + <field name="view_type">form</field> + <field name="view_mode">form</field> + <field name="target">new</field> + </record> - </data> + <menuitem + name="Mise à jour des tarifs" + id="import_provider_product_wizard_menu" + parent="purchase.menu_procurement_management" + action="import_provider_product_wizard_act_window" + sequence="90" + groups="purchase.group_purchase_manager" + /> </odoo>