Reviewers: ,
Please review this at http://codereview.tryton.org/20002/
Affected files:
M opportunity.py
Index: opportunity.py
===================================================================
--- a/opportunity.py
+++ b/opportunity.py
@@ -363,18 +363,6 @@
SaleOpportunityLine()
-class One2ManyHistory(fields.One2Many):
-
- def get(self, ids, model, name, values=None):
- opportunity2id = {}
- histories = model.browse(ids)
- opportunity2id = dict((history.opportunity.id, history.id) for
- history in histories)
- res = super(One2ManyHistory, self).get(opportunity2id.keys(),
model,
- name, values=values)
- return dict((opportunity2id[i], j) for i, j in res.iteritems())
-
-
class SaleOpportunityHistory(ModelSQL, ModelView):
'Sale Opportunity History'
_name = 'sale.opportunity.history'
@@ -397,8 +385,8 @@
}, depends=['state'])
description = fields.Char('Description')
comment = fields.Text('Comment')
- lines =
One2ManyHistory('sale.opportunity.line', 'opportunity', 'Lines',
- datetime_field='date')
+ lines = fields.Function(fields.One2Many('sale.opportunity.line',
None, 'Lines',
+ datetime_field='date'), 'get_lines')
state = fields.Selection(STATES, 'State')
probability = fields.Integer('Conversion Probability')
lost_reason = fields.Text('Reason for loss', states={
@@ -442,6 +430,18 @@
(', '.join(self._table_query_group()))) % \
opportunity_obj._table, [])
+ def get_lines(self, ids, name):
+ line_obj = self.pool.get('sale.opportunity.line')
+ histories = self.browse(ids)
+ result = {}
+ # We will always have only one id per call due to datetime_field
+ for history in histories:
+ result[history.id] = line_obj.search([
+ ('opportunity', '=', history.opportunity.id),
+ ])
+ return result
+
+
def read(self, ids, fields_names=None):
res = super(SaleOpportunityHistory, self).read(ids,
fields_names=fields_names)
--
[email protected] mailing list