diff options
| author | vbh-odoo <vbh@odoo.com> | 2015-07-27 13:00:08 +0530 |
|---|---|---|
| committer | David Monjoie <dmo@odoo.com> | 2016-06-30 14:41:24 +0200 |
| commit | 3eb717baecb590580bb3a098308822a6ed70cd42 (patch) | |
| tree | 32feea3749bff3c7001e5dc6022e67b0fba3988f /addons/project_issue/models/project_project.py | |
| parent | 0239d9d4da5e5383a5c185b4af28585809e66b5f (diff) | |
[MOV] project_issue: split project_issue.py and project_issue_view files
Diffstat (limited to 'addons/project_issue/models/project_project.py')
| -rw-r--r-- | addons/project_issue/models/project_project.py | 72 |
1 files changed, 72 insertions, 0 deletions
diff --git a/addons/project_issue/models/project_project.py b/addons/project_issue/models/project_project.py new file mode 100644 index 00000000000..490c837f700 --- /dev/null +++ b/addons/project_issue/models/project_project.py @@ -0,0 +1,72 @@ +# -*- coding: utf-8 -*- +# Part of Odoo. See LICENSE file for full copyright and licensing details. + +from openerp.osv import fields, osv +from openerp import api + + +class project_project(osv.Model): + _inherit = 'project.project' + + def _get_alias_models(self, cr, uid, context=None): + res = super(project, self)._get_alias_models(cr, uid, context=context) + res.append(("project.issue", "Issues")) + return res + + + def _issue_count(self, cr, uid, ids, field_name, arg, context=None): + Issue = self.pool['project.issue'] + return { + project_id: Issue.search_count(cr,uid, [('project_id', '=', project_id), '|', ('stage_id.fold', '=', False), ('stage_id', '=', False)], context=context) + for project_id in ids + } + + def _issue_needaction_count(self, cr, uid, ids, field_name, arg, context=None): + Issue = self.pool['project.issue'] + res = dict.fromkeys(ids, 0) + projects = Issue.read_group(cr, uid, [('project_id', 'in', ids), ('message_needaction', '=', True)], ['project_id'], ['project_id'], context=context) + res.update({project['project_id'][0]: int(project['project_id_count']) for project in projects}) + return res + + _columns = { + 'issue_count': fields.function(_issue_count, type='integer', string="Issues",), + 'issue_ids': fields.one2many('project.issue', 'project_id', string="Issues", + domain=['|', ('stage_id.fold', '=', False), ('stage_id', '=', False)]), + 'issue_needaction_count': fields.function(_issue_needaction_count, type='integer', string="Issues",), + 'label_issues': fields.char('Use Issues as', help="Customize the issues label, for example to call them cases."), + } + + _defaults = { + 'use_issues': True, + 'label_issues': 'Issues', + } + + def _check_create_write_values(self, cr, uid, vals, context=None): + """ Perform some check on values given to create or write. """ + # Handle use_tasks / use_issues: if only one is checked, alias should take the same model + if vals.get('use_tasks') and not vals.get('use_issues'): + vals['alias_model'] = 'project.task' + elif vals.get('use_issues') and not vals.get('use_tasks'): + vals['alias_model'] = 'project.issue' + + def on_change_use_tasks_or_issues(self, cr, uid, ids, use_tasks, use_issues, context=None): + values = {} + if use_tasks and not use_issues: + values['alias_model'] = 'project.task' + elif not use_tasks and use_issues: + values['alias_model'] = 'project.issue' + return {'value': values} + + def create(self, cr, uid, vals, context=None): + self._check_create_write_values(cr, uid, vals, context=context) + return super(project_project, self).create(cr, uid, vals, context=context) + + @api.multi + def write(self, vals): + self._check_create_write_values(vals) + res = super(project_project, self).write(vals) + if 'active' in vals: + # archiving/unarchiving a project does it on its issues, too + issues = self.with_context(active_test=False).mapped('issue_ids') + issues.write({'active': vals['active']}) + return res |
