49 lines
2.0 KiB
Python
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 |