Files
2026-07-11 00:27:43 +02:00

49 lines
2.0 KiB
Python

from odoo import models, fields, api, _
class TranslationMixin(models.AbstractModel):
_name = 'otk.translation.mixin'
_description = 'Translation Mixin'
last_translation_date = fields.Datetime('Last Translation Date')
def action_bulk_translate(self):
return {
'type': 'ir.actions.act_window',
'name': _('Bulk translate'),
'res_model': 'otk.translation.bulk.translate',
'view_mode': 'form',
'view_id': self.env.ref('otoolkit_auto_translate_fields.view_bulk_translate_wizard_form').id,
'target': 'new',
}
@api.model
def _get_view(self, view_id=None, view_type='search', **options):
arch, view = super()._get_view(view_id, view_type, **options)
if view_type == 'list':
# Here we check if the action already exists
model_name = self._name
action_xml_id = 'bulk_translate_action_for_' + model_name.replace('.', '_')
server_action = self.env.ref(f'otoolkit_auto_translate_fields.{action_xml_id}', raise_if_not_found=False)
if not server_action:
# Create the server action dynamically
model = self.env['ir.model']._get(model_name)
action_name = _('Bulk translate')
server_action = self.env['ir.actions.server'].sudo().create({
'name': action_name,
'model_id': model.id,
'binding_model_id': model.id,
'binding_view_types': 'list',
'state': 'code',
'code': "action = env['%s'].action_bulk_translate()" % model_name,
})
self.env['ir.model.data'].sudo().create({
'name': action_xml_id,
'model': 'ir.actions.server',
'module': "otoolkit_auto_translate_fields",
'res_id': server_action.id,
'noupdate': True,
})
return arch, view