114 lines
5.5 KiB
Python
Executable File
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,
|
|
}
|