mirror of
https://gitlab.com/flectra-hq/flectra.git
synced 2026-11-02 09:58:50 -06:00
[PATCH] Upstream patch - 20102022
This commit is contained in:
1 parent
c72fddc652
commit
bfc0294fb0
25 files changed
+291
-96
No files matched your search
@@ -2,12 +2,12 @@
|
||||
# Part of Odoo, Flectra. See LICENSE file for full copyright and licensing details.
|
||||
|
||||
import ast
|
||||
from datetime import timedelta, datetime
|
||||
from collections import defaultdict
|
||||
from datetime import timedelta
|
||||
from random import randint
|
||||
|
||||
from flectra import api, fields, models, tools, SUPERUSER_ID, _
|
||||
from flectra.exceptions import UserError, AccessError, ValidationError, RedirectWarning
|
||||
from flectra.tools.misc import format_date, get_lang
|
||||
from flectra.exceptions import UserError, ValidationError
|
||||
from flectra.osv.expression import OR
|
||||
|
||||
from .project_task_recurrence import DAYS, WEEKS
|
||||
@@ -1096,6 +1096,18 @@ class Task(models.Model):
|
||||
task._portal_ensure_token()
|
||||
return tasks
|
||||
|
||||
def _load_records_create(self, values):
|
||||
tasks = super()._load_records_create(values)
|
||||
stage_ids_per_project = defaultdict(list)
|
||||
for task in tasks:
|
||||
if task.stage_id and task.stage_id not in task.project_id.type_ids and task.stage_id.id not in stage_ids_per_project[task.project_id]:
|
||||
stage_ids_per_project[task.project_id].append(task.stage_id.id)
|
||||
|
||||
for project, stage_ids in stage_ids_per_project.items():
|
||||
project.write({'type_ids': [(4, stage_id) for stage_id in stage_ids]})
|
||||
|
||||
return tasks
|
||||
|
||||
def write(self, vals):
|
||||
now = fields.Datetime.now()
|
||||
if 'parent_id' in vals and vals['parent_id'] in self.ids:
|
||||
|
||||
@@ -104,3 +104,23 @@ class TestProjectCommon(SavepointCase):
|
||||
|
||||
with self.assertRaises(UserError):
|
||||
self.project_pigs.unlink()
|
||||
|
||||
def test_auto_assign_stages_when_importing_tasks(self):
|
||||
self.assertFalse(self.project_pigs.type_ids)
|
||||
self.assertEqual(len(self.project_goats.type_ids), 2)
|
||||
first_stage = self.project_goats.type_ids[0]
|
||||
self.env['project.task']._load_records_create({
|
||||
'name': 'First Task',
|
||||
'user_id': self.user_projectuser.id,
|
||||
'project_id': self.project_pigs.id,
|
||||
'stage_id': first_stage.id,
|
||||
})
|
||||
self.assertEqual(self.project_pigs.type_ids, first_stage)
|
||||
self.env['project.task']._load_records_create([
|
||||
{'name': 'task',
|
||||
'user_id': self.user_projectuser.id,
|
||||
'project_id': self.project_pigs.id,
|
||||
'stage_id': stage.id,
|
||||
} for stage in self.project_goats.type_ids
|
||||
])
|
||||
self.assertEqual(self.project_pigs.type_ids, self.project_goats.type_ids)
|
||||
Reference in new issue
Block a user