Skip to content
Extraits de code Groupes Projets

Comparer les révisions

Les modifications sont affichées comme si la révision source était fusionnée avec la révision cible. En savoir plus sur la comparaison des révisions.

Source

Sélectionner le projet cible
No results found
Sélectionner une révision Git
  • 12.0
  • 13.0
  • 14.0
  • 14.0-new-process
4 résultats

Cible

Sélectionner le projet cible
  • lefilament/cgscop/cgscop_tantiemo
  • hsilvant/cgscop_tantiemo
2 résultats
Sélectionner une révision Git
  • 12.0
1 résultat
Afficher les modifications
Validations sur la source (18)
Affichage de avec 703 ajouts et 52 suppressions
# Configuration for known file extensions
[*.{css,js,json,less,md,py,rst,sass,scss,xml,yaml,yml}]
charset = utf-8
end_of_line = lf
indent_size = 4
indent_style = space
insert_final_newline = true
trim_trailing_whitespace = true
[*.{json,yml,yaml,rst,md}]
indent_size = 2
# Do not configure editor for libs and autogenerated content
[{*/static/{lib,src/lib}/**,*/static/description/index.html,*/readme/../README.rst}]
charset = unset
end_of_line = unset
indent_size = unset
indent_style = unset
insert_final_newline = false
trim_trailing_whitespace = false
env:
browser: true
es6: true
# See https://github.com/OCA/odoo-community.org/issues/37#issuecomment-470686449
parserOptions:
ecmaVersion: 2017
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
# 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
[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
.*
*.pyc
!.gitignore
# Byte-compiled / optimized / DLL files
__pycache__/
*.py[cod]
/.venv
/.pytest_cache
# C extensions
*.so
# Distribution / packaging
.Python
env/
bin/
build/
develop-eggs/
dist/
eggs/
lib/
lib64/
parts/
sdist/
var/
*.egg-info/
.installed.cfg
*.egg
*.eggs
# Installer logs
pip-log.txt
pip-delete-this-directory.txt
# Unit test / coverage reports
htmlcov/
.tox/
.coverage
.cache
nosetests.xml
coverage.xml
# Translations
*.mo
# Pycharm
.idea
# Eclipse
.settings
# Visual Studio cache/options directory
.vs/
.vscode
# OSX Files
.DS_Store
# Django stuff:
*.log
# Mr Developer
.mr.developer.cfg
.project
.pydevproject
# Rope
.ropeproject
# Sphinx documentation
docs/_build/
# Backup files
*~
*.swp
# OCA rules
!static/lib/
[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
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/|
# Library files can have extraneous formatting (even minimized)
/static/(src/)?lib/|
# Repos using Sphinx to generate docs don't need prettying
^docs/_templates/.*\.html$|
# You don't usually want a bot to modify your legal texts
(LICENSE.*|COPYING.*)
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: 7d8a9f9ad73db0976fb03cbee43d953bc29b89e9
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
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
hooks:
- id: black
- repo: https://github.com/pre-commit/mirrors-prettier
rev: v2.6.2
hooks:
- id: prettier
name: prettier (with plugin-xml)
additional_dependencies:
- "prettier@2.1.2"
- "@prettier/plugin-xml@0.12.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
hooks:
- id: eslint
verbose: true
args:
- --color
- --fix
- repo: https://github.com/pre-commit/pre-commit-hooks
rev: v4.2.0
hooks:
- id: trailing-whitespace
# exclude autogenerated files
exclude: /README\.rst$|\.pot?$
- id: end-of-file-fixer
# exclude autogenerated files
exclude: /README\.rst$|\.pot?$
- id: debug-statements
- id: fix-encoding-pragma
args: ["--remove"]
- id: check-case-conflict
- id: check-docstring-first
- id: check-executables-have-shebangs
- id: check-merge-conflict
# exclude files where underlines are not distinguishable from merge conflicts
exclude: /README\.rst$|^docs/.*\.rst$
- id: check-symlinks
- 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
hooks:
- id: flake8
name: flake8
additional_dependencies: ["flake8-bugbear==20.1.4"]
- repo: https://github.com/PyCQA/pylint
rev: v2.11.1
hooks:
- id: pylint
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
args:
- --rcfile=.pylintrc-mandatory
additional_dependencies: *pylint_deps
# 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"
[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=14.0
[MESSAGES CONTROL]
disable=all
# This .pylintrc contains optional AND mandatory checks and is meant to be
# loaded in an IDE to have it check everything, in the hope this will make
# optional checks more visible to contributors who otherwise never look at a
# green travis to see optional checks that failed.
# .pylintrc-mandatory containing only mandatory checks is used the pre-commit
# config as a blocking check.
enable=anomalous-backslash-in-string,
api-one-deprecated,
api-one-multi-together,
assignment-from-none,
attribute-deprecated,
class-camelcase,
dangerous-default-value,
dangerous-view-replace-wo-priority,
development-status-allowed,
duplicate-id-csv,
duplicate-key,
duplicate-xml-fields,
duplicate-xml-record-id,
eval-referenced,
eval-used,
incoherent-interpreter-exec-perm,
license-allowed,
manifest-author-string,
manifest-deprecated-key,
manifest-required-author,
manifest-required-key,
manifest-version-format,
method-compute,
method-inverse,
method-required-super,
method-search,
openerp-exception-warning,
pointless-statement,
pointless-string-statement,
print-used,
redundant-keyword-arg,
redundant-modulename-xml,
reimported,
relative-import,
return-in-init,
rst-syntax-error,
sql-injection,
too-few-format-args,
translation-field,
translation-required,
unreachable,
use-vim-comment,
wrong-tabs-instead-of-spaces,
xml-syntax-error,
# messages that do not cause the lint step to fail
consider-merging-classes-inherited,
create-user-wo-reset-password,
dangerous-filter-wo-user,
deprecated-module,
file-not-used,
invalid-commit,
missing-manifest-dependency,
missing-newline-extrafiles,
no-utf8-coding-comment,
odoo-addons-relative-import,
old-api7-method-defined,
redefined-builtin,
too-complex,
unnecessary-utf8-coding-comment
[REPORTS]
msg-template={path}:{line}: [{msg_id}({symbol}), {obj}] {msg}
output-format=colorized
reports=no
[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=14.0
[MESSAGES CONTROL]
disable=all
enable=anomalous-backslash-in-string,
api-one-deprecated,
api-one-multi-together,
assignment-from-none,
attribute-deprecated,
class-camelcase,
dangerous-default-value,
dangerous-view-replace-wo-priority,
development-status-allowed,
duplicate-id-csv,
duplicate-key,
duplicate-xml-fields,
duplicate-xml-record-id,
eval-referenced,
eval-used,
incoherent-interpreter-exec-perm,
license-allowed,
manifest-author-string,
manifest-deprecated-key,
manifest-required-author,
manifest-required-key,
manifest-version-format,
method-compute,
method-inverse,
method-required-super,
method-search,
openerp-exception-warning,
pointless-statement,
pointless-string-statement,
print-used,
redundant-keyword-arg,
redundant-modulename-xml,
reimported,
relative-import,
return-in-init,
rst-syntax-error,
sql-injection,
too-few-format-args,
translation-field,
translation-required,
unreachable,
use-vim-comment,
wrong-tabs-instead-of-spaces,
xml-syntax-error
[REPORTS]
msg-template={path}:{line}: [{msg_id}({symbol}), {obj}] {msg}
output-format=colorized
reports=no
{
"name": "CG SCOP - Connecteur Tantiemo",
"summary": "Import des donnees de Tantiemo",
"version": "12.0.1.0.1",
"development_status": "Beta",
"version": "14.0.1.0.0",
"author": "Le Filament",
"license": "AGPL-3",
"application": False,
"depends": ['cgscop_partner'],
"depends": ["cgscop_partner"],
"data": [
"security/security_rules.xml",
"security/ir.model.access.csv",
"views/res_partner.xml",
"views/scop_financial_tools.xml",
"views/tantiemo_config.xml",
"views/menus.xml",
"datas/cron_tantiemo.xml",
],
'installable': True,
'auto_install': False,
"installable": True,
"auto_install": False,
}
......@@ -3,4 +3,5 @@
from . import res_partner
from . import scop_financial_tools
from . import scop_pargest
from . import tantiemo_config
# © 2019 Le Filament (<http://www.le-filament.com>)
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
from odoo import models, fields
from odoo import fields, models
class TantiemoPartner(models.Model):
_inherit = "res.partner"
financial_tools_ids = fields.One2many(
comodel_name='scop.financial.tools',
inverse_name='partner_id',
string='Outils financiers')
comodel_name="scop.financial.tools",
inverse_name="partner_id",
string="Outils financiers",
)
pargest_ids = fields.One2many(
comodel_name="scop.pargest",
inverse_name="partner_id",
string="Outils Pargest",
)
......@@ -2,11 +2,9 @@
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
import csv
import io
import logging
from ftplib import FTP
from odoo import models, fields, tools, exceptions
from odoo import fields, models
_logger = logging.getLogger(__name__)
......@@ -17,14 +15,19 @@ class ScopFinancialTools(models.Model):
_order = "date_notification desc"
partner_id = fields.Many2one(
comodel_name='res.partner',
string='Organisme',
domain=[('is_company', '=', True)],
ondelete='restrict', index=True)
riga_id = fields.Integer("ID RIGA")
comodel_name="res.partner",
string="Organisme",
required=True,
domain=[("is_company", "=", True)],
ondelete="restrict",
index=True,
)
odoo_id = fields.Integer("ID Odoo")
nom_scop = fields.Char("Nom Scop")
outil = fields.Char("Type d’outil")
type_intervention = fields.Char("Type d'intervention",)
type_intervention = fields.Char(
"Type d'intervention",
)
typo_financement = fields.Char("Typologie de financement")
no_intervention = fields.Char("No intervention", index=True)
montant_accorde = fields.Float("Montant accordé")
......@@ -46,37 +49,41 @@ class ScopFinancialTools(models.Model):
def import_data(self):
# Get Tantiemo Filename
config = self.env['tantiemo.config'].sudo().search([
['active', '=', True]],
limit=1)
filename = (config.path +
config.name)
config = (
self.env["tantiemo.config"].sudo().search([["active", "=", True]], limit=1)
)
filename = config.path + config.name
# Get File
csv_file = open(filename, 'rt', encoding="ISO-8859-1")
# Suppression des lignes
csv_file = open(filename, "rt", encoding="ISO-8859-1")
# Suppression de la table
self.search([]).unlink()
self.env.cr.execute("ALTER SEQUENCE scop_financial_tools_id_seq RESTART WITH 1")
try:
# Création du lecteur CSV.
reader = csv.DictReader(csv_file, delimiter=';')
reader = csv.DictReader(csv_file, delimiter=";")
# Lecture de chaque ligne
for row in reader:
vals_financial_tools = row
# Traitement des valeurs nulles
self._check_empty(vals_financial_tools)
# récupération du dossier
partner_id = self.env['res.partner'].search([
['is_company', '=', True],
['id_riga', '=', vals_financial_tools['riga_id']]])
partner_id = self.env["res.partner"].search(
[
["is_company", "=", True],
["id", "=", vals_financial_tools["odoo_id"]],
]
)
# si le dossier n'existe pas, on le crée,
# si il existe, on le met à jour
if partner_id:
vals_financial_tools.update({'partner_id': partner_id.id})
vals_financial_tools.update({"partner_id": partner_id.id})
self.create(vals_financial_tools)
except Exception as e:
_logger.error(e.__str__())
def _check_empty(self, dict_value):
""" Parcours les clés d'un dictionnaire pour vérifier si la valeur
"""
Parcours les clés d'un dictionnaire pour vérifier si la valeur
est vide. Si elle est vide, la valeur est mise à False
:param dict_value : dictionnaire à traiter
......@@ -88,6 +95,3 @@ class ScopFinancialTools(models.Model):
if not value:
dict_value[key] = False
return dict_value
for key, value in dict_value.items():
if not value:
dict_value[key] = False
# © 2019 Le Filament (<http://www.le-filament.com>)
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
import logging
from odoo import fields, models
_logger = logging.getLogger(__name__)
class ScopPargest(models.Model):
_name = "scop.pargest"
_description = "Outil Pargest"
_order = "date_decision desc"
partner_id = fields.Many2one(
comodel_name="res.partner",
string="Organisme",
required=True,
domain=[("is_company", "=", True)],
ondelete="restrict",
index=True,
)
no_intervention = fields.Char("No convention", index=True)
date_decision = fields.Date("Date décision")
date_end = fields.Date("Date de fin")
typo_financement = fields.Selection(
[
("TP", "Titres participatifs"),
("GA", "Garanties"),
("PP", "Pret participatifs"),
("OB", "Obligations"),
("PA", "Parts"),
],
string="Typologie de financement",
)
montant_accorde = fields.Float("Montant accordé")
duree_initiale = fields.Integer("Durée initiale (mois)")
# © 2019 Le Filament (<http://www.le-filament.com>)
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
from odoo import models, fields
from odoo import fields, models
class CgscopTantiemoConfig(models.Model):
_name = 'tantiemo.config'
_description = 'Configuration tantiemo'
_name = "tantiemo.config"
_description = "Configuration tantiemo"
name = fields.Char(string='Nom Fichier')
path = fields.Char('Path fichier')
active = fields.Boolean('Actif', default=False)
name = fields.Char(string="Nom Fichier")
path = fields.Char("Path fichier")
active = fields.Boolean("Actif", default=False)
def toogle_active_config(self):
"""Active la connexion sélectionnée et désactive
toutes les autres connexions
"""
for item in self.env['tantiemo.config'].search([]):
for item in self.env["tantiemo.config"].search([]):
item.active = False
self.active = True
def import_datas(self):
self.env['scop.financial.tools'].sudo().import_data()
self.env["scop.financial.tools"].sudo().import_data()
......@@ -2,4 +2,6 @@ id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
access_financial_tools_group_user,access_financial_tools_group_user,model_scop_financial_tools,base.group_user,1,0,0,0
admin_financial_tools_group_user,access_financial_tools_group_user,model_scop_financial_tools,cgscop_partner.group_cg_administrator,1,1,1,1
access_tantiemo_config,access_tantiemo_config,model_tantiemo_config,cgscop_partner.group_cg_administrator,1,1,1,1
access_pargest_group_user,access_pargest_group_user,model_scop_pargest,base.group_user,1,0,0,0
manager_pargest_group_user,manager_pargest_group_user,model_scop_pargest,cgscop_tantiemo.group_pargest_manager,1,1,1,0
admin_pargest_group_user,admin_pargest_group_user,model_scop_pargest,cgscop_partner.group_cg_administrator,1,1,1,1
<?xml version="1.0" ?>
<!-- Copyright 2019 Le Filament
License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). -->
<odoo>
<data>
<record id="group_pargest_manager" model="res.groups">
<field name="name">Modifier les financements Pargest</field>
<field name="category_id" ref="cgscop_partner.module_cgscop_category" />
</record>
</data>
</odoo>
static/description/icon.png

8,95 ko | W: 0px | H: 0px

static/description/icon.png

15,5 ko | W: 0px | H: 0px

static/description/icon.png
static/description/icon.png
static/description/icon.png
static/description/icon.png
  • 2-up
  • Swipe
  • Onion skin
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).
from . import test_tantiemo