diff --git a/.copier-answers.yml b/.copier-answers.yml index 8c0ac740..f68532d2 100644 --- a/.copier-answers.yml +++ b/.copier-answers.yml @@ -1,12 +1,15 @@ # Do NOT update manually; changes here will be overwritten by Copier -_commit: v1.0.4 +_commit: v1.7.0 _src_path: https://github.com/OCA/oca-addons-repo-template.git +ci: Travis dependency_installation_mode: OCA generate_requirements_txt: true include_wkhtmltopdf: false odoo_version: 13.0 +org_name: Odoo Community Association (OCA) +org_slug: OCA rebel_module_groups: [] -repo_description: "This project is meant to gather all community extensions of Odoo's +repo_description: 'This project is meant to gather all community extensions of Odoo''s knowledge and document management. @@ -15,8 +18,9 @@ repo_description: "This project is meant to gather all community extensions of O - implement means to structure knowledge - - provide access to knowledge/documents" + - provide access to knowledge/documents' repo_name: Knowledge repo_slug: knowledge +repo_website: https://github.com/OCA/knowledge travis_apt_packages: [] travis_apt_sources: [] diff --git a/.eslintrc.yml b/.eslintrc.yml index 88f2881b..9429bc68 100644 --- a/.eslintrc.yml +++ b/.eslintrc.yml @@ -1,9 +1,16 @@ env: browser: true + es6: true # See https://github.com/OCA/odoo-community.org/issues/37#issuecomment-470686449 parserOptions: - ecmaVersion: 2017 + ecmaVersion: 2019 + +overrides: + - files: + - "**/*.esm.js" + parserOptions: + sourceType: module # Globals available in Odoo that shouldn't produce errorings globals: @@ -14,7 +21,7 @@ globals: moment: readonly odoo: readonly openerp: readonly - Promise: readonly + owl: 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 index 44ed868f..e397e8ed 100644 --- a/.flake8 +++ b/.flake8 @@ -1,5 +1,5 @@ [flake8] -max-line-length = 80 +max-line-length = 88 max-complexity = 16 # B = bugbear # B9 = bugbear opinionated (incl line length) @@ -8,3 +8,5 @@ select = C,E,F,W,B,B9 # 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/.github/workflows/pre-commit.yml b/.github/workflows/pre-commit.yml new file mode 100644 index 00000000..aafa1388 --- /dev/null +++ b/.github/workflows/pre-commit.yml @@ -0,0 +1,37 @@ +name: pre-commit + +on: + pull_request: + branches: + - "13.0*" + push: + branches: + - "13.0" + - "13.0-ocabot-*" + +jobs: + pre-commit: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v2 + - uses: actions/setup-python@v2 + with: + python-version: "3.8" + - name: Get python version + run: echo "PY=$(python -VV | sha256sum | cut -d' ' -f1)" >> $GITHUB_ENV + - uses: actions/cache@v1 + with: + 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/stale.yml b/.github/workflows/stale.yml new file mode 100644 index 00000000..1693a125 --- /dev/null +++ b/.github/workflows/stale.yml @@ -0,0 +1,69 @@ +name: Mark stale issues and pull requests + +on: + schedule: + - cron: "0 12 * * 0" + +jobs: + stale: + runs-on: ubuntu-latest + steps: + - name: Stale PRs and issues policy + uses: actions/stale@v4 + with: + repo-token: ${{ secrets.GITHUB_TOKEN }} + # General settings. + ascending: true + remove-stale-when-updated: true + # Pull Requests settings. + # 120+30 day stale policy for PRs + # * Except PRs marked as "no stale" + days-before-pr-stale: 120 + days-before-pr-close: 30 + exempt-pr-labels: "no stale" + stale-pr-label: "stale" + stale-pr-message: > + There hasn't been any activity on this pull request in the past 4 months, so + it has been marked as stale and it will be closed automatically if no + further activity occurs in the next 30 days. + + If you want this PR to never become stale, please ask a PSC member to apply + the "no stale" label. + # Issues settings. + # 180+30 day stale policy for open issues + # * Except Issues marked as "no stale" + days-before-issue-stale: 180 + days-before-issue-close: 30 + exempt-issue-labels: "no stale,needs more information" + stale-issue-label: "stale" + stale-issue-message: > + There hasn't been any activity on this issue in the past 6 months, so it has + been marked as stale and it will be closed automatically if no further + activity occurs in the next 30 days. + + If you want this issue to never become stale, please ask a PSC member to + apply the "no stale" label. + + # 15+30 day stale policy for issues pending more information + # * Issues that are pending more information + # * Except Issues marked as "no stale" + - name: Needs more information stale issues policy + uses: actions/stale@v4 + with: + repo-token: ${{ secrets.GITHUB_TOKEN }} + ascending: true + only-labels: "needs more information" + exempt-issue-labels: "no stale" + days-before-stale: 15 + days-before-close: 30 + days-before-pr-stale: -1 + days-before-pr-close: -1 + remove-stale-when-updated: true + stale-issue-label: "stale" + stale-issue-message: > + This issue needs more information and there hasn't been any activity + recently, so it has been marked as stale and it will be closed automatically + if no further activity occurs in the next 30 days. + + If you think this is a mistake, please ask a PSC member to remove the "needs + more information" label. diff --git a/.isort.cfg b/.isort.cfg index 7683badf..0ec187ef 100644 --- a/.isort.cfg +++ b/.isort.cfg @@ -10,3 +10,4 @@ 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 24ff9296..8113e1fb 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -1,7 +1,11 @@ exclude: | (?x) + # NOT INSTALLABLE ADDONS + # END NOT INSTALLABLE ADDONS # 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/| # Maybe reactivate this when all README files include prettier ignore tags? ^README\.md$| # Library files can have extraneous formatting (even minimized) @@ -14,30 +18,48 @@ default_language_version: python: python3 node: "14.13.0" repos: + - repo: local + hooks: + # These files are most likely copier diff rejection junks; if found, + # review them manually, fix the problem (if needed) and remove them + - id: forbidden-files + name: forbidden files + entry: found forbidden files; remove them + language: fail + files: "\\.rej$" + - repo: https://github.com/oca/maintainer-tools + rev: ab1d7f6 + hooks: + # update the NOT INSTALLABLE ADDONS section above + - id: oca-update-pre-commit-excluded-addons + - id: oca-fix-manifest-website + args: ["https://github.com/OCA/knowledge"] - repo: https://github.com/myint/autoflake rev: v1.4 hooks: - id: autoflake - args: ["-i", "--ignore-init-module-imports"] + 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: 19.10b0 hooks: - id: black - - repo: https://github.com/prettier/pre-commit - rev: "v1.19.1" + additional_dependencies: ["click<8.1.0"] + - repo: https://github.com/pre-commit/mirrors-prettier + rev: v1.19.1 hooks: - id: prettier - # TODO Avoid awebdeveloper/pre-commit-prettier if possible - # HACK https://github.com/prettier/prettier/issues/7407 - - repo: https://github.com/awebdeveloper/pre-commit-prettier - rev: v0.0.1 - hooks: - - id: prettier - name: prettier xml plugin + name: prettier (with plugin-xml) + entry: prettier --write --list-different additional_dependencies: - "prettier@1.19.1" - "@prettier/plugin-xml@0.7.2" - files: \.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: v6.8.0 hooks: @@ -68,34 +90,11 @@ repos: - id: check-xml - id: mixed-line-ending args: ["--fix=lf"] - - repo: https://gitlab.com/pycqa/flake8 - rev: 3.7.9 - hooks: - - id: flake8 - name: flake8 except __init__.py - exclude: /__init__\.py$ - additional_dependencies: ["flake8-bugbear==19.8.0"] - - id: flake8 - name: flake8 only __init__.py - args: ["--extend-ignore=F401"] # ignore unused imports in __init__.py - files: /__init__\.py$ - additional_dependencies: ["flake8-bugbear==19.8.0"] - - repo: https://github.com/pre-commit/mirrors-pylint - rev: v2.5.3 - hooks: - - id: pylint - name: pylint with optional checks - args: ["--rcfile=.pylintrc", "--exit-zero"] - verbose: true - additional_dependencies: ["pylint-odoo==3.5.0"] - - id: pylint - name: pylint with mandatory checks - args: ["--rcfile=.pylintrc-mandatory"] - additional_dependencies: ["pylint-odoo==3.5.0"] - repo: https://github.com/asottile/pyupgrade rev: v1.26.2 hooks: - id: pyupgrade + args: ["--keep-percent-format"] - repo: https://github.com/pre-commit/mirrors-isort rev: v4.3.21 hooks: @@ -106,3 +105,25 @@ repos: rev: 2.5.2 hooks: - id: setuptools-odoo-make-default + - repo: https://gitlab.com/pycqa/flake8 + rev: 3.7.9 + hooks: + - id: flake8 + name: flake8 + additional_dependencies: ["flake8-bugbear==19.8.0"] + - repo: https://github.com/pre-commit/mirrors-pylint + rev: v2.5.3 + hooks: + - id: pylint + name: pylint with optional checks + args: + - --rcfile=.pylintrc + - --exit-zero + verbose: true + additional_dependencies: &pylint_deps + - pylint-odoo==3.5.0 + - id: pylint + name: pylint with mandatory checks + args: + - --rcfile=.pylintrc-mandatory + additional_dependencies: *pylint_deps diff --git a/.pylintrc b/.pylintrc index c3d75e12..20d850df 100644 --- a/.pylintrc +++ b/.pylintrc @@ -1,3 +1,5 @@ + + [MASTER] load-plugins=pylint_odoo score=n diff --git a/.pylintrc-mandatory b/.pylintrc-mandatory index 3e19630b..1c8f3771 100644 --- a/.pylintrc-mandatory +++ b/.pylintrc-mandatory @@ -1,3 +1,4 @@ + [MASTER] load-plugins=pylint_odoo score=n diff --git a/.travis.yml b/.travis.yml index ced1529e..adfc6117 100644 --- a/.travis.yml +++ b/.travis.yml @@ -14,17 +14,10 @@ addons: - expect-dev # provides unbuffer utility stages: - - linting - test jobs: include: - - stage: linting - name: "pre-commit" - install: pip install pre-commit - script: pre-commit run --all --show-diff-on-failure --verbose --color always - after_success: - before_install: - stage: test env: - TESTS=1 ODOO_REPO="odoo/odoo" MAKEPOT="1" diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md deleted file mode 100644 index 9ac71fee..00000000 --- a/CONTRIBUTING.md +++ /dev/null @@ -1,10 +0,0 @@ -# OCA Guidelines - -Please follow the official guide from the -[OCA Guidelines page](https://odoo-community.org/page/contributing). - -## Project Specific Guidelines - - - -This project does not have specific coding guidelines. diff --git a/README.md b/README.md index 26962741..3e357e39 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,5 @@ -[![Runbot Status](https://runbot.odoo-community.org/runbot/badge/flat/118/13.0.svg)](https://runbot.odoo-community.org/runbot/repo/github-com-oca-knowledge-118) + +[![Runboat](https://img.shields.io/badge/runboat-Try%20me-875A7B.png)](https://runboat.odoo-community.org/builds?repo=OCA/knowledge&target_branch=13.0) [![Build Status](https://travis-ci.com/OCA/knowledge.svg?branch=13.0)](https://travis-ci.com/OCA/knowledge) [![codecov](https://codecov.io/gh/OCA/knowledge/branch/13.0/graph/badge.svg)](https://codecov.io/gh/OCA/knowledge) [![Translation Status](https://translation.odoo-community.org/widgets/knowledge-13-0/-/svg-badge.svg)](https://translation.odoo-community.org/engage/knowledge-13-0/?utm_source=widget) @@ -43,12 +44,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/attachment_category/__manifest__.py b/attachment_category/__manifest__.py index 5a09a117..fc64168a 100644 --- a/attachment_category/__manifest__.py +++ b/attachment_category/__manifest__.py @@ -8,6 +8,7 @@ "version": "13.0.1.0.0", "license": "AGPL-3", "author": "ACSONE SA/NV,Odoo Community Association (OCA)", + "website": "https://github.com/OCA/knowledge", "depends": ["base"], "data": [ "views/ir_attachment.xml", diff --git a/document_page_approval/__manifest__.py b/document_page_approval/__manifest__.py index d20270e9..e9597a6c 100644 --- a/document_page_approval/__manifest__.py +++ b/document_page_approval/__manifest__.py @@ -5,7 +5,7 @@ "name": "Document Page Approval", "version": "13.0.1.3.0", "author": "Savoir-faire Linux, Odoo Community Association (OCA)", - "website": "http://www.savoirfairelinux.com", + "website": "https://github.com/OCA/knowledge", "license": "AGPL-3", "category": "Knowledge Management", "depends": ["document_page", "mail"],