fix after review

fix demo data for tests on other module to pass
pull/1764/head
Damien Crier 2017-10-03 16:12:59 +02:00 committed by Andrea
parent c7f3b94037
commit adb662d4ef
5 changed files with 38 additions and 35 deletions

View File

@ -123,7 +123,7 @@ Screenshot:
.. image:: https://odoo-community.org/website/image/ir.attachment/5784_f2813bd/datas .. image:: https://odoo-community.org/website/image/ir.attachment/5784_f2813bd/datas
:alt: Try me on Runbot :alt: Try me on Runbot
:target: https://runbot.odoo-community.org/runbot/134/9.0 :target: https://runbot.odoo-community.org/runbot/134/10.0
Known issues / Roadmap Known issues / Roadmap
====================== ======================

View File

@ -8,7 +8,7 @@
<record model="changeset.field.rule" id="changeset_field_rule_street"> <record model="changeset.field.rule" id="changeset_field_rule_street">
<field name="field_id" ref="base.field_res_partner_street"/> <field name="field_id" ref="base.field_res_partner_street"/>
<field name="action">validate</field> <field name="action">auto</field>
</record> </record>
<record model="changeset.field.rule" id="changeset_field_rule_street2"> <record model="changeset.field.rule" id="changeset_field_rule_street2">
@ -38,7 +38,7 @@
<record model="changeset.field.rule" id="changeset_field_rule_country_id"> <record model="changeset.field.rule" id="changeset_field_rule_country_id">
<field name="field_id" ref="base.field_res_partner_country_id"/> <field name="field_id" ref="base.field_res_partner_country_id"/>
<field name="action">validate</field> <field name="action">auto</field>
</record> </record>
<record model="changeset.field.rule" id="changeset_field_rule_credit_limit"> <record model="changeset.field.rule" id="changeset_field_rule_credit_limit">

View File

@ -2,7 +2,7 @@
# Copyright 2015-2017 Camptocamp SA # Copyright 2015-2017 Camptocamp SA
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
from odoo import models, fields, api from odoo import api, fields, models
from odoo.tools.cache import ormcache from odoo.tools.cache import ormcache

View File

@ -2,7 +2,7 @@
# Copyright 2015-2017 Camptocamp SA # Copyright 2015-2017 Camptocamp SA
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
from odoo import models, fields, api from odoo import api, fields, models
class ResPartner(models.Model): class ResPartner(models.Model):
@ -17,13 +17,13 @@ class ResPartner(models.Model):
compute='_count_pending_changesets', compute='_count_pending_changesets',
search='_search_count_pending_changesets') search='_search_count_pending_changesets')
@api.one
@api.depends('changeset_ids', 'changeset_ids.state') @api.depends('changeset_ids', 'changeset_ids.state')
def _count_pending_changesets(self): def _count_pending_changesets(self):
changesets = self.changeset_ids.filtered( for rec in self:
lambda rev: rev.state == 'draft' and rev.partner_id == self changesets = rec.changeset_ids.filtered(
) lambda rev: rev.state == 'draft' and rev.partner_id == rec
self.count_pending_changesets = len(changesets) )
rec.count_pending_changesets = len(changesets)
@api.multi @api.multi
def write(self, values): def write(self, values):

View File

@ -6,7 +6,8 @@ from itertools import groupby
from lxml import etree from lxml import etree
from operator import attrgetter from operator import attrgetter
from odoo import models, fields, api, exceptions, _ from odoo import api, fields, models
from odoo import exceptions, _
from odoo.osv.orm import setup_modifiers from odoo.osv.orm import setup_modifiers
# sentinel object to be sure that no empty value was passed to # sentinel object to be sure that no empty value was passed to
@ -52,14 +53,14 @@ class ResPartnerChangeset(models.Model):
models = self.env['ir.model'].search([]) models = self.env['ir.model'].search([])
return [(model.model, model.name) for model in models] return [(model.model, model.name) for model in models]
@api.one
@api.depends('change_ids', 'change_ids.state') @api.depends('change_ids', 'change_ids.state')
def _compute_state(self): def _compute_state(self):
if all(change.state in ('done', 'cancel') for change for rec in self:
in self.mapped('change_ids')): if all(change.state in ('done', 'cancel') for change
self.state = 'done' in rec.mapped('change_ids')):
else: rec.state = 'done'
self.state = 'draft' else:
rec.state = 'draft'
@api.multi @api.multi
def apply(self): def apply(self):
@ -69,7 +70,7 @@ class ResPartnerChangeset(models.Model):
def cancel(self): def cancel(self):
self.mapped('change_ids').cancel() self.mapped('change_ids').cancel()
@api.multi @api.model
def add_changeset(self, record, values): def add_changeset(self, record, values):
""" Add a changeset on a partner """ Add a changeset on a partner
@ -306,25 +307,25 @@ class ResPartnerChangesetChange(models.Model):
_old_value_fields + _old_value_fields +
_new_value_fields) _new_value_fields)
@api.one
@api.depends('changeset_id.partner_id') @api.depends('changeset_id.partner_id')
def _compute_origin_values(self): def _compute_origin_values(self):
field_name = self.get_field_for_type(self.field_id, 'origin') for rec in self:
if self.state == 'draft': field_name = rec.get_field_for_type(rec.field_id, 'origin')
value = self.changeset_id.partner_id[self.field_id.name] if rec.state == 'draft':
else: value = rec.changeset_id.partner_id[rec.field_id.name]
old_field = self.get_field_for_type(self.field_id, 'old') else:
value = self[old_field] old_field = rec.get_field_for_type(rec.field_id, 'old')
setattr(self, field_name, value) value = rec[old_field]
setattr(rec, field_name, value)
@api.one
@api.depends(lambda self: self._value_fields) @api.depends(lambda self: self._value_fields)
def _compute_value_display(self): def _compute_value_display(self):
for prefix in ('origin', 'new'): for rec in self:
value = getattr(self, 'get_%s_value' % prefix)() for prefix in ('origin', 'new'):
if self.field_id.ttype == 'many2one' and value: value = getattr(rec, 'get_%s_value' % prefix)()
value = value.display_name if rec.field_id.ttype == 'many2one' and value:
setattr(self, '%s_value_display' % prefix, value) value = value.display_name
setattr(rec, '%s_value_display' % prefix, value)
@api.model @api.model
def get_field_for_type(self, field, prefix): def get_field_for_type(self, field, prefix):
@ -369,7 +370,8 @@ class ResPartnerChangesetChange(models.Model):
""" """
changes_ok = self.browse() changes_ok = self.browse()
key = attrgetter('changeset_id') key = attrgetter('changeset_id')
for changeset, changes in groupby(self.sorted(key=key), key=key): for changeset, changes in groupby(self.with_context(
__no_changeset=True).sorted(key=key), key=key):
values = {} values = {}
partner = changeset.partner_id partner = changeset.partner_id
for change in changes: for change in changes:
@ -405,7 +407,7 @@ class ResPartnerChangesetChange(models.Model):
'this one.') 'this one.')
) )
partner.with_context(__no_changeset=True).write(values) partner.write(values)
changes_ok.write({'state': 'done'}) changes_ok.write({'state': 'done'})
@ -455,7 +457,7 @@ class ResPartnerChangesetChange(models.Model):
else: else:
return value return value
@api.multi @api.model
def _prepare_changeset_change(self, record, rule, field_name, value): def _prepare_changeset_change(self, record, rule, field_name, value):
""" Prepare data for a changeset change """ Prepare data for a changeset change
@ -494,6 +496,7 @@ class ResPartnerChangesetChange(models.Model):
return change, pop_value return change, pop_value
@api.model
def fields_view_get(self, *args, **kwargs): def fields_view_get(self, *args, **kwargs):
_super = super(ResPartnerChangesetChange, self) _super = super(ResPartnerChangesetChange, self)
result = _super.fields_view_get(*args, **kwargs) result = _super.fields_view_get(*args, **kwargs)