Skip to content

Commit

Permalink
[UPD] server action for project.task
Browse files Browse the repository at this point in the history
  • Loading branch information
ntsirintanis committed Feb 5, 2024
1 parent 4f91e69 commit 6ea9cec
Show file tree
Hide file tree
Showing 7 changed files with 84 additions and 12 deletions.
2 changes: 1 addition & 1 deletion project_forecast_line_priority/README.rst
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ Project Forecast Line Priority
!! This file is generated by oca-gen-addon-readme !!
!! changes will be overwritten. !!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!! source digest: sha256:0c7a75d90fd3e732909de3a75615d2b034c399f90748a81be1be2979a3d28d44
!! source digest: sha256:091a78dee8b45f24db001b17ab2fd0a09ad9ca887e8f39d6135473126935afe8
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
.. |badge1| image:: https://img.shields.io/badge/maturity-Beta-yellow.png
Expand Down
2 changes: 1 addition & 1 deletion project_forecast_line_priority/__manifest__.py
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,6 @@
"category": "Project",
"website": "https://github.com/OCA/project",
"depends": ["project_forecast_line_deadline", "project_task_add_very_high"],
"data": ["views/res_config_settings.xml"],
"data": ["data/ir_actions_server.xml", "views/res_config_settings.xml"],
"installable": True,
}
16 changes: 16 additions & 0 deletions project_forecast_line_priority/data/ir_actions_server.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
<?xml version="1.0" encoding="UTF-8" ?>
<odoo noupdate="1">
<record id="action_project_task_priority" model="ir.actions.server">
<field name="name">Project Task: Update forecast date end</field>
<field name="model_id" ref="project.model_project_task" />
<field name="binding_model_id" ref="project.model_project_task" />
<field name="binding_type">action</field>
<field name="state">code</field>
<field name="code">
for record in records:
new_forecast_date_planned_end = record._get_forecast_date_planned()
if new_forecast_date_planned_end:
record.write({"forecast_date_planned_end": new_forecast_date_planned_end})
</field>
</record>
</odoo>
13 changes: 8 additions & 5 deletions project_forecast_line_priority/models/project_task.py
Original file line number Diff line number Diff line change
Expand Up @@ -15,21 +15,24 @@ def write(self, vals):
return super().write(vals)
if "priority" not in vals:
return super().write(vals)
priority = int(vals.get("priority", 0))
priority = vals.get("priority", -5)
for this in self:
# date deadline is set, so ignore this one
if this.date_deadline:
continue
# if priority is 0, do nothing
if priority < 1:
# if priority is not set, do nothing
if int(priority) < 0:
continue
forecast_date_planned_end = self._get_forecast_date_planned(priority)
forecast_date_planned_end = self._get_forecast_date_planned(
priority=priority
)
if forecast_date_planned_end:
vals["forecast_date_planned_end"] = forecast_date_planned_end
return super().write(vals)

def _get_forecast_date_planned(self, priority):
def _get_forecast_date_planned(self, priority=None):
config_model = self.env["ir.config_parameter"]
priority = priority or self.priority
selection = config_model.get_param(
"project_forecast_line_priority.priority_%s_selection" % priority
)
Expand Down
27 changes: 23 additions & 4 deletions project_forecast_line_priority/models/res_config_settings.py
Original file line number Diff line number Diff line change
Expand Up @@ -13,24 +13,33 @@
class ResConfigSettings(models.TransientModel):
_inherit = "res.config.settings"

forecast_line_priority_0_date = fields.Date(
inverse="_inverse_forecast_line_priority_date_str"
)
forecast_line_priority_0_date_str = fields.Char(
config_parameter="project_forecast_line_priority.priority_0_date"
)
forecast_line_priority_1_date = fields.Date(
inverse="_inverse_forecast_line_priority_1_date_str"
inverse="_inverse_forecast_line_priority_date_str"
)
forecast_line_priority_1_date_str = fields.Char(
config_parameter="project_forecast_line_priority.priority_1_date"
)
forecast_line_priority_2_date = fields.Date(
inverse="_inverse_forecast_line_priority_1_date_str"
inverse="_inverse_forecast_line_priority_date_str"
)
forecast_line_priority_2_date_str = fields.Char(
config_parameter="project_forecast_line_priority.priority_2_date"
)
forecast_line_priority_3_date = fields.Date(
inverse="_inverse_forecast_line_priority_1_date_str"
inverse="_inverse_forecast_line_priority_date_str"
)
forecast_line_priority_3_date_str = fields.Char(
config_parameter="project_forecast_line_priority.priority_3_date"
)
forecast_line_priority_0 = fields.Integer(
config_parameter="project_forecast_line_priority.priority_0_delta"
)
forecast_line_priority_1 = fields.Integer(
config_parameter="project_forecast_line_priority.priority_1_delta"
)
Expand All @@ -40,6 +49,12 @@ class ResConfigSettings(models.TransientModel):
forecast_line_priority_3 = fields.Integer(
config_parameter="project_forecast_line_priority.priority_3_delta"
)
forecast_line_priority_0_selection = fields.Selection(
TYPE_FORECAST_ENDDATE,
default="none",
config_parameter="project_forecast_line_priority.priority_0_selection",
required=True,
)
forecast_line_priority_1_selection = fields.Selection(
TYPE_FORECAST_ENDDATE,
default="none",
Expand All @@ -59,10 +74,14 @@ class ResConfigSettings(models.TransientModel):
required=True,
)

def _inverse_forecast_line_priority_1_date_str(self):
def _inverse_forecast_line_priority_date_str(self):
"""As config_parameters does not accept Date field,
we store the date formated string into a Char config field"""
for setting in self:
if setting.forecast_line_priority_0_date:
setting.forecast_line_priority_0_date_str = fields.Date.to_string(
setting.forecast_line_priority_0_date
)
if setting.forecast_line_priority_1_date:
setting.forecast_line_priority_1_date_str = fields.Date.to_string(
setting.forecast_line_priority_1_date
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -367,7 +367,7 @@ <h1 class="title">Project Forecast Line Priority</h1>
!! This file is generated by oca-gen-addon-readme !!
!! changes will be overwritten. !!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!! source digest: sha256:0c7a75d90fd3e732909de3a75615d2b034c399f90748a81be1be2979a3d28d44
!! source digest: sha256:091a78dee8b45f24db001b17ab2fd0a09ad9ca887e8f39d6135473126935afe8
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->
<p><a class="reference external image-reference" href="https://odoo-community.org/page/development-status"><img alt="Beta" src="https://img.shields.io/badge/maturity-Beta-yellow.png" /></a> <a class="reference external image-reference" href="http://www.gnu.org/licenses/agpl-3.0-standalone.html"><img alt="License: AGPL-3" src="https://img.shields.io/badge/licence-AGPL--3-blue.png" /></a> <a class="reference external image-reference" href="https://github.com/OCA/project/tree/14.0/project_forecast_line_priority"><img alt="OCA/project" src="https://img.shields.io/badge/github-OCA%2Fproject-lightgray.png?logo=github" /></a> <a class="reference external image-reference" href="https://translation.odoo-community.org/projects/project-14-0/project-14-0-project_forecast_line_priority"><img alt="Translate me on Weblate" src="https://img.shields.io/badge/weblate-Translate%20me-F47D42.png" /></a> <a class="reference external image-reference" href="https://runboat.odoo-community.org/builds?repo=OCA/project&amp;target_branch=14.0"><img alt="Try me on Runboat" src="https://img.shields.io/badge/runboat-Try%20me-875A7B.png" /></a></p>
<p>This module recomputes forecast line end dates based on the priority of connected task(s)</p>
Expand Down
34 changes: 34 additions & 0 deletions project_forecast_line_priority/views/res_config_settings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,40 @@
class="col-12 col-lg-6 o_setting_box"
id="forecast_line_priority_settings"
>
<div class="o_setting_right_pane">
<span class="o_form_label">Priority 0</span>
<span class="fa fa-lg fa-star" role="img" />
<div class="content-group">
<div class="mt16 row">
<field
name="forecast_line_priority_0_selection"
/>
<field
name="forecast_line_priority_0"
class="oe_inline"
attrs="{'invisible': [('forecast_line_priority_0_selection','!=', 'delta')]}"
/>
<field
name="forecast_line_priority_0_date"
class="oe_inline"
attrs="{'invisible': [('forecast_line_priority_0_selection','!=', 'date')]}"
placeholder="Set Date"
/>
<div
attrs="{'invisible': [('forecast_line_priority_0_selection','!=', 'date')]}"
>
<label
for="forecast_line_priority_0_date_str"
string="Current Date"
/>
<field
name="forecast_line_priority_0_date_str"
readonly="1"
/>
</div>
</div>
</div>
</div>
<div class="o_setting_right_pane">
<span class="o_form_label">Priority 1</span>
<span class="fa fa-lg fa-star" role="img" />
Expand Down

0 comments on commit 6ea9cec

Please sign in to comment.