[IMP] snailmail: correct default_get behavior

1) Use a default_<fname> context key to give a default value and leave 
the management of the default to the orm level when possible.

2) Do not return unwanted default values in default_get override.
This commit is contained in:
Victor Feyens
2020-07-23 16:38:17 +00:00
parent addffca423
commit 468f86e0c1
4 changed files with 17 additions and 15 deletions
@@ -622,7 +622,7 @@ QUnit.test('Missing Required Fields', async function (assert) {
"action should be the one for missing fields"
);
assert.strictEqual(
payload.options.additional_context.letter_id,
payload.options.additional_context.default_letter_id,
22, // should be the same as the id returned by search
"action should have correct letter id"
);
@@ -48,7 +48,7 @@ registerInstancePatchModel('mail.message', 'snailmail/static/src/models/message.
action: 'snailmail.snailmail_letter_missing_required_fields_action',
options: {
additional_context: {
letter_id: letterIds[0],
default_letter_id: letterIds[0],
},
},
});
@@ -17,19 +17,19 @@ class SnailmailLetterMissingRequiredFields(models.TransientModel):
@api.model
def default_get(self, fields):
rec = super(SnailmailLetterMissingRequiredFields, self).default_get(fields)
letter_id = self.env['snailmail.letter'].browse(self.env.context.get('letter_id'))
rec.update({
'partner_id': letter_id.partner_id.id,
'letter_id': letter_id.id,
'street': letter_id.street,
'street2': letter_id.street2,
'zip': letter_id.zip,
'city': letter_id.city,
'state_id': letter_id.state_id.id,
'country_id': letter_id.country_id.id,
})
return rec
defaults = super(SnailmailLetterMissingRequiredFields, self).default_get(fields)
if defaults.get('letter_id'):
letter = self.env['snailmail.letter'].browse(defaults.get('letter_id'))
defaults.update({
'partner_id': letter.partner_id.id,
'street': letter.street,
'street2': letter.street2,
'zip': letter.zip,
'city': letter.city,
'state_id': letter.state_id.id,
'country_id': letter.country_id.id,
})
return defaults
def update_address_cancel(self):
self.letter_id.cancel()
@@ -5,6 +5,8 @@
<field name="model">snailmail.letter.missing.required.fields</field>
<field name="arch" type="xml">
<form>
<!-- Field present for correct default_get behavior -->
<field name="letter_id" invisible="1"/>
<p>The customer address is not complete. Update the address here and re-send the letter.</p>
<group>
<label for="partner_id" string="Address"/>