Skip to content
Extraits de code Groupes Projets
Valider adadf1d8 rédigé par Rémi - Le Filament's avatar Rémi - Le Filament
Parcourir les fichiers

[MIG] Migration to version 18.0

parent b05ba1c0
Aucune branche associée trouvée
Aucune étiquette associée trouvée
Aucune requête de fusion associée trouvée
Affichage de
avec 331 ajouts et 347 suppressions
env:
browser: true
es6: true
# See https://github.com/OCA/odoo-community.org/issues/37#issuecomment-470686449
parserOptions:
ecmaVersion: 2022
overrides:
- files:
- "**/*.esm.js"
parserOptions:
sourceType: module
# Globals available in Odoo that shouldn't produce errorings
globals:
_: readonly
$: readonly
fuzzy: readonly
jQuery: readonly
moment: readonly
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
rules:
accessor-pairs: warn
array-callback-return: warn
callback-return: warn
capitalized-comments:
- warn
- always
- ignoreConsecutiveComments: true
ignoreInlineComments: true
complexity:
- warn
- 15
constructor-super: warn
dot-notation: warn
eqeqeq: warn
global-require: warn
handle-callback-err: warn
id-blacklist: warn
id-match: warn
init-declarations: error
max-depth: warn
max-nested-callbacks: warn
max-statements-per-line: warn
no-alert: warn
no-array-constructor: warn
no-caller: warn
no-case-declarations: warn
no-class-assign: warn
no-cond-assign: error
no-const-assign: error
no-constant-condition: warn
no-control-regex: warn
no-debugger: error
no-delete-var: warn
no-div-regex: warn
no-dupe-args: error
no-dupe-class-members: error
no-dupe-keys: error
no-duplicate-case: error
no-duplicate-imports: error
no-else-return: warn
no-empty-character-class: warn
no-empty-function: error
no-empty-pattern: error
no-empty: warn
no-eq-null: error
no-eval: error
no-ex-assign: error
no-extend-native: warn
no-extra-bind: warn
no-extra-boolean-cast: warn
no-extra-label: warn
no-fallthrough: warn
no-func-assign: error
no-global-assign: error
no-implicit-coercion:
- warn
- allow: ["~"]
no-implicit-globals: warn
no-implied-eval: warn
no-inline-comments: warn
no-inner-declarations: warn
no-invalid-regexp: warn
no-irregular-whitespace: warn
no-iterator: warn
no-label-var: warn
no-labels: warn
no-lone-blocks: warn
no-lonely-if: error
no-mixed-requires: error
no-multi-str: warn
no-native-reassign: error
no-negated-condition: warn
no-negated-in-lhs: error
no-new-func: warn
no-new-object: warn
no-new-require: warn
no-new-symbol: warn
no-new-wrappers: warn
no-new: warn
no-obj-calls: warn
no-octal-escape: warn
no-octal: warn
no-param-reassign: warn
no-path-concat: warn
no-process-env: warn
no-process-exit: warn
no-proto: warn
no-prototype-builtins: warn
no-redeclare: warn
no-regex-spaces: warn
no-restricted-globals: warn
no-restricted-imports: warn
no-restricted-modules: warn
no-restricted-syntax: warn
no-return-assign: error
no-script-url: warn
no-self-assign: warn
no-self-compare: warn
no-sequences: warn
no-shadow-restricted-names: warn
no-shadow: warn
no-sparse-arrays: warn
no-sync: warn
no-this-before-super: warn
no-throw-literal: warn
no-undef-init: warn
no-undef: error
no-unmodified-loop-condition: warn
no-unneeded-ternary: error
no-unreachable: error
no-unsafe-finally: error
no-unused-expressions: error
no-unused-labels: error
no-unused-vars: error
no-use-before-define: error
no-useless-call: warn
no-useless-computed-key: warn
no-useless-concat: warn
no-useless-constructor: warn
no-useless-escape: warn
no-useless-rename: warn
no-void: warn
no-with: warn
operator-assignment: [error, always]
prefer-const: warn
radix: warn
require-yield: warn
sort-imports: warn
spaced-comment: [error, always]
strict: [error, function]
use-isnan: error
valid-jsdoc:
- warn
- prefer:
arg: param
argument: param
augments: extends
constructor: class
exception: throws
func: function
method: function
prop: property
return: returns
virtual: abstract
yield: yields
preferType:
array: Array
bool: Boolean
boolean: Boolean
number: Number
object: Object
str: String
string: String
requireParamDescription: false
requireReturn: false
requireReturnDescription: false
requireReturnType: false
valid-typeof: warn
yoda: warn
......@@ -26,6 +26,9 @@ var/
*.eggs
.copier-answers.yml
# Windows installers
*.msi
# Debian packages
*.deb
......@@ -34,6 +37,7 @@ var/
# MacOS packages
*.dmg
*.pkg
# Installer logs
pip-log.txt
......
......@@ -5,7 +5,7 @@ exclude: |
# Files and folders generated by bots, to avoid loops
^setup/|/static/description/index\.html$|
# We don't want to mess with tool-generated files
.svg$|/tests/([^/]+/)?cassettes/|^.copier-answers.yml$|^.github/|
.svg$|/tests/([^/]+/)?cassettes/|^.copier-answers.yml$|^.github/|^eslint.config.cjs|^prettier.config.cjs|
# Maybe reactivate this when all README files include prettier ignore tags?
^README\.md$|
# Library files can have extraneous formatting (even minimized)
......@@ -22,7 +22,7 @@ exclude: |
(LICENSE.*|COPYING.*)
default_language_version:
python: python3
node: "16.17.0"
node: "22.9.0"
repos:
- repo: local
hooks:
......@@ -37,55 +37,52 @@ repos:
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/sbidoul/whool
# rev: v0.5
# hooks:
# - id: whool-init
files: '[a-zA-Z0-9_]*/i18n/en\.po$'
- repo: https://github.com/oca/maintainer-tools
rev: d5fab7ee87fceee858a3d01048c78a548974d935
rev: bf9ecb9938b6a5deca0ff3d870fbd3f33341fded
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"]
- id: oca-gen-addon-readme
args:
- --addons-dir=.
- --branch=17.0
- --org-name=lefilament
- --repo-name=template_module
- --if-source-changed
- --keep-source-digest
- --convert-fragments-to-markdown
# - id: oca-gen-external-dependencies
- repo: https://github.com/OCA/odoo-pre-commit-hooks
rev: v0.0.25
rev: v0.0.33
hooks:
- id: oca-checks-odoo-module
- id: oca-checks-po
- repo: https://github.com/pre-commit/mirrors-prettier
rev: v2.7.1
args:
- --disable=po-pretty-format
- repo: local
hooks:
- id: prettier
name: prettier (with plugin-xml)
additional_dependencies:
- "prettier@2.7.1"
- "@prettier/plugin-xml@2.2.0"
entry: prettier
args:
- --plugin=@prettier/plugin-xml
- --write
- --list-different
- --ignore-unknown
types: [text]
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.24.0
language: node
additional_dependencies:
- "prettier@3.3.3"
- "@prettier/plugin-xml@3.4.1"
- repo: local
hooks:
- id: eslint
verbose: true
name: eslint
entry: eslint
args:
- --color
- --fix
verbose: true
types: [javascript]
language: node
additional_dependencies:
- "eslint@9.12.0"
- "eslint-plugin-jsdoc@50.3.1"
- repo: https://github.com/pre-commit/pre-commit-hooks
rev: v4.3.0
rev: v4.6.0
hooks:
- id: trailing-whitespace
# exclude autogenerated files
......@@ -107,13 +104,13 @@ repos:
- id: mixed-line-ending
args: ["--fix=lf"]
- repo: https://github.com/astral-sh/ruff-pre-commit
rev: v0.1.3
rev: v0.6.8
hooks:
- id: ruff
args: [--fix, --exit-non-zero-on-fix]
- id: ruff-format
- repo: https://github.com/OCA/pylint-odoo
rev: v9.0.4
rev: v9.1.3
hooks:
- id: pylint_odoo
name: pylint with optional checks
......
# 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"
......@@ -10,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=17.0
valid-odoo-versions=18.0
[MESSAGES CONTROL]
disable=all
......
......@@ -9,7 +9,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=17.0
valid-odoo-versions=18.0
[MESSAGES CONTROL]
disable=all
......
......@@ -10,21 +10,22 @@ extend-select = [
"I", # isort
"UP", # pyupgrade
]
extend-safe-fixes = ["UP008"]
exclude = ["setup/*"]
[format]
exclude = ["setup/*"]
[per-file-ignores]
[lint.per-file-ignores]
"__init__.py" = ["F401", "I001"] # ignore unused and unsorted imports in __init__.py
"__manifest__.py" = ["B018"] # useless expression
[isort]
[lint.isort]
section-order = ["future", "standard-library", "third-party", "odoo", "odoo-addons", "first-party", "local-folder"]
[isort.sections]
[lint.isort.sections]
"odoo" = ["odoo"]
"odoo-addons" = ["odoo.addons"]
[mccabe]
[lint.mccabe]
max-complexity = 16
......@@ -3,7 +3,7 @@
"summary": "Gestion des mise en production logicielles",
"author": "Le Filament",
"website": "https://le-filament.com",
"version": "17.0.1.0.0",
"version": "18.0.1.0.0",
"license": "AGPL-3",
"depends": [
"web",
......@@ -15,7 +15,7 @@
# wizard
"wizard/multi_partner_release_wizard.xml",
# templates
"templates/header_template.xml",
# "templates/header_template.xml",
"templates/partner_release_detail.xml",
"templates/partner_release_list.xml",
# views
......
from . import banner_release, main, portal
from . import main, portal
# © 2022 Le Filament (<http://www.le-filament.com>)
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
from odoo import http
from odoo.http import request
class BannerController(http.Controller):
@http.route(["/lefilament_release/header"], type="json", auth="user")
def release_header(self):
return {
"html": request.env["ir.qweb"]._render(
"lefilament_release.header_template", {}
)
}
jsdoc = require("eslint-plugin-jsdoc");
const config = [{
plugins: {
jsdoc,
},
languageOptions: {
globals: {
_: "readonly",
$: "readonly",
fuzzy: "readonly",
jQuery: "readonly",
moment: "readonly",
odoo: "readonly",
openerp: "readonly",
owl: "readonly",
luxon: "readonly",
},
ecmaVersion: 2024,
sourceType: "script",
},
rules: {
"accessor-pairs": "warn",
"array-callback-return": "warn",
"callback-return": "warn",
"capitalized-comments": ["warn", "always", {
ignoreConsecutiveComments: true,
ignoreInlineComments: true,
}],
complexity: ["warn", 15],
"constructor-super": "warn",
"dot-notation": "warn",
eqeqeq: "warn",
"global-require": "warn",
"handle-callback-err": "warn",
"id-blacklist": "warn",
"id-match": "warn",
"init-declarations": "error",
"max-depth": "warn",
"max-nested-callbacks": "warn",
"max-statements-per-line": "warn",
"no-alert": "warn",
"no-array-constructor": "warn",
"no-caller": "warn",
"no-case-declarations": "warn",
"no-class-assign": "warn",
"no-cond-assign": "error",
"no-const-assign": "error",
"no-constant-condition": "warn",
"no-control-regex": "warn",
"no-debugger": "error",
"no-delete-var": "warn",
"no-div-regex": "warn",
"no-dupe-args": "error",
"no-dupe-class-members": "error",
"no-dupe-keys": "error",
"no-duplicate-case": "error",
"no-duplicate-imports": "error",
"no-else-return": "warn",
"no-empty-character-class": "warn",
"no-empty-function": "error",
"no-empty-pattern": "error",
"no-empty": "warn",
"no-eq-null": "error",
"no-eval": "error",
"no-ex-assign": "error",
"no-extend-native": "warn",
"no-extra-bind": "warn",
"no-extra-boolean-cast": "warn",
"no-extra-label": "warn",
"no-fallthrough": "warn",
"no-func-assign": "error",
"no-global-assign": "error",
"no-implicit-coercion": ["warn", {
allow: ["~"],
}],
"no-implicit-globals": "warn",
"no-implied-eval": "warn",
"no-inline-comments": "warn",
"no-inner-declarations": "warn",
"no-invalid-regexp": "warn",
"no-irregular-whitespace": "warn",
"no-iterator": "warn",
"no-label-var": "warn",
"no-labels": "warn",
"no-lone-blocks": "warn",
"no-lonely-if": "error",
"no-mixed-requires": "error",
"no-multi-str": "warn",
"no-native-reassign": "error",
"no-negated-condition": "warn",
"no-negated-in-lhs": "error",
"no-new-func": "warn",
"no-new-object": "warn",
"no-new-require": "warn",
"no-new-symbol": "warn",
"no-new-wrappers": "warn",
"no-new": "warn",
"no-obj-calls": "warn",
"no-octal-escape": "warn",
"no-octal": "warn",
"no-param-reassign": "warn",
"no-path-concat": "warn",
"no-process-env": "warn",
"no-process-exit": "warn",
"no-proto": "warn",
"no-prototype-builtins": "warn",
"no-redeclare": "warn",
"no-regex-spaces": "warn",
"no-restricted-globals": "warn",
"no-restricted-imports": "warn",
"no-restricted-modules": "warn",
"no-restricted-syntax": "warn",
"no-return-assign": "error",
"no-script-url": "warn",
"no-self-assign": "warn",
"no-self-compare": "warn",
"no-sequences": "warn",
"no-shadow-restricted-names": "warn",
"no-shadow": "warn",
"no-sparse-arrays": "warn",
"no-sync": "warn",
"no-this-before-super": "warn",
"no-throw-literal": "warn",
"no-undef-init": "warn",
"no-undef": "error",
"no-unmodified-loop-condition": "warn",
"no-unneeded-ternary": "error",
"no-unreachable": "error",
"no-unsafe-finally": "error",
"no-unused-expressions": "error",
"no-unused-labels": "error",
"no-unused-vars": "error",
"no-use-before-define": "error",
"no-useless-call": "warn",
"no-useless-computed-key": "warn",
"no-useless-concat": "warn",
"no-useless-constructor": "warn",
"no-useless-escape": "warn",
"no-useless-rename": "warn",
"no-void": "warn",
"no-with": "warn",
"operator-assignment": ["error", "always"],
"prefer-const": "warn",
radix: "warn",
"require-yield": "warn",
"sort-imports": "warn",
"spaced-comment": ["error", "always"],
strict: ["error", "function"],
"use-isnan": "error",
"jsdoc/check-tag-names": "warn",
"jsdoc/check-types": "warn",
"jsdoc/require-param-description": "off",
"jsdoc/require-return": "off",
"jsdoc/require-return-description": "off",
"jsdoc/require-return-type": "off",
"valid-typeof": "warn",
yoda: "warn",
},
settings: {
jsdoc: {
tagNamePreference: {
arg: "param",
argument: "param",
augments: "extends",
constructor: "class",
exception: "throws",
func: "function",
method: "function",
prop: "property",
return: "returns",
virtual: "abstract",
yield: "yields",
},
preferredTypes: {
array: "Array",
bool: "Boolean",
boolean: "Boolean",
number: "Number",
object: "Object",
str: "String",
string: "String",
},
},
},
}, {
files: ["**/*.esm.js"],
languageOptions: {
ecmaVersion: 2024,
sourceType: "module",
},
}];
module.exports = config
......@@ -57,14 +57,13 @@ class ResPartner(models.Model):
if module.get("author_type") != "odoo":
# Création du module
if module.get("name") not in existing_modules.mapped("name"):
new_module = module
new_module = module.copy()
new_module.pop("latest_version", False)
module_id = existing_modules.create(new_module)
# Mise à jour des versions
else:
# ruff: noqa: B023
module_id = existing_modules.filtered(
lambda m: m.name == module.get("name")
lambda m: m.name == module.get("name") # noqa: B023
)
module_update = ModuleVersion.search(
[
......@@ -97,9 +96,8 @@ class ResPartner(models.Model):
)
)
if module_uninstalled:
# ruff: noqa: B023
module_ids = partner.module_version_ids.filtered(
lambda m: m.module_id.name in module_uninstalled
lambda m: m.module_id.name in module_uninstalled # noqa: B023
)
module_ids.unlink()
......
/** @type {import('prettier').Config} */
const config = {
// https://github.com/prettier/prettier/issues/15388#issuecomment-1717746872
plugins: [require.resolve("@prettier/plugin-xml")],
bracketSpacing: false,
printWidth: 88,
proseWrap: "always",
semi: true,
trailingComma: "es5",
xmlWhitespaceSensitivity: "preserve",
};
module.exports = config;
......@@ -14,14 +14,13 @@
<group>
<field name="server_ip" />
</group>
<group>
</group>
<group />
</group>
<field name="module_version_ids">
<tree editable="top" default_order="module_id">
<list editable="top" default_order="module_id">
<field name="module_id" />
<field name="latest_version" />
</tree>
</list>
</field>
</page>
<page name="release" invisible="not is_company" string="Releases">
......@@ -33,12 +32,12 @@
/>
</group>
<field name="release_ids" options="{'no_create': 1, 'no_edit': 1}">
<tree>
<list>
<field name="release_date" />
<field name="user_id" />
<field name="description" />
<field name="release_module_ids" widget="many2many_tags" />
</tree>
</list>
</field>
</page>
</xpath>
......@@ -53,5 +52,4 @@
<field name="state">code</field>
<field name="code">action = records.set_release_url()</field>
</record>
</odoo>
......@@ -38,22 +38,22 @@
readonly="1"
default_order="partner_id"
>
<tree>
<list>
<field name="partner_id" />
<field name="latest_version" />
</tree>
</list>
</field>
</sheet>
</form>
</field>
</record>
<!-- Tree View -->
<!-- List View -->
<record id="res_partner_module_tree_view" model="ir.ui.view">
<field name="name">res.partner.module.tree</field>
<field name="model">res.partner.module</field>
<field name="arch" type="xml">
<tree>
<list>
<field name="name" />
<field name="author_type" />
<field name="author" />
......@@ -62,7 +62,7 @@
options="{'no_create': 1,}"
widget="many2many_tags"
/>
</tree>
</list>
</field>
</record>
......@@ -71,7 +71,6 @@
<field name="name">Liste Modules</field>
<field name="type">ir.actions.act_window</field>
<field name="res_model">res.partner.module</field>
<field name="view_mode">tree,form</field>
<field name="view_mode">list,form</field>
</record>
</odoo>
......@@ -14,16 +14,16 @@
</field>
</record>
<!-- Tree View -->
<!-- List View -->
<record id="res_partner_module_version_tree_view" model="ir.ui.view">
<field name="name">res.partner.module.version.tree</field>
<field name="model">res.partner.module.version</field>
<field name="arch" type="xml">
<tree string="Modules" editable="top">
<list 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="latest_version" />
</tree>
</list>
</field>
</record>
......@@ -35,8 +35,7 @@
<field name="name">Modules par client et version</field>
<field name="type">ir.actions.act_window</field>
<field name="res_model">res.partner.module.version</field>
<field name="view_mode">tree</field>
<field name="view_mode">list</field>
</record>
</data>
</odoo>
......@@ -66,48 +66,40 @@
options="{'string': 'Copier le lien'}"
/>
</group>
<hr />
<hr colspan="12" />
<label for="description" class="font-weight-bold" />
<field name="description" />
<hr />
<hr colspan="12" />
<label for="release_module_ids" class="font-weight-bold" />
<field
name="release_module_ids"
context="{'default_release_id': active_id}"
>
<tree editable="top">
<field name="partner_id" invisible="1" />
<field name="release_id" invisible="1" />
<field name="release_module_ids">
<list editable="top">
<field
name="module_id"
options="{'no_create': True, 'no_edit': True}"
/>
<field name="release_type" />
<field name="log" />
</tree>
</list>
</field>
</group>
</sheet>
<div class="oe_chatter">
<field name="message_follower_ids" />
<field name="activity_ids" />
<field name="message_ids" />
</div>
<chatter />
</form>
</field>
</record>
<!-- Tree View -->
<!-- List View -->
<record id="res_partner_release_tree_view" model="ir.ui.view">
<field name="name">res.partner.release.tree</field>
<field name="model">res.partner.release</field>
<field name="arch" type="xml">
<tree banner_route="/lefilament_release/header">
<!-- TODO: make JS action to create releases for multiple customers -->
<list>
<field name="release_date" />
<field name="user_id" />
<field name="partner_id" />
<field name="name" />
</tree>
</list>
</field>
</record>
......@@ -125,10 +117,9 @@
<!-- Action Window -->
<record id="res_partner_release_act_window" model="ir.actions.act_window">
<field name="name">Releases Client</field>
<field name="name">Releases Client Multiple</field>
<field name="type">ir.actions.act_window</field>
<field name="res_model">res.partner.release</field>
<field name="view_mode">tree,form,pivot</field>
<field name="view_mode">list,form,pivot</field>
</record>
</odoo>
......@@ -50,16 +50,16 @@
</field>
</record>
<!-- Tree View -->
<!-- List View -->
<record id="res_partner_release_module_tree_view" model="ir.ui.view">
<field name="name">res.partner.release.module.tree</field>
<field name="model">res.partner.release.module</field>
<field name="arch" type="xml">
<tree create="0" delete="0" edit="0">
<list create="0" delete="0" edit="0">
<field name="release_date" />
<field name="module_id" />
<field name="release_type" />
</tree>
</list>
</field>
</record>
......@@ -79,7 +79,6 @@
<field name="name">Détail Modules</field>
<field name="type">ir.actions.act_window</field>
<field name="res_model">res.partner.release.module</field>
<field name="view_mode">tree,form,pivot</field>
<field name="view_mode">list,form,pivot</field>
</record>
</odoo>
......@@ -8,7 +8,6 @@
<field name="model">multi.partner.release.wizard</field>
<field name="arch" type="xml">
<form string="Releases Client">
<sheet>
<group>
<group name="partner_details">
<field name="release_date" />
......@@ -30,19 +29,15 @@
<field name="description" />
<hr />
<label for="release_module_ids" class="font-weight-bold" />
<field
name="release_module_ids"
context="{'default_release_id': active_id}"
>
<tree editable="top">
<field name="release_id" invisible="1" />
<field name="release_module_ids">
<list editable="top">
<field
name="module_id"
options="{'no_create': True, 'no_edit': True}"
/>
<field name="release_type" />
<field name="log" />
</tree>
</list>
</field>
</group>
<footer>
......@@ -54,7 +49,6 @@
/>
<button string="Fermer" class="oe_link" special="cancel" />
</footer>
</sheet>
</form>
</field>
</record>
......@@ -67,5 +61,4 @@
<field name="view_mode">form</field>
<field name="target">new</field>
</record>
</odoo>
0% Chargement en cours ou .
You are about to add 0 people to the discussion. Proceed with caution.
Veuillez vous inscrire ou vous pour commenter