Skip to content
Snippets Groups Projects

Compare revisions

Changes are shown as if the source revision was being merged into the target revision. Learn more about comparing revisions.

Source

Select target project
No results found

Target

Select target project
  • lefilament/adefpat/adefpat_project
1 result
Show changes
Commits on Source (2)
...@@ -4,7 +4,7 @@ env: ...@@ -4,7 +4,7 @@ env:
# See https://github.com/OCA/odoo-community.org/issues/37#issuecomment-470686449 # See https://github.com/OCA/odoo-community.org/issues/37#issuecomment-470686449
parserOptions: parserOptions:
ecmaVersion: 2017 ecmaVersion: 2019
overrides: overrides:
- files: - files:
......
...@@ -15,7 +15,6 @@ build/ ...@@ -15,7 +15,6 @@ build/
develop-eggs/ develop-eggs/
dist/ dist/
eggs/ eggs/
lib/
lib64/ lib64/
parts/ parts/
sdist/ sdist/
......
...@@ -27,6 +27,11 @@ repos: ...@@ -27,6 +27,11 @@ repos:
entry: found forbidden files; remove them entry: found forbidden files; remove them
language: fail language: fail
files: "\\.rej$" 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 - repo: https://github.com/oca/maintainer-tools
rev: ab1d7f6 rev: ab1d7f6
hooks: hooks:
...@@ -46,7 +51,7 @@ repos: ...@@ -46,7 +51,7 @@ repos:
- --remove-duplicate-keys - --remove-duplicate-keys
- --remove-unused-variables - --remove-unused-variables
- repo: https://github.com/psf/black - repo: https://github.com/psf/black
rev: 20.8b1 rev: 22.3.0
hooks: hooks:
- id: black - id: black
- repo: https://github.com/pre-commit/mirrors-prettier - repo: https://github.com/pre-commit/mirrors-prettier
...@@ -96,32 +101,28 @@ repos: ...@@ -96,32 +101,28 @@ repos:
- id: pyupgrade - id: pyupgrade
args: ["--keep-percent-format"] args: ["--keep-percent-format"]
- repo: https://github.com/PyCQA/isort - repo: https://github.com/PyCQA/isort
rev: 5.5.1 rev: 5.12.0
hooks: hooks:
- id: isort - id: isort
name: isort except __init__.py name: isort except __init__.py
args: args:
- --settings=. - --settings=.
exclude: /__init__\.py$ exclude: /__init__\.py$
- repo: https://gitlab.com/PyCQA/flake8 - repo: https://github.com/PyCQA/flake8
rev: 3.8.3 rev: 3.8.3
hooks: hooks:
- id: flake8 - id: flake8
name: flake8 name: flake8
additional_dependencies: ["flake8-bugbear==20.1.4"] additional_dependencies: ["flake8-bugbear==20.1.4"]
- repo: https://github.com/PyCQA/pylint - repo: https://github.com/OCA/pylint-odoo
rev: pylint-2.5.3 rev: 7.0.2
hooks: hooks:
- id: pylint - id: pylint_odoo
name: pylint with optional checks name: pylint with optional checks
args: args:
- --rcfile=.pylintrc - --rcfile=.pylintrc
- --exit-zero - --exit-zero
verbose: true verbose: true
additional_dependencies: &pylint_deps - id: pylint_odoo
- pylint-odoo==3.5.0
- id: pylint
name: pylint with mandatory checks
args: args:
- --rcfile=.pylintrc-mandatory - --rcfile=.pylintrc-mandatory
additional_dependencies: *pylint_deps
[MASTER] [MASTER]
load-plugins=pylint_odoo load-plugins=pylint_odoo
score=n score=n
...@@ -73,6 +75,7 @@ enable=anomalous-backslash-in-string, ...@@ -73,6 +75,7 @@ enable=anomalous-backslash-in-string,
invalid-commit, invalid-commit,
missing-manifest-dependency, missing-manifest-dependency,
missing-newline-extrafiles, missing-newline-extrafiles,
missing-readme,
no-utf8-coding-comment, no-utf8-coding-comment,
odoo-addons-relative-import, odoo-addons-relative-import,
old-api7-method-defined, old-api7-method-defined,
......
[MASTER] [MASTER]
load-plugins=pylint_odoo load-plugins=pylint_odoo
score=n score=n
......
...@@ -3,7 +3,7 @@ ...@@ -3,7 +3,7 @@
from datetime import datetime, timedelta from datetime import datetime, timedelta
from odoo import api, fields, models from odoo import _, api, fields, models
from odoo.exceptions import ValidationError from odoo.exceptions import ValidationError
from odoo.tools.misc import xlwt from odoo.tools.misc import xlwt
...@@ -484,18 +484,19 @@ class Project(models.Model): ...@@ -484,18 +484,19 @@ class Project(models.Model):
"Nombre d'entreprises concernées par la création" "Nombre d'entreprises concernées par la création"
"d'une nouvelle activité collective" "d'une nouvelle activité collective"
) )
number_struct_proj = fields.Integer( number_struct_proj = fields.Integer("Nombre de projets structurants définis")
"Nombre de projets structurants définis"
)
number_mean_people_inv = fields.Integer( number_mean_people_inv = fields.Integer(
"Nombre moyen de personnes sollicitées hors du" "Nombre moyen de personnes sollicitées hors du"
"groupe de travail (enquête, réunion publique)" "groupe de travail (enquête, réunion publique)"
) )
number_comp_created_at = fields.Integer("Nombre d'entreprises créées (AT)") number_comp_created_at = fields.Integer("Nombre d'entreprises créées (AT)")
number_comp_terr = fields.Integer("Nombre d'entreprises accompagnées (TERR)")
number_day_period = fields.Float( number_day_period = fields.Float(
"Nb jours sur période", compute="_compute_number_day_period", default=0.0) "Nb jours sur période", compute="_compute_number_day_period", default=0.0
)
number_hour_period = fields.Float( number_hour_period = fields.Float(
"Nb heures sur période", compute="_compute_number_day_period", default=0.0) "Nb heures sur période", compute="_compute_number_day_period", default=0.0
)
@api.depends("date_ca") @api.depends("date_ca")
@api.multi @api.multi
...@@ -607,10 +608,12 @@ class Project(models.Model): ...@@ -607,10 +608,12 @@ class Project(models.Model):
@api.multi @api.multi
def _compute_number_gap_members(self): def _compute_number_gap_members(self):
for project in self: for project in self:
project.number_gap_members = sum( project.number_gap_members = (
project.reunion_ids.mapped("number_participants")) / len( sum(project.reunion_ids.mapped("number_participants"))
project.reunion_ids / len(project.reunion_ids)
) if project.reunion_ids else 0 if project.reunion_ids
else 0
)
@api.multi @api.multi
def _compute_number_day_period(self): def _compute_number_day_period(self):
...@@ -622,8 +625,10 @@ class Project(models.Model): ...@@ -622,8 +625,10 @@ class Project(models.Model):
period_end = fields.Date.to_date(self.env.context.get("period_end")) period_end = fields.Date.to_date(self.env.context.get("period_end"))
for project in self: for project in self:
days = project.task_ids.filtered( days = project.task_ids.filtered(
lambda t: t.date_deadline and t.date_deadline >= period_start lambda t: t.date_deadline
and t.date_deadline <= period_end).mapped("duree_hr") and t.date_deadline >= period_start
and t.date_deadline <= period_end
).mapped("duree_hr")
project.number_day_period = sum(days) project.number_day_period = sum(days)
project.number_hour_period = sum(days) * 7 project.number_hour_period = sum(days) * 7
...@@ -762,10 +767,9 @@ class AdefpatReunionGAP(models.Model): ...@@ -762,10 +767,9 @@ class AdefpatReunionGAP(models.Model):
self.env.context["default_project_id"] self.env.context["default_project_id"]
) )
if project_id.exists().membre_ids: if project_id.exists().membre_ids:
participant_ids = project_id.membre_ids.mapped(lambda p: (0, 0, { participant_ids = project_id.membre_ids.mapped(
"member_id": p.id, lambda p: (0, 0, {"member_id": p.id, "present": False})
"present": False )
}))
self.update({"participant_ids": participant_ids}) self.update({"participant_ids": participant_ids})
return participant_ids return participant_ids
...@@ -784,13 +788,13 @@ class AdefpatReunionGAP(models.Model): ...@@ -784,13 +788,13 @@ class AdefpatReunionGAP(models.Model):
comodel_name="res.partner.reunion.gap", comodel_name="res.partner.reunion.gap",
inverse_name="gap_id", inverse_name="gap_id",
string="Participants", string="Participants",
default=_default_participant_ids default=_default_participant_ids,
) )
number_participants = fields.Integer( number_participants = fields.Integer(
string="Moyenne de participants", string="Moyenne de participants",
compute="_compute_number_participants", compute="_compute_number_participants",
group_operator="avg", group_operator="avg",
store=True store=True,
) )
@api.depends("participant_ids", "participant_ids.present") @api.depends("participant_ids", "participant_ids.present")
...@@ -898,7 +902,7 @@ class AdefpatPorteursProjets(models.Model): ...@@ -898,7 +902,7 @@ class AdefpatPorteursProjets(models.Model):
est_dans_comcom = fields.Boolean( est_dans_comcom = fields.Boolean(
string="Commune dans ComCom du lieu de formation", string="Commune dans ComCom du lieu de formation",
help="En cas de lieu tournant, si un des lieux de formation est sur la com com " help="En cas de lieu tournant, si un des lieux de formation est sur la com com "
"du PP cocher la case", "du PP cocher la case",
) )
date_naissance = fields.Date( date_naissance = fields.Date(
related="porteur_id.date_naissance", string="Date de naissance" related="porteur_id.date_naissance", string="Date de naissance"
...@@ -933,7 +937,8 @@ class AdefpatPorteursProjets(models.Model): ...@@ -933,7 +937,8 @@ class AdefpatPorteursProjets(models.Model):
related="project_id.departement", string="Département" related="project_id.departement", string="Département"
) )
number_hour_period = fields.Float( number_hour_period = fields.Float(
"Nb heures sur période", compute="_compute_hour_period", default=0.0) "Nb heures sur période", compute="_compute_hour_period", default=0.0
)
# ------------------------------------------------------ # ------------------------------------------------------
# Constrains # Constrains
...@@ -943,7 +948,9 @@ class AdefpatPorteursProjets(models.Model): ...@@ -943,7 +948,9 @@ class AdefpatPorteursProjets(models.Model):
for pp in self: for pp in self:
if not pp.task_id and not pp.project_id: if not pp.task_id and not pp.project_id:
raise ValidationError( raise ValidationError(
"Un porteur de projet doit être associé à une tâche ou un projet." _(
"Un porteur de projet doit être associé à une tâche ou un projet."
)
) )
@api.depends("porteur_id") @api.depends("porteur_id")
...@@ -963,12 +970,15 @@ class AdefpatPorteursProjets(models.Model): ...@@ -963,12 +970,15 @@ class AdefpatPorteursProjets(models.Model):
for line in self: for line in self:
if line.project_id: if line.project_id:
task_ids = line.project_id.task_ids.filtered( task_ids = line.project_id.task_ids.filtered(
lambda t: t.date_deadline and t.date_deadline >= period_start lambda t: t.date_deadline
and t.date_deadline <= period_end) and t.date_deadline >= period_start
and t.date_deadline <= period_end
)
days = [] days = []
for task in task_ids: for task in task_ids:
participant_ids = task.participant_ids.filtered( participant_ids = task.participant_ids.filtered(
lambda p: p.h_theoriques) lambda p: p.h_theoriques
)
if line.porteur_id in participant_ids.mapped("porteur_id"): if line.porteur_id in participant_ids.mapped("porteur_id"):
days.append(task.duree_hr * 7) days.append(task.duree_hr * 7)
line.number_hour_period = sum(days) line.number_hour_period = sum(days)
......
...@@ -252,50 +252,73 @@ ...@@ -252,50 +252,73 @@
<!-- Critères CA --> <!-- Critères CA -->
<div class="row"> <div class="row">
<div class="col-12 col-xs-6"> <div class="col-12 col-xs-6">
<separator string="Critères CA"/> <separator string="Critères CA" />
<div class="row"> <div class="row">
<div class="col-7 border-right"> <div class="col-7 border-right">
<label for="type_beneficiaire" style="font-weight: bold;"/> <label
for="type_beneficiaire"
style="font-weight: bold;"
/>
</div> </div>
<div class="col-5" style="padding-right: 48px;"><field <div
name="type_beneficiaire" class="col-5"
/></div> style="padding-right: 48px;"
><field name="type_beneficiaire" /></div>
</div> </div>
<div class="row"> <div class="row">
<div class="col-7 border-right"> <div class="col-7 border-right">
<label for="objectif_projet" style="font-weight: bold;"/> <label
for="objectif_projet"
style="font-weight: bold;"
/>
</div> </div>
<div class="col-5" style="padding-right: 48px;"><field <div
name="objectif_projet" class="col-5"
/></div> style="padding-right: 48px;"
><field name="objectif_projet" /></div>
</div> </div>
<div class="row"> <div class="row">
<div class="col-7 border-right"> <div class="col-7 border-right">
<label for="secteur_crit" style="font-weight: bold;"/> <label
for="secteur_crit"
style="font-weight: bold;"
/>
</div> </div>
<div class="col-5" style="padding-right: 48px;"><field <div
name="secteur_crit" class="col-5"
/></div> style="padding-right: 48px;"
><field name="secteur_crit" /></div>
</div> </div>
<div class="row"> <div class="row">
<div class="col-7 border-right"> <div class="col-7 border-right">
<label for="taille" style="font-weight: bold;"/> <label
for="taille"
style="font-weight: bold;"
/>
</div> </div>
<div class="col-5" style="padding-right: 48px;"><field <div
name="taille" class="col-5"
/></div> style="padding-right: 48px;"
><field name="taille" /></div>
</div> </div>
<div class="row"> <div class="row">
<div class="col-7 border-right"> <div class="col-7 border-right">
<label for="objectif_formation" style="font-weight: bold;"/> <label
for="objectif_formation"
style="font-weight: bold;"
/>
</div> </div>
<div class="col-5" style="padding-right: 48px;"><field <div
name="objectif_formation" class="col-5"
/></div> style="padding-right: 48px;"
><field name="objectif_formation" /></div>
</div> </div>
<div class="row"> <div class="row">
<div class="col-7 border-right"> <div class="col-7 border-right">
<label for="type_formation" style="font-weight: bold;"/> <label
for="type_formation"
style="font-weight: bold;"
/>
</div> </div>
<div class="col-5" style="padding-right: 48px;"> <div class="col-5" style="padding-right: 48px;">
<field name="type_formation" /> <field name="type_formation" />
...@@ -303,14 +326,20 @@ ...@@ -303,14 +326,20 @@
</div> </div>
<div class="row"> <div class="row">
<div class="col-7 border-right"> <div class="col-7 border-right">
<label for="encadrement" style="font-weight: bold;"/> <label
for="encadrement"
style="font-weight: bold;"
/>
</div> </div>
<div class="col-5" style="padding-right: 48px;"> <div class="col-5" style="padding-right: 48px;">
<field name="encadrement" /></div> <field name="encadrement" /></div>
</div> </div>
<div class="row"> <div class="row">
<div class="col-7 border-right"> <div class="col-7 border-right">
<label for="bpi" style="font-weight: bold;"/> <label
for="bpi"
style="font-weight: bold;"
/>
</div> </div>
<div class="col-5" style="padding-right: 48px;"> <div class="col-5" style="padding-right: 48px;">
<field name="bpi" /> <field name="bpi" />
...@@ -318,7 +347,10 @@ ...@@ -318,7 +347,10 @@
</div> </div>
<div class="row"> <div class="row">
<div class="col-7 border-right"> <div class="col-7 border-right">
<label for="nb_emplois" style="font-weight: bold;"/> <label
for="nb_emplois"
style="font-weight: bold;"
/>
</div> </div>
<div class="col-5" style="padding-right: 48px;"> <div class="col-5" style="padding-right: 48px;">
<field name="nb_emplois" /> <field name="nb_emplois" />
...@@ -326,7 +358,10 @@ ...@@ -326,7 +358,10 @@
</div> </div>
<div class="row"> <div class="row">
<div class="col-7 border-right"> <div class="col-7 border-right">
<label for="type_accompagnement" style="font-weight: bold;" /> <label
for="type_accompagnement"
style="font-weight: bold;"
/>
</div> </div>
<div class="col-5" style="padding-right: 48px;"> <div class="col-5" style="padding-right: 48px;">
<field name="type_accompagnement" /> <field name="type_accompagnement" />
...@@ -337,7 +372,10 @@ ...@@ -337,7 +372,10 @@
attrs="{'invisible': [('type_accompagnement', '!=', 'individualise')], 'required': [('type_accompagnement', '!=', 'individualise')]}" attrs="{'invisible': [('type_accompagnement', '!=', 'individualise')], 'required': [('type_accompagnement', '!=', 'individualise')]}"
> >
<div class="col-7 border-right"> <div class="col-7 border-right">
<label for="nb_activité" style="font-weight: bold;" /> <label
for="nb_activité"
style="font-weight: bold;"
/>
</div> </div>
<div class="col-5" style="padding-right: 48px;"> <div class="col-5" style="padding-right: 48px;">
<field name="nb_activité" /> <field name="nb_activité" />
...@@ -348,7 +386,10 @@ ...@@ -348,7 +386,10 @@
attrs="{'invisible': [('type_accompagnement', '!=', 'territoriaux')], 'required': [('type_accompagnement', '!=', 'territoriaux')]}" attrs="{'invisible': [('type_accompagnement', '!=', 'territoriaux')], 'required': [('type_accompagnement', '!=', 'territoriaux')]}"
> >
<div class="col-7 border-right"> <div class="col-7 border-right">
<label for="nb_coll" style="font-weight: bold;" /> <label
for="nb_coll"
style="font-weight: bold;"
/>
</div> </div>
<div class="col-5" style="padding-right: 48px;"> <div class="col-5" style="padding-right: 48px;">
<field name="nb_coll" /> <field name="nb_coll" />
...@@ -359,18 +400,38 @@ ...@@ -359,18 +400,38 @@
attrs="{'invisible': [('type_accompagnement', '!=', 'territoriaux')], 'required': [('type_accompagnement', '!=', 'territoriaux')]}" attrs="{'invisible': [('type_accompagnement', '!=', 'territoriaux')], 'required': [('type_accompagnement', '!=', 'territoriaux')]}"
> >
<div class="col-7 border-right"> <div class="col-7 border-right">
<label for="nb_citoyens" style="font-weight: bold;" /> <label
for="nb_citoyens"
style="font-weight: bold;"
/>
</div> </div>
<div class="col-5" style="padding-right: 48px;"> <div class="col-5" style="padding-right: 48px;">
<field name="nb_citoyens" /> <field name="nb_citoyens" />
</div> </div>
</div> </div>
<div
class="row"
attrs="{'invisible': [('type_accompagnement', '!=', 'territoriaux')], 'required': [('type_accompagnement', '!=', 'territoriaux')]}"
>
<div class="col-7 border-right">
<label
for="number_comp_terr"
style="font-weight: bold;"
/>
</div>
<div class="col-5" style="padding-right: 48px;">
<field name="number_comp_terr" />
</div>
</div>
<div <div
class="row" class="row"
attrs="{'invisible': [('type_accompagnement', '!=', 'interentreprises')], 'required': [('type_accompagnement', '!=', 'interentreprises')]}" attrs="{'invisible': [('type_accompagnement', '!=', 'interentreprises')], 'required': [('type_accompagnement', '!=', 'interentreprises')]}"
> >
<div class="col-7 border-right"> <div class="col-7 border-right">
<label for="nb_entreprises" style="font-weight: bold;" /> <label
for="nb_entreprises"
style="font-weight: bold;"
/>
</div> </div>
<div class="col-5" style="padding-right: 48px;"> <div class="col-5" style="padding-right: 48px;">
<field name="nb_entreprises" /> <field name="nb_entreprises" />
...@@ -378,7 +439,10 @@ ...@@ -378,7 +439,10 @@
</div> </div>
<div class="row"> <div class="row">
<div class="col-7 border-right"> <div class="col-7 border-right">
<label for="est_suite" style="font-weight: bold;" /> <label
for="est_suite"
style="font-weight: bold;"
/>
</div> </div>
<div class="col-5" style="padding-right: 48px;"> <div class="col-5" style="padding-right: 48px;">
<field name="est_suite" /> <field name="est_suite" />
...@@ -639,7 +703,11 @@ ...@@ -639,7 +703,11 @@
</sheet> </sheet>
</form> </form>
</field> </field>
<field name="reunion_ids" widget="one2many" context="{'default_project_id': active_id}"> <field
name="reunion_ids"
widget="one2many"
context="{'default_project_id': active_id}"
>
<tree string="Réunions GAP"> <tree string="Réunions GAP">
<field name="date" /> <field name="date" />
<field name="number_participants" readonly="True" /> <field name="number_participants" readonly="True" />
...@@ -647,7 +715,7 @@ ...@@ -647,7 +715,7 @@
<form string="Réunion GAP"> <form string="Réunion GAP">
<sheet> <sheet>
<group class="row"> <group class="row">
<field name="date"/> <field name="date" />
</group> </group>
<label for="participant_ids" /> <label for="participant_ids" />
<field name="participant_ids" widget="one2many"> <field name="participant_ids" widget="one2many">
...@@ -908,10 +976,7 @@ ...@@ -908,10 +976,7 @@
<field name="od_ids" widget="many2many_tags" /> <field name="od_ids" widget="many2many_tags" />
<field name="departement" /> <field name="departement" />
<field name="type_convention_id" /> <field name="type_convention_id" />
<field <field name="financement_adefpat" string="budget - facturation" />
name="financement_adefpat"
string="budget - facturation"
/>
<field name="objectif_formation" /> <field name="objectif_formation" />
<field name="bpi" widget="boolean_integer" /> <field name="bpi" widget="boolean_integer" />
<field name="type_accompagnement" /> <field name="type_accompagnement" />
...@@ -948,8 +1013,11 @@ ...@@ -948,8 +1013,11 @@
<field name="name">Nouveaux Projets par année</field> <field name="name">Nouveaux Projets par année</field>
<field name="res_model">project.project</field> <field name="res_model">project.project</field>
<field name="view_mode">tree</field> <field name="view_mode">tree</field>
<field name="view_ids" eval="[(5, 0, 0), <field
(0, 0, {'view_mode': 'tree', 'view_id': ref('view_adefpat_new_project_reporting_tree')})]"/> name="view_ids"
eval="[(5, 0, 0),
(0, 0, {'view_mode': 'tree', 'view_id': ref('view_adefpat_new_project_reporting_tree')})]"
/>
<field name="context">{'group_by': 'date_ca:year'}</field> <field name="context">{'group_by': 'date_ca:year'}</field>
</record> </record>
......