diff --git a/.eslintrc.yml b/.eslintrc.yml index 9429bc688aab4993eae460767368f65089afa323..fed88d70d23ecb3297ea28854b320c4d62ee3c26 100644 --- a/.eslintrc.yml +++ b/.eslintrc.yml @@ -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 9c283fd41f6cc3330653f1d90a820b85e23caf65..d99361a24aa02c2d19d8165c3a057b84bc575166 100644 --- a/.gitignore +++ b/.gitignore @@ -3,6 +3,7 @@ __pycache__/ *.py[cod] /.venv /.pytest_cache +/.ruff_cache # C extensions *.so @@ -23,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 c575299fc05d609e25260193f2b663be50d0fd31..3efb4d9157dc36d84e372eec5fc21e7f4a417a58 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -12,6 +12,10 @@ exclude: | /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: @@ -33,27 +37,25 @@ repos: language: fail files: '[a-zA-Z0-9_]*/i18n/en\.po$' - repo: https://github.com/oca/maintainer-tools - rev: 4cd2b852214dead80822e93e6749b16f2785b2fe + 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.6.1 - 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.8.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.7.1 hooks: @@ -95,27 +97,14 @@ repos: - id: check-xml - id: mixed-line-ending args: ["--fix=lf"] - - repo: https://github.com/asottile/pyupgrade - rev: v2.38.2 - 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==21.9.2"] + - id: ruff + args: [--fix, --exit-non-zero-on-fix] + - id: ruff-format - repo: https://github.com/OCA/pylint-odoo - rev: 7.0.2 + rev: v8.0.19 hooks: - id: pylint_odoo name: pylint with optional checks 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-mandatory b/.pylintrc-mandatory index ed2c2171ffe63ac191e30ed0759c4b6211ad5f15..99064933ef82c469ba5fda5b2904447c05c99dbe 100644 --- a/.pylintrc-mandatory +++ b/.pylintrc-mandatory @@ -4,12 +4,12 @@ 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=16.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 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/controllers/portal.py b/controllers/portal.py index 0678fc2cfad854fadb0b42e0902d8484cc95d3d7..7e259210dec9682abd113c8b37ac0aad8d1519b1 100644 --- a/controllers/portal.py +++ b/controllers/portal.py @@ -12,7 +12,6 @@ _logger = logging.getLogger(__name__) class CustomerPortal(CustomerPortal): - # ------------------------------------------------------ # Inherit Parent # ------------------------------------------------------ diff --git a/models/res_partner.py b/models/res_partner.py index ceeb081d52aca217444a946b3664c315449ad4aa..994caffccd545ea1995eb1418df98cabe02c0fee 100644 --- a/models/res_partner.py +++ b/models/res_partner.py @@ -56,7 +56,7 @@ class ResPartner(models.Model): for module in modules: if module.get("author_type") != "odoo": # Création du module - if not module.get("name") in existing_modules.mapped("name"): + if module.get("name") not in existing_modules.mapped("name"): new_module = module new_module.pop("latest_version", False) module_id = existing_modules.create(new_module) diff --git a/templates/partner_release_detail.xml b/templates/partner_release_detail.xml index 3f4727266b09de396c7af95d44f7d0d456e995dc..4775e7d4018476319daa8fe09cd99d1de995b70b 100644 --- a/templates/partner_release_detail.xml +++ b/templates/partner_release_detail.xml @@ -11,7 +11,9 @@ <div class="row"> <div class="col-12 mt16"> <t t-if="release.partner_id.release_share_link"> - <a t-att-href="release.partner_id.release_share_link"><i + <a + t-att-href="release.partner_id.release_share_link" + ><i class="fa fa-chevron-circle-left" /> Retour à la liste</a> </t> @@ -20,7 +22,9 @@ <h1> <span t-field="release.partner_id.name" - /> - Release #<span t-field="release.release_number" /> + /> - Release #<span + t-field="release.release_number" + /> </h1> </div> <!-- Description --> @@ -43,7 +47,9 @@ </tr> <tr> <th>Responsable</th> - <td><span t-field="release.user_id.name" /></td> + <td><span + t-field="release.user_id.name" + /></td> </tr> </table> </div> @@ -80,7 +86,9 @@ <td><span t-field="module.release_type" /></td> - <td><span t-field="module.log" /></td> + <td><span + t-field="module.log" + /></td> </tr> </tbody> </table> diff --git a/views/res_partner.xml b/views/res_partner.xml index 32b4ae03032937dd33268af8d0a9446ce1d37a4f..25d458e40c42c51c5923db0086988378937ef229 100644 --- a/views/res_partner.xml +++ b/views/res_partner.xml @@ -40,12 +40,18 @@ options="{'string': 'Copier le lien'}" /> </group> - <field name="release_ids" options="{'no_create': 1, 'no_edit': 1}"> + <field + name="release_ids" + options="{'no_create': 1, 'no_edit': 1}" + > <tree> <field name="release_date" /> <field name="user_id" /> <field name="description" /> - <field name="release_module_ids" widget="many2many_tags" /> + <field + name="release_module_ids" + widget="many2many_tags" + /> </tree> </field> </page> @@ -54,7 +60,10 @@ </record> <!-- Action Server --> - <record id="model_res_partner_release_action_share" model="ir.actions.server"> + <record + id="model_res_partner_release_action_share" + model="ir.actions.server" + > <field name="name">Générer le lien de la release</field> <field name="model_id" ref="model_res_partner" /> <field name="binding_model_id" ref="model_res_partner" /> diff --git a/views/res_partner_module.xml b/views/res_partner_module.xml index b99eb84e210251dfb5c9946fee4f67083b52c286..1ce697549a246eb502e675726a502c8fbcaa20b7 100644 --- a/views/res_partner_module.xml +++ b/views/res_partner_module.xml @@ -2,7 +2,6 @@ <!-- Copyright 2022 Le Filament (<https://le-filament.com>) License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). --> <odoo> -<<<<<<< HEAD <!-- Search View --> <record id="res_partner_module_search_view" model="ir.ui.view"> <field name="name">res.partner.module.search</field> diff --git a/views/res_partner_module_version.xml b/views/res_partner_module_version.xml index 3bfe0686a3436daa26bc1f17d763182a8223cf00..f89da7006446bbabb4d7fb7c1a68d3407e4d2e41 100644 --- a/views/res_partner_module_version.xml +++ b/views/res_partner_module_version.xml @@ -20,8 +20,14 @@ <field name="model">res.partner.module.version</field> <field name="arch" type="xml"> <tree string="Modules" editable="top"> - <field name="partner_id" options="{'no_create': 1, 'no_edit': 1}" /> - <field name="module_id" options="{'no_create': 1, 'no_edit': 1}" /> + <field + name="partner_id" + options="{'no_create': 1, 'no_edit': 1}" + /> + <field + name="module_id" + options="{'no_create': 1, 'no_edit': 1}" + /> <field name="latest_version" /> </tree> </field> diff --git a/views/res_partner_release.xml b/views/res_partner_release.xml index a5ad8b76895ca088d6e5a2dc86d892de7e32c23e..c890a13ff01c8a292f217d73fd37918513297e13 100644 --- a/views/res_partner_release.xml +++ b/views/res_partner_release.xml @@ -70,7 +70,10 @@ <label for="description" class="font-weight-bold" /> <field name="description" /> <hr /> - <label for="release_module_ids" class="font-weight-bold" /> + <label + for="release_module_ids" + class="font-weight-bold" + /> <field name="release_module_ids" context="{'default_release_id': active_id}" diff --git a/views/res_partner_release_module.xml b/views/res_partner_release_module.xml index 16da3a700e3ec4a5e176c0b91bfd7ec0854af70d..645ef7f000164149cb3de9bb6cff3a66b46dae1f 100644 --- a/views/res_partner_release_module.xml +++ b/views/res_partner_release_module.xml @@ -75,7 +75,10 @@ </record> <!-- Action Window --> - <record id="res_partner_release_module_act_window" model="ir.actions.act_window"> + <record + id="res_partner_release_module_act_window" + model="ir.actions.act_window" + > <field name="name">Détail Modules</field> <field name="type">ir.actions.act_window</field> <field name="res_model">res.partner.release.module</field> diff --git a/wizard/multi_partner_release_wizard.xml b/wizard/multi_partner_release_wizard.xml index 1c48801b855d2f33eddaf314d82d81cadf13d7a5..d5226d79856b84efb1dee65da540b670c82e77ee 100644 --- a/wizard/multi_partner_release_wizard.xml +++ b/wizard/multi_partner_release_wizard.xml @@ -29,7 +29,10 @@ <label for="description" class="font-weight-bold" /> <field name="description" /> <hr /> - <label for="release_module_ids" class="font-weight-bold" /> + <label + for="release_module_ids" + class="font-weight-bold" + /> <field name="release_module_ids" context="{'default_release_id': active_id}" @@ -52,7 +55,11 @@ string="Créer les releases" class="btn-primary" /> - <button string="Fermer" class="oe_link" special="cancel" /> + <button + string="Fermer" + class="oe_link" + special="cancel" + /> </footer> </sheet> </form> @@ -60,7 +67,10 @@ </record> <!-- Action Window --> - <record id="multi_partner_release_wizard_act_window" model="ir.actions.act_window"> + <record + id="multi_partner_release_wizard_act_window" + model="ir.actions.act_window" + > <field name="name">Releases Client</field> <field name="type">ir.actions.act_window</field> <field name="res_model">multi.partner.release.wizard</field>