DigitalSignage/models/dss_advertisefields_save_as...

114 lines
5.5 KiB
Python
Executable File

from odoo import fields, models, _
from odoo.exceptions import ValidationError
class DssAdvertisefieldsSaveAsTemplateWizard(models.TransientModel):
_name = "dss.advertisefields.save.as.template.wizard"
_description = "Werbefelder als Vorlage speichern"
source_project_id = fields.Many2one(
'dss.projects',
string='Altes Projekt',
required=True,
)
new_template_name = fields.Char(
string='Neuer Vorlagenname',
required=True,
)
def action_save_as_template(self):
self.ensure_one()
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."))
template_name = self.new_template_name.strip()
if not template_name:
raise ValidationError(_("Bitte einen gueltigen Vorlagennamen eingeben."))
first_display_template = source_fields[0].btn_displaytemplate
display_template_vals = {
'displayname': template_name,
}
if first_display_template:
display_template_vals.update({
'fullsize_w': first_display_template.fullsize_w,
'fullsize_h': first_display_template.fullsize_h,
'adportal_visible': first_display_template.adportal_visible,
})
new_display_template = self.env['dss.display.templates'].create(display_template_vals)
template_field_vals = []
for source_field in source_fields:
template_field_name = source_field.feldname or source_field.auto_feldname or ''
if not source_field.feldname and source_field.auto_feldname and '_' in source_field.auto_feldname:
template_field_name = source_field.auto_feldname.split('_', 1)[1]
vals = {
'templatefeldname': template_field_name,
'display': source_field.display,
'displaytemplate': new_display_template.id,
'feldname': source_field.feldname,
'color_used': source_field.color_used,
'color_unused': source_field.color_unused,
'mediastructure': source_field.mediastructure.id,
'is_btn': source_field.is_btn,
'btn_pos_x': source_field.btn_pos_x,
'btn_pos_y': source_field.btn_pos_y,
'btn_pos_w': source_field.btn_pos_w,
'btn_pos_h': source_field.btn_pos_h,
'btn_name': source_field.btn_name,
'btn_image': source_field.btn_image,
'btn_fieldname': source_field.btn_fieldname,
'btn_visible': source_field.btn_visible,
'btn_active': source_field.btn_active,
'btn_action_inactive': source_field.btn_action_inactive,
'btn_action_active': source_field.btn_action_active,
'btn_playlist_zuordnung': source_field.btn_playlist_zuordnung,
'btn_gallery_rows': source_field.btn_gallery_rows,
'btn_gallery_cols': source_field.btn_gallery_cols,
'btn_gallery_prv_w': source_field.btn_gallery_prv_w,
'btn_gallery_prv_h': source_field.btn_gallery_prv_h,
'btn_has_timer': source_field.btn_has_timer,
'btn_has_timer_time': source_field.btn_has_timer_time,
'btn_editable': source_field.btn_editable,
'btn_special_actionimage': source_field.btn_special_actionimage,
'btn_special_actionimage_x': source_field.btn_special_actionimage_x,
'btn_special_actionimage_y': source_field.btn_special_actionimage_y,
'btn_special_actionimage_w': source_field.btn_special_actionimage_w,
'btn_special_actionimage_h': source_field.btn_special_actionimage_h,
'btn_special_actionimage_time': source_field.btn_special_actionimage_time,
'btn_text_1_visible': source_field.btn_text_1_visible,
'btn_text_2_visible': source_field.btn_text_2_visible,
'btn_text_3_visible': source_field.btn_text_3_visible,
'btn_text_4_visible': source_field.btn_text_4_visible,
'btn_text_1_pos_x': source_field.btn_text_1_pos_x,
'btn_text_1_pos_y': source_field.btn_text_1_pos_y,
'btn_text_2_pos_x': source_field.btn_text_2_pos_x,
'btn_text_2_pos_y': source_field.btn_text_2_pos_y,
'btn_text_3_pos_x': source_field.btn_text_3_pos_x,
'btn_text_3_pos_y': source_field.btn_text_3_pos_y,
'btn_text_4_pos_x': source_field.btn_text_4_pos_x,
'btn_text_4_pos_y': source_field.btn_text_4_pos_y,
'btn_text_1_font': source_field.btn_text_1_font,
'btn_text_2_font': source_field.btn_text_2_font,
'btn_text_3_font': source_field.btn_text_3_font,
'btn_text_4_font': source_field.btn_text_4_font,
}
template_field_vals.append(vals)
created_template_fields = self.env['dss.advertisefields.templates'].create(template_field_vals)
new_display_template.write({'feldtemplates': [(6, 0, created_template_fields.ids)]})
return {
'type': 'ir.actions.act_window',
'name': _('Neue Werbefeld-Vorlage'),
'res_model': 'dss.display.templates',
'view_mode': 'form',
'res_id': new_display_template.id,
}