Project and Services mailing list archives
project@odoo-community.org
Browse archives
Re: [OCA/project] project_task_scheduling: Module for automatic task planning (#419)
Re: [OCA/project] project_task_scheduling: Module for automatic task planning (#419)
Re: [OCA/project] project_task_scheduling: Module for automatic task planning (#419)
by "Eric @ Elico Corp" <notifications@github.com> - 17/08/2018 09:45:49@elicoidal commented on this pull request.
This module requires proper documentation (functional and technical). As is, it is very difficult to use.
In project_task_assignment/readme/DESCRIPTION.rst:
> @@ -0,0 +1,5 @@ +This module allow you:
add blank line
In project_task_assignment/tests/test_project_task.py:
> @@ -0,0 +1,36 @@ +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).
use standard short headers
In project_task_assignment/tests/__init__.py:
> @@ -0,0 +1,2 @@ +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
no headers in init.py files
In project_task_scheduling/readme/DESCRIPTION.rst:
> @@ -0,0 +1 @@ +This module allow you to execute an automated project task scheduling.
Could you improve the description and add a use case?
In project_task_scheduling/wizards/scheduling_wizard.py:
> +
+    _state_obj = namedtuple('State', (
+        'tasks_list',
+        'tasks_dict',
+        'employees_dict',
+        'evaluation'
+    ))
+    _MAX_HOURS_DELAYED = 1000000
+
+    # fields
+    # ------
+    date_start = fields.Datetime(
+        default=lambda self: self._default_start(),
+        required=True,
+    )
+    cooling_ratio = fields.Float(
Could you add a help message?
In project_task_scheduling/wizards/scheduling_wizard.py:
> +    def _obj_func(self, state):
+        total_hours_dy = task_dy_count = 0
+        for interval in state.tasks_dict.values():
+            if not interval.data.get('assigned', False):
+                task = interval.data['task']
+                deadline = fields.Date.from_string(task.date_deadline)
+                if deadline:
+                    deadline_dt = datetime.combine(deadline, time.max)
+                    delayed_td = (interval.end_datetime - deadline_dt)
+                    total_hours_dy += delayed_td.total_seconds() / 3600.0
+                    is_delayed = interval.data.get('delayed', False)
+                    task_dy_count += 1 if is_delayed else 0
+
+        if total_hours_dy > self._MAX_HOURS_DELAYED:
+            raise ValidationError(_(
+                'Maybe some tasks have a very long "Initially Planned Hours"'
You provide the explanation but not the actual error
In project_task_scheduling/wizards/scheduling_wizard.py:
> + interval = False + index = 0 + for employee_interval in state.employees_dict.get(employee.id, []): + stop = employee_interval.start_datetime + if stop > start: + interval = self._get_interval(task.planned_hours, employee, + start, stop) + if interval: + break + start = max(employee_interval.end_datetime, start) + index += 1 + if not interval: + interval = self._get_interval(task.planned_hours, employee, start) + return interval, index + + def _greedy_distribution(self, state, init_index=0):
Please add docstrings to all methods
—
You are receiving this because you are on a team that was mentioned.
Reply to this email directly, view it on GitHub, or mute the thread.