diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 732d0c4a644eb444d6b4385643ff32fab19fab52..4acca684ec8c5cda7b3ecd21b9e568ab03d57e8c 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -6,6 +6,8 @@ exclude: | ^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) /static/(src/)?lib/| # Repos using Sphinx to generate docs don't need prettying @@ -25,8 +27,13 @@ repos: entry: found forbidden files; remove them language: fail files: "\\.rej$" + - id: en-po-files + 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/oca/maintainer-tools - rev: 7d8a9f9ad73db0976fb03cbee43d953bc29b89e9 + rev: ab1d7f6 hooks: # update the NOT INSTALLABLE ADDONS section above - id: oca-update-pre-commit-excluded-addons @@ -48,7 +55,7 @@ repos: hooks: - id: black - repo: https://github.com/pre-commit/mirrors-prettier - rev: v2.6.2 + rev: v2.1.2 hooks: - id: prettier name: prettier (with plugin-xml) @@ -59,7 +66,7 @@ repos: - --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 + rev: v7.8.1 hooks: - id: eslint verbose: true @@ -67,7 +74,7 @@ repos: - --color - --fix - repo: https://github.com/pre-commit/pre-commit-hooks - rev: v4.2.0 + rev: v3.2.0 hooks: - id: trailing-whitespace # exclude autogenerated files @@ -89,37 +96,33 @@ repos: - id: mixed-line-ending args: ["--fix=lf"] - repo: https://github.com/asottile/pyupgrade - rev: v2.32.1 + rev: v2.7.2 hooks: - id: pyupgrade args: ["--keep-percent-format"] - repo: https://github.com/PyCQA/isort - rev: 5.10.1 + rev: 5.12.0 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/PyCQA/flake8 + rev: 3.8.3 hooks: - id: flake8 name: flake8 additional_dependencies: ["flake8-bugbear==20.1.4"] - - repo: https://github.com/PyCQA/pylint - rev: v2.11.1 + - repo: https://github.com/OCA/pylint-odoo + rev: 7.0.2 hooks: - - id: pylint + - id: pylint_odoo 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 + - id: pylint_odoo args: - --rcfile=.pylintrc-mandatory - additional_dependencies: *pylint_deps diff --git a/models/res_partner.py b/models/res_partner.py index 8660763b8cb336fa5c46dc0f719230937a6754e4..2925c909602c4b2e49c72079c624a1e87aa12028 100644 --- a/models/res_partner.py +++ b/models/res_partner.py @@ -177,18 +177,27 @@ class ScopPartner(models.Model): def fill_membership_staff(self): self.ensure_one() - staff_id = self.env["scop.partner.staff"].search([ - ("partner_id", "=", self.id), - ("type_entry", "=", "membership"), - ("effective_date", ">", fields.Date.subtract(fields.Date.today(), years=1)) - ], limit=1) + staff_id = self.env["scop.partner.staff"].search( + [ + ("partner_id", "=", self.id), + ("type_entry", "=", "membership"), + ( + "effective_date", + ">", + fields.Date.subtract(fields.Date.today(), years=1), + ), + ], + limit=1, + ) if not staff_id: - staff_id = staff_id.create({ - "partner_id": self.id, - "type_entry": "membership", - "effective_date": fields.Date.today(), - "staff_count": 0, - }) + staff_id = staff_id.create( + { + "partner_id": self.id, + "type_entry": "membership", + "effective_date": fields.Date.today(), + "staff_count": 0, + } + ) wizard = self.env["scop.partner.staff.membership.wizard"].create( {"partner_id": self.id, "staff_id": staff_id.id} @@ -379,8 +388,8 @@ class ScopPartner(models.Model): ) else: staff_line = self.staff_ids.filtered( - lambda s: s.type_entry == "membership").sorted( - key="effective_date", reverse=True) + lambda s: s.type_entry == "membership" + ).sorted(key="effective_date", reverse=True) staff_number = staff_line[0].staff_count if staff_line else 0 amount_adhesion = self.get_amount_adhesion(staff_number) @@ -457,15 +466,16 @@ class ScopPartner(models.Model): @return : True """ staff_line = self.staff_ids.filtered( - lambda s: s.type_entry == "membership").sorted( - key="effective_date", reverse=True - ) + lambda s: s.type_entry == "membership" + ).sorted(key="effective_date", reverse=True) if staff_line and staff_line[0].staff_count > 0: - self.update({ - "membership_status": "soumis_cg", - "date_transmission_cg": fields.Date.today(), - "list_logs": False, - }) + self.update( + { + "membership_status": "soumis_cg", + "date_transmission_cg": fields.Date.today(), + "list_logs": False, + } + ) self.affectation_contact_ministere() else: raise UserError(_("Les effectifs à l'adhésion ne sont pas renseignés.")) @@ -528,11 +538,13 @@ class ScopPartner(models.Model): # Create invoice adhésion invoice = self.create_invoice_adhesion() self.invoice_adhesion_id = invoice - self.update({ - "membership_status": "member", - "extranet_update_company": True, - "extranet_service_access": True, - }) + self.update( + { + "membership_status": "member", + "extranet_update_company": True, + "extranet_service_access": True, + } + ) # TODO: Supprimer ? # set liasse_fiscale_adhesion as qualified diff --git a/security/ir.model.access.csv b/security/ir.model.access.csv index cd6ee420d00c7c2e0583bbf57708503ffa107ac4..99f6ac788326bbbf601f4215f47d888d0f10e11c 100644 --- a/security/ir.model.access.csv +++ b/security/ir.model.access.csv @@ -8,4 +8,4 @@ admin_scop_adhesion_file,admin_scop_adhesion_file,model_scop_adhesion_file,cgsco cg_access_compulsory_fields_suivi_wizard,cg_access_compulsory_fields_suivi_wizard,model_scop_compulsory_fields_suivi_wizard,base.group_user,1,1,1,0 cg_access_adhesion_year_wizard,cg_access_adhesion_year_wizard,model_scop_adhesion_year_wizard,cgscop_partner.group_cg_administrative,1,1,1,0 access_scop_partner_staff_membership_wizard,access_scop_partner_staff_membership_wizard,model_scop_partner_staff_membership_wizard,base.group_user,1,1,1,1 -access_scop_submit_membership_wizard,access_scop_submit_membership_wizard,model_scop_submit_membership_wizard,base.group_user,1,1,1,1 \ No newline at end of file +access_scop_submit_membership_wizard,access_scop_submit_membership_wizard,model_scop_submit_membership_wizard,base.group_user,1,1,1,1 diff --git a/views/res_partner.xml b/views/res_partner.xml index beb13874dd89496bea0b947657afb2b25eb7a5f1..53b16e7a6ee3491f5fe343586fba5f6a974d3da2 100644 --- a/views/res_partner.xml +++ b/views/res_partner.xml @@ -65,7 +65,14 @@ attrs="{'invisible': [('membership_status', '!=', 'adhesion')]}" role="alert" class="alert alert-warning" - >Il est nécessaire de renseigner <button class="btn btn-info btn-sm" name="fill_membership_staff" type="object">les effectifs</button> et <button class="btn btn-info btn-sm" name="">les données financières</button> pour valider l'adhésion. + >Il est nécessaire de renseigner <button + class="btn btn-info btn-sm" + name="fill_membership_staff" + type="object" + >les effectifs</button> et <button + class="btn btn-info btn-sm" + name="" + >les données financières</button> pour valider l'adhésion. </div> </xpath> @@ -77,7 +84,8 @@ class="alert alert-warning" colspan="2" > - Charger les <strong>Statuts</strong> et <strong>la publication au JO</strong> dans l'onglet <i>Documents</i>. + Charger les <strong>Statuts</strong> et <strong + >la publication au JO</strong> dans l'onglet <i>Documents</i>. </div> </xpath> <!-- Alert warning pour le KBis --> diff --git a/views/scop_adhesion_file.xml b/views/scop_adhesion_file.xml index 1035b609011d1d68d8d8f8c73cc8409995154733..15d92b7b54e1a7514086ea5be896800e73609bab 100644 --- a/views/scop_adhesion_file.xml +++ b/views/scop_adhesion_file.xml @@ -9,7 +9,7 @@ <field name="model">scop.adhesion.file</field> <field name="arch" type="xml"> <search string="Recherche Documents"> - <field name="name"/> + <field name="name" /> <filter string="Projets de création" name="project" diff --git a/wizard/scop_compulsory_fields_suivi_wizard.py b/wizard/scop_compulsory_fields_suivi_wizard.py index 7681e705babb91d495f9014f9c424671589257d6..6f3a5c9a74157fb6476d1f312b88e1fff68544d8 100644 --- a/wizard/scop_compulsory_fields_suivi_wizard.py +++ b/wizard/scop_compulsory_fields_suivi_wizard.py @@ -28,7 +28,9 @@ class ScopCompulsoryFieldsSuiviWizard(models.TransientModel): related="partner_id.is_registration_in_progress", readonly=False ) naf_id = fields.Many2one(related="partner_id.naf_id", readonly=False) - registration_date = fields.Date(related="partner_id.registration_date", readonly=False) + registration_date = fields.Date( + related="partner_id.registration_date", readonly=False + ) siret = fields.Char(related="partner_id.siret", readonly=False) with_adhesion = fields.Boolean("Avec adhésion") list_logs = fields.Text("Liste des erreurs") @@ -47,14 +49,16 @@ class ScopCompulsoryFieldsSuiviWizard(models.TransientModel): if form_id in form_id._get_lm_form(): self.partner_id.write({"extranet_service_access": True}) if not self.partner_id.director_ids: - raise UserError(_( - "Il est nécessaire de renseigner les mandataires pour valider" - )) + raise UserError( + _("Il est nécessaire de renseigner les mandataires pour valider") + ) for director in self.partner_id.director_ids: - director.update({ - "extranet_access": True, - "extranet_update_company": True, - }) + director.update( + { + "extranet_access": True, + "extranet_update_company": True, + } + ) return {"type": "ir.actions.act_window_close"} diff --git a/wizard/scop_compulsory_fields_suivi_wizard.xml b/wizard/scop_compulsory_fields_suivi_wizard.xml index 5fa97b48b786e4611bf6fb32ad06a5cd72705805..b57fb30981a50b42add21244442a3d3f1915c3d2 100644 --- a/wizard/scop_compulsory_fields_suivi_wizard.xml +++ b/wizard/scop_compulsory_fields_suivi_wizard.xml @@ -12,12 +12,14 @@ <field name="model">scop.compulsory.fields.suivi.wizard</field> <field name="arch" type="xml"> <form string="Confirmer les champs obligatoires"> - <div - class="alert alert-warning" - role="alert" - > + <div class="alert alert-warning" role="alert"> <p> - Il es nécessaire de charger les <strong>statuts</strong><span attrs="{'invisible': [('is_registration_in_progress', '=', True)]}">, le <strong>KBIS</strong></span> et <strong>l'annonce de publication au JO</strong> dans l'onglet <i>Documents</i> de la coopérative pour valider sa création. + Il es nécessaire de charger les <strong + >statuts</strong><span + attrs="{'invisible': [('is_registration_in_progress', '=', True)]}" + >, le <strong>KBIS</strong></span> et <strong + >l'annonce de publication au JO</strong> dans l'onglet <i + >Documents</i> de la coopérative pour valider sa création. </p> </div> <div diff --git a/wizard/scop_partner_staff_membership_wizard.py b/wizard/scop_partner_staff_membership_wizard.py index 318539183c25f26e99ed1d6d0b8f83bdc731992f..06020fc94b07e64338021ad1317447d0b1c61adb 100644 --- a/wizard/scop_partner_staff_membership_wizard.py +++ b/wizard/scop_partner_staff_membership_wizard.py @@ -11,21 +11,15 @@ class ScopPartnerStaffMembershipWizard(models.TransientModel): # ------------------------------------------------------ # Field declaration # ------------------------------------------------------ - partner_id = fields.Many2one( - comodel_name="res.partner", required=True - ) - staff_id = fields.Many2one( - comodel_name="scop.partner.staff", required=True - ) + partner_id = fields.Many2one(comodel_name="res.partner", required=True) + staff_id = fields.Many2one(comodel_name="scop.partner.staff", required=True) effective_date = fields.Date(related="staff_id.effective_date", readonly=False) staff_count = fields.Integer(related="staff_id.staff_count", readonly=False) staff_shareholder_count = fields.Integer( - related="staff_id.staff_shareholder_count", - readonly=False + related="staff_id.staff_shareholder_count", readonly=False ) staff_shareholder_total = fields.Integer( - related="staff_id.staff_shareholder_total", - readonly=False + related="staff_id.staff_shareholder_total", readonly=False ) staff_average = fields.Float(related="staff_id.staff_average", readonly=False) comment = fields.Char(related="staff_id.comment", readonly=False) diff --git a/wizard/scop_partner_staff_membership_wizard.xml b/wizard/scop_partner_staff_membership_wizard.xml index 272995f249e17e638d7115683667608ca8702347..2964c5a908800da93377bc591a4aae82a2f58495 100644 --- a/wizard/scop_partner_staff_membership_wizard.xml +++ b/wizard/scop_partner_staff_membership_wizard.xml @@ -4,27 +4,17 @@ <odoo> <data> - <record - model="ir.ui.view" - id="scop_partner_staff_membership_wizard_form" - > + <record model="ir.ui.view" id="scop_partner_staff_membership_wizard_form"> <field name="name">scop.partner.staff.membership.wizard.form</field> <field name="model">scop.partner.staff.membership.wizard</field> <field name="arch" type="xml"> <form string="Effectifs à l'adhésion"> <h5>Effectifs à l'adhésion</h5> - <hr/> + <hr /> <group> <group> - <field - name="partner_id" - readonly="1" - /> - <field - name="staff_id" - readonly="1" - invisible="1" - /> + <field name="partner_id" readonly="1" /> + <field name="staff_id" readonly="1" invisible="1" /> <field name="effective_date" required="1" /> </group> <group> @@ -49,7 +39,10 @@ </field> </record> - <record id="scop_partner_staff_membership_wizard_action" model="ir.actions.act_window"> + <record + id="scop_partner_staff_membership_wizard_action" + model="ir.actions.act_window" + > <field name="name">Effectif à l'adhésion</field> <field name="type">ir.actions.act_window</field> <field name="res_model">scop.partner.staff.membership.wizard</field> diff --git a/wizard/scop_submit_membership_wizard.py b/wizard/scop_submit_membership_wizard.py index 59a1b0d60167912aa578125fd0c57cef8c01549d..08f0ae194097e0c8330a7cc714ef8192501553dc 100644 --- a/wizard/scop_submit_membership_wizard.py +++ b/wizard/scop_submit_membership_wizard.py @@ -1,8 +1,7 @@ # © 2021 Le Filament (<http://www.le-filament.com>) # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). -from odoo import _, fields, models -from odoo.exceptions import UserError +from odoo import fields, models class ScopSubmitMembershipWizard(models.TransientModel): diff --git a/wizard/scop_submit_membership_wizard.xml b/wizard/scop_submit_membership_wizard.xml index 8738c8d516643f4c92d474c1a7240200b093f490..c61b8d11cc782a1423aae273d0b079b964874a86 100644 --- a/wizard/scop_submit_membership_wizard.xml +++ b/wizard/scop_submit_membership_wizard.xml @@ -4,10 +4,7 @@ <odoo> <data> - <record - model="ir.ui.view" - id="scop_submit_membership_wizard_form" - > + <record model="ir.ui.view" id="scop_submit_membership_wizard_form"> <field name="name">scop.submit.membership.wizard.form</field> <field name="model">scop.submit.membership.wizard</field> <field name="arch" type="xml">