[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:
@@ -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"/>
|
||||
|
||||
Reference in New Issue
Block a user