22
22
# You should have received a copy of the GNU Affero General Public License
23
23
# along with this program. If not, see <http://www.gnu.org/licenses/>.
24
################################################################################
24
##########################################################################
27
from osv import fields, osv
28
from tools.translate import _
30
class project_task(osv.osv):
27
from openerp.osv import osv, fields
28
from openerp.tools.translate import _
32
class project_task(osv.Model):
31
33
_inherit = 'project.task'
33
35
def _get_issue(self, cr, uid, ids, fieldname, arg, context=None):
34
if context is None: context = {}
36
39
pi_obj = self.pool.get('project.issue')
39
pi_ids = pi_obj.search(cr, uid, [('task_id','=',id)]) or []
42
pi_ids = pi_obj.search(cr, uid, [('task_id', '=', id)]) or []
40
43
res[id] = pi_ids and pi_ids[0] or None
44
47
def _get_task_in_issue(self, cr, uid, ids, context=None):
45
if context is None: context = {}
46
50
pi_obj = self.pool.get('project.issue')
47
51
return [pi_brw.task_id.id for pi_brw in pi_obj.browse(cr, uid, ids, context=context) if pi_brw.task_id]
51
'issue_id':fields.function(
54
'issue_id': fields.function(
55
58
relation='project.issue',
56
string = 'Project issue',
58
'project.issue':(_get_task_in_issue,['task_id'],15),
59
'project.task':(lambda self, cr, uid, ids,c={}: ids,[],45),
59
string='Project issue',
61
'project.issue': (_get_task_in_issue, ['task_id'], 15),
62
'project.task': (lambda self, cr, uid, ids, c={}: ids, [], 45),
64
class project_task_work(osv.osv):
67
class project_task_work(osv.Model):
65
68
_inherit = 'project.task.work'
67
70
def _get_project(self, cr, uid, ids, fieldname, arg, context=None):
68
if context is None: context = {}
70
74
for ptw_brw in self.browse(cr, uid, ids, context=context):
72
76
res[ptw_brw.id] = \
73
77
ptw_brw.task_id and \
74
(ptw_brw.task_id.issue_id and ptw_brw.task_id.issue_id.project_id and \
75
ptw_brw.task_id.issue_id.project_id.id \
78
(ptw_brw.task_id.issue_id and ptw_brw.task_id.issue_id.project_id and
79
ptw_brw.task_id.issue_id.project_id.id
76
80
or ptw_brw.task_id.project_id and ptw_brw.task_id.project_id.id)\
81
85
def _get_issue(self, cr, uid, ids, fieldname, arg, context=None):
82
if context is None: context = {}
84
89
pi_obj = self.pool.get('project.issue')
85
90
ptw_brws = self.browse(cr, uid, ids, context=context)
86
91
for ptw_brw in ptw_brws:
87
pi_ids = ptw_brw.task_id and pi_obj.search(cr, uid, [('task_id','=',ptw_brw.task_id.id)]) or []
92
pi_ids = ptw_brw.task_id and pi_obj.search(cr, uid, [
93
('task_id', '=', ptw_brw.task_id.id)]) or []
89
95
res[ptw_brw.id] = pi_ids and pi_ids[0] or None
92
98
def _get_partner(self, cr, uid, ids, fieldname, arg, context=None):
93
if context is None: context = {}
95
102
for ptw_brw in self.browse(cr, uid, ids, context=context):
97
104
res[ptw_brw.id] = \
98
105
ptw_brw.task_id and \
99
(ptw_brw.task_id.issue_id and ptw_brw.task_id.issue_id.partner_id and \
100
ptw_brw.task_id.issue_id.partner_id.id \
101
or ptw_brw.task_id.project_id and \
102
ptw_brw.task_id.project_id.partner_id and \
103
ptw_brw.task_id.project_id.partner_id.id \
104
or ptw_brw.task_id.partner_id and ptw_brw.task_id.partner_id.id\
106
(ptw_brw.task_id.issue_id and ptw_brw.task_id.issue_id.partner_id and
107
ptw_brw.task_id.issue_id.partner_id.id
108
or ptw_brw.task_id.project_id and
109
ptw_brw.task_id.project_id.partner_id and
110
ptw_brw.task_id.project_id.partner_id.id
111
or ptw_brw.task_id.partner_id and ptw_brw.task_id.partner_id.id
110
117
def _get_work_in_task(self, cr, uid, ids, context=None):
111
if context is None: context = {}
113
121
pt_obj = self.pool.get('project.task')
114
122
for pt_brw in pt_obj.browse(cr, uid, ids, context=context):
115
res+=[work_brw.id for work_brw in pt_brw.work_ids]
123
res += [work_brw.id for work_brw in pt_brw.work_ids]
116
124
return list(set(res))
118
126
def _get_work_in_issue(self, cr, uid, ids, context=None):
119
if context is None: context = {}
121
130
pi_obj = self.pool.get('project.issue')
122
pt_ids = [pi_brw.task_id.id for pi_brw in pi_obj.browse(cr, uid, ids, context=context) if pi_brw.task_id]
131
pt_ids = [pi_brw.task_id.id for pi_brw in pi_obj.browse(
132
cr, uid, ids, context=context) if pi_brw.task_id]
123
133
return self.pool.get('project.task.work')._get_work_in_task(cr, uid, pt_ids, context=context)
126
'project_id':fields.function(
136
'project_id': fields.function(
130
140
relation='project.project',
133
'project.issue':(_get_work_in_issue,['task_id','project_id'],15),
134
'project.task.work':(lambda self, cr, uid, ids,c={}: ids,[],45),
143
'project.issue': (_get_work_in_issue, ['task_id', 'project_id'], 15),
144
'project.task.work': (lambda self, cr, uid, ids, c={}: ids, [], 45),
137
'state':fields.selection([ ('done','Collected'),
138
('draft', 'Uncollected'),
139
('cancel', 'Cancel'),],
143
'issue_id':fields.function(
147
'state': fields.selection([('done', 'Collected'),
148
('draft', 'Uncollected'),
149
('cancel', 'Cancel'), ],
153
'issue_id': fields.function(
147
157
relation='project.issue',
148
string = 'Project Issue',
150
'project.issue':(_get_work_in_issue,[],15),
151
'project.task':(_get_work_in_task,[],30),
152
'project.task.work':(lambda self, cr, uid, ids,c={}: ids,[],45),
158
string='Project Issue',
160
'project.issue': (_get_work_in_issue, [], 15),
161
'project.task': (_get_work_in_task, [], 30),
162
'project.task.work': (lambda self, cr, uid, ids, c={}: ids, [], 45),
155
'partner_id':fields.function(
165
'partner_id': fields.function(
159
169
relation='res.partner',
162
'project.issue':(_get_work_in_issue,[],15),
163
'project.task':(_get_work_in_task,[],30),
164
'project.task.work':(lambda self, cr, uid, ids,c={}: ids,[],45),
172
'project.issue': (_get_work_in_issue, [], 15),
173
'project.task': (_get_work_in_task, [], 30),
174
'project.task.work': (lambda self, cr, uid, ids, c={}: ids, [], 45),
167
177
'name': fields.text('Work summary'),
171
181
'state': 'draft',