53 lines
1.9 KiB
Python
Executable File
53 lines
1.9 KiB
Python
Executable File
from odoo import fields, models, _
|
|
from odoo.exceptions import ValidationError
|
|
|
|
|
|
class DssAdvertisefieldsCreateFromProjectWizard(models.TransientModel):
|
|
_name = "dss.advertisefields.create.from.project.wizard"
|
|
_description = "Werbefelder aus vorhandenem Projekt erstellen"
|
|
|
|
source_project_id = fields.Many2one(
|
|
'dss.projects',
|
|
string='Altes Projekt',
|
|
required=True,
|
|
)
|
|
project_id = fields.Many2one(
|
|
'dss.projects',
|
|
string='Neues Projekt',
|
|
required=True,
|
|
)
|
|
|
|
def action_create_fields(self):
|
|
self.ensure_one()
|
|
|
|
if self.source_project_id.id == self.project_id.id:
|
|
raise ValidationError(_("Altes Projekt und neues Projekt muessen unterschiedlich sein."))
|
|
|
|
source_fields = self.env['dss.advertisefields'].search([
|
|
('project', '=', self.source_project_id.id)
|
|
])
|
|
if not source_fields:
|
|
raise ValidationError(_("Im gewaehlten alten Projekt wurden keine Werbefelder gefunden."))
|
|
|
|
create_vals = []
|
|
project_identifier = self.project_id.projectid or self.project_id.id
|
|
for source_field in source_fields:
|
|
vals = source_field.copy_data()[0]
|
|
feldname = vals.get('feldname') or source_field.feldname
|
|
vals.update({
|
|
'project': self.project_id.id,
|
|
'auto_feldname': f"{project_identifier}_{feldname}",
|
|
'contract': [(6, 0, [])],
|
|
'contract_save': False,
|
|
})
|
|
create_vals.append(vals)
|
|
|
|
created_fields = self.env['dss.advertisefields'].create(create_vals)
|
|
return {
|
|
'type': 'ir.actions.act_window',
|
|
'name': _('Erstellte Werbefelder'),
|
|
'res_model': 'dss.advertisefields',
|
|
'view_mode': 'tree,form',
|
|
'domain': [('id', 'in', created_fields.ids)],
|
|
}
|