project_todo/models/project_task.py

55 lines
2.0 KiB
Python

# -*- coding: utf-8 -*-
# Part of Odoo. See LICENSE file for full copyright and licensing details.
from odoo import api, models, _, _lt, Command
from odoo.tools import html2plaintext
class Task(models.Model):
_inherit = 'project.task'
@api.model_create_multi
def create(self, vals_list):
for vals in vals_list:
if not vals.get('name') and not vals.get('project_id') and not vals.get('parent_id'):
if vals.get('description'):
# Generating name from first line of the description
text = html2plaintext(vals['description'])
name = text.strip().replace('*', '').partition("\n")[0]
vals['name'] = (name[:97] + '...') if len(name) > 100 else name
else:
vals['name'] = _('Untitled to-do')
return super().create(vals_list)
def _ensure_onboarding_todo(self):
if not self.env.user.has_group('project_todo.group_onboarding_todo'):
self._generate_onboarding_todo(self.env.user)
onboarding_group = self.env.ref('project_todo.group_onboarding_todo').sudo()
onboarding_group.write({'users': [Command.link(self.env.user.id)]})
def _generate_onboarding_todo(self, user):
user.ensure_one()
body = self.with_context(lang=user.lang or self.env.user.lang).env['ir.qweb']._render(
'project_todo.todo_user_onboarding',
{'object': user},
minimal_qcontext=True,
raise_if_not_found=False
)
if not body:
return
title = _lt('Welcome %s!', user.name)
self.env['project.task'].create([{
'user_ids': user.ids,
'description': body,
'name': title,
}])
def action_convert_to_task(self):
self.ensure_one()
self.company_id = self.project_id.company_id
return {
'view_mode': 'form',
'res_model': 'project.task',
'res_id': self.id,
'type': 'ir.actions.act_window',
}