Files
DigitalSignage/models/dss_advertisefields_create_from_project_wizard.py
2026-07-23 08:54:44 +02:00

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)],
}