diff --git a/.copier-answers.yml b/.copier-answers.yml
index 4693e24f3..cc5e93526 100644
--- a/.copier-answers.yml
+++ b/.copier-answers.yml
@@ -1,14 +1,17 @@
# Do NOT update manually; changes here will be overwritten by Copier
-_commit: v1.3.6
+_commit: v1.5.2
_src_path: gh:oca/oca-addons-repo-template
ci: GitHub
dependency_installation_mode: PIP
generate_requirements_txt: true
include_wkhtmltopdf: false
odoo_version: 15.0
+org_name: Odoo Community Association (OCA)
+org_slug: OCA
rebel_module_groups: []
repo_description: 'TODO: add repo description.'
repo_name: contract
repo_slug: contract
+repo_website: https://github.com/OCA/contract
travis_apt_packages: []
travis_apt_sources: []
diff --git a/.eslintrc.yml b/.eslintrc.yml
index d4cc423cc..9429bc688 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:
diff --git a/.github/workflows/pre-commit.yml b/.github/workflows/pre-commit.yml
index 4ed0e929e..9b5d86c25 100644
--- a/.github/workflows/pre-commit.yml
+++ b/.github/workflows/pre-commit.yml
@@ -2,7 +2,12 @@ name: pre-commit
on:
pull_request:
+ branches:
+ - "15.0*"
push:
+ branches:
+ - "15.0"
+ - "15.0-ocabot-*"
jobs:
pre-commit:
@@ -10,11 +15,21 @@ jobs:
steps:
- uses: actions/checkout@v2
- uses: actions/setup-python@v2
+ - name: Get python version
+ run: echo "PY=$(python -VV | sha256sum | cut -d' ' -f1)" >> $GITHUB_ENV
+ - uses: actions/cache@v1
with:
- # The pylint-odoo version we use here does not support python 3.10
- # https://github.com/OCA/oca-addons-repo-template/issues/80
- # We also need to pin to an older version of python for older odoo versions
- # where we are not using black > 21. Older black versions won't work with
- # Python 3.9.8+, and we can't bump black without reformatting.
- python-version: "3.10"
- - uses: pre-commit/action@v2.0.0
+ path: ~/.cache/pre-commit
+ key: pre-commit|${{ env.PY }}|${{ hashFiles('.pre-commit-config.yaml') }}
+ - name: Install pre-commit
+ run: pip install pre-commit
+ - name: Run pre-commit
+ run: pre-commit run --all-files --show-diff-on-failure --color=always
+ - name: Check that all files generated by pre-commit are in git
+ run: |
+ newfiles="$(git ls-files --others --exclude-from=.gitignore)"
+ if [ "$newfiles" != "" ] ; then
+ echo "Please check-in the following files:"
+ echo "$newfiles"
+ exit 1
+ fi
diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml
index 8b0e56ba9..f23185845 100644
--- a/.github/workflows/test.yml
+++ b/.github/workflows/test.yml
@@ -1,4 +1,4 @@
-name: test Odoo addons
+name: tests
on:
pull_request:
@@ -6,19 +6,40 @@ on:
- "15.0*"
push:
branches:
- - "15.0*"
+ - "15.0"
+ - "15.0-ocabot-*"
jobs:
+ unreleased-deps:
+ runs-on: ubuntu-latest
+ name: Detect unreleased dependencies
+ steps:
+ - uses: actions/checkout@v2
+ - run: |
+ for reqfile in requirements.txt test-requirements.txt ; do
+ if [ -f ${reqfile} ] ; then
+ result=0
+ # reject non-comment lines that contain a / (i.e. URLs, relative paths)
+ grep "^[^#].*/" ${reqfile} || result=$?
+ if [ $result -eq 0 ] ; then
+ echo "Unreleased dependencies found in ${reqfile}."
+ exit 1
+ fi
+ fi
+ done
test:
runs-on: ubuntu-latest
container: ${{ matrix.container }}
+ name: ${{ matrix.name }}
strategy:
fail-fast: false
matrix:
include:
- container: ghcr.io/oca/oca-ci/py3.8-odoo15.0:latest
makepot: "true"
+ name: test with Odoo
- container: ghcr.io/oca/oca-ci/py3.8-ocb15.0:latest
+ name: test with OCB
services:
postgres:
image: postgres:9.6
diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml
index 95fa2eb51..321268fb2 100644
--- a/.pre-commit-config.yaml
+++ b/.pre-commit-config.yaml
@@ -46,7 +46,7 @@ repos:
- --remove-duplicate-keys
- --remove-unused-variables
- repo: https://github.com/psf/black
- rev: 21.9b0
+ rev: 22.3.0
hooks:
- id: black
- repo: https://github.com/pre-commit/mirrors-prettier
@@ -129,7 +129,7 @@ repos:
- --exit-zero
verbose: true
additional_dependencies: &pylint_deps
- - pylint-odoo==5.0.4
+ - pylint-odoo==5.0.5
- id: pylint
name: pylint with mandatory checks
args:
diff --git a/.t2d.yml b/.t2d.yml
deleted file mode 100644
index 4102ad5b1..000000000
--- a/.t2d.yml
+++ /dev/null
@@ -1,42 +0,0 @@
-language: python
-cache:
- directories:
- - $HOME/.cache/pip
- - $HOME/.cache/pre-commit
-
-python:
- - "3.8"
-
-addons:
- postgresql: "9.6"
- apt:
- packages:
- - expect-dev # provides unbuffer utility
-
-stages:
- - test
-
-jobs:
- include:
- - stage: test
- env:
- - TESTS=1 ODOO_REPO="odoo/odoo" MAKEPOT="1"
- - stage: test
- env:
- - TESTS=1 ODOO_REPO="OCA/OCB"
-env:
- global:
- - VERSION="15.0" TESTS="0" LINT_CHECK="0" MAKEPOT="0"
- - MQT_DEP=PIP
-
-install:
- - git clone --depth=1 https://github.com/OCA/maintainer-quality-tools.git
- ${HOME}/maintainer-quality-tools
- - export PATH=${HOME}/maintainer-quality-tools/travis:${PATH}
- - travis_install_nightly
-
-script:
- - travis_run_tests
-
-after_success:
- - travis_after_tests_success
diff --git a/README.md b/README.md
index f2234201d..eb8187821 100644
--- a/README.md
+++ b/README.md
@@ -1,5 +1,7 @@
-[](https://runbot.odoo-community.org/runbot/repo/github-com-oca-contract-110)
-[](https://travis-ci.com/OCA/contract)
+
+[](https://runboat.odoo-community.org/builds?repo=OCA/contract&target_branch=15.0)
+[](https://github.com/OCA/contract/actions/workflows/pre-commit.yml?query=branch%3A15.0)
+[](https://github.com/OCA/contract/actions/workflows/test.yml?query=branch%3A15.0)
[](https://codecov.io/gh/OCA/contract)
[](https://translation.odoo-community.org/engage/contract-15-0/?utm_source=widget)
@@ -30,12 +32,11 @@ addon | version | maintainers | summary
This repository is licensed under [AGPL-3.0](LICENSE).
-However, each module can have a totally different license, as long as they adhere to OCA
+However, each module can have a totally different license, as long as they adhere to Odoo Community Association (OCA)
policy. Consult each module's `__manifest__.py` file, which contains a `license` key
that explains its license.
----
-
OCA, or the [Odoo Community Association](http://odoo-community.org/), is a nonprofit
organization whose mission is to support the collaborative development of Odoo features
and promote its widespread use.
diff --git a/contract/models/contract_line.py b/contract/models/contract_line.py
index 7c6a2df61..b909f235b 100644
--- a/contract/models/contract_line.py
+++ b/contract/models/contract_line.py
@@ -682,16 +682,19 @@ class ContractLine(models.Model):
rec._prepare_value_for_stop(date_end, manual_renew_needed)
)
if post_message:
- msg = _(
- """Contract line for %(product)s
+ msg = (
+ _(
+ """Contract line for %(product)s
stopped:
- End: %(old_end)s -- %(new_end)s
"""
- ) % {
- "product": rec.name,
- "old_end": old_date_end,
- "new_end": rec.date_end,
- }
+ )
+ % {
+ "product": rec.name,
+ "old_end": old_date_end,
+ "new_end": rec.date_end,
+ }
+ )
rec.contract_id.message_post(body=msg)
else:
rec.write(
@@ -756,18 +759,21 @@ class ContractLine(models.Model):
rec.successor_contract_line_id = new_line
contract_line |= new_line
if post_message:
- msg = _(
- """Contract line for %(product)s
+ msg = (
+ _(
+ """Contract line for %(product)s
planned a successor:
- Start: %(new_date_start)s
- End: %(new_date_end)s
"""
- ) % {
- "product": rec.name,
- "new_date_start": new_line.date_start,
- "new_date_end": new_line.date_end,
- }
+ )
+ % {
+ "product": rec.name,
+ "new_date_start": new_line.date_start,
+ "new_date_end": new_line.date_end,
+ }
+ )
rec.contract_id.message_post(body=msg)
return contract_line
@@ -859,18 +865,21 @@ class ContractLine(models.Model):
is_auto_renew,
post_message=False,
)
- msg = _(
- """Contract line for %(product)s
+ msg = (
+ _(
+ """Contract line for %(product)s
suspended:
- Suspension Start: %(new_date_start)s
- Suspension End: %(new_date_end)s
"""
- ) % {
- "product": rec.name,
- "new_date_start": date_start,
- "new_date_end": date_end,
- }
+ )
+ % {
+ "product": rec.name,
+ "new_date_start": date_start,
+ "new_date_end": date_end,
+ }
+ )
rec.contract_id.message_post(body=msg)
return contract_line
@@ -1028,18 +1037,21 @@ class ContractLine(models.Model):
else:
new_line = rec._renew_extend_line(date_end)
res |= new_line
- msg = _(
- """Contract line for %(product)s
+ msg = (
+ _(
+ """Contract line for %(product)s
renewed:
- Start: %(new_date_start)s
- End: %(new_date_end)s
"""
- ) % {
- "product": rec.name,
- "new_date_start": date_start,
- "new_date_end": date_end,
- }
+ )
+ % {
+ "product": rec.name,
+ "new_date_start": date_start,
+ "new_date_end": date_end,
+ }
+ )
rec.contract_id.message_post(body=msg)
return res