import ast import datetime import json import re import uuid import logging import base64 import subprocess import tempfile import easywebdav import os import os.path from odoo import api, fields, models, _ from odoo import tools from odoo.exceptions import ValidationError from datetime import date from datetime import datetime from dateutil.relativedelta import relativedelta from pyffmpeg import FFmpeg from tuya_iot import TuyaOpenAPI, TUYA_LOGGER from tuya_connector import TuyaOpenAPI, TUYA_LOGGER import sys TUYA_LOGGER.setLevel(logging.DEBUG) _logger = logging.getLogger(__name__) class dssadvertisefields(models.Model): @api.model def create(self,vals): result = super().create(vals) return result _name = "dss.advertisefields.templates" _description = "DigitalSignage Werbefeldvorlage" _inherit = ['mail.thread','mail.activity.mixin'] _rec_name = "templatefeldname" # _inherit = ['mail.thread', 'mail.activity.mixin'] uuid = fields.Char(default=lambda self: self._default_uuid(), required=True, readonly=True, copy=False, string='UUID') date_create = fields.Date('Erstellungsdatum',default=lambda self: self._default_create_date()) date_lastedit = fields.Date('Änderungsdatum') user_create = fields.Char('Erstellungsuser',default=lambda self: self._default_create_user()) user_lastedit = fields.Char('Änderungsuser') # uuid = fields.Char('UUID', required=True, translate=True) templatefeldname = fields.Char('Template Feldname', required=True,tracking=True) display = fields.Char('Ziel Feldname',tracking=True) displaytemplate = fields.Many2one('dss.display.templates',string="Display Vorlage",tracking=True) displaytemplate_fullsize_w = fields.Integer(related='displaytemplate.fullsize_w',string="Auflösung Breite",tracking=True) displaytemplate_fullsize_h = fields.Integer(related='displaytemplate.fullsize_h',string="Auflösung Höhe",tracking=True) feldname = fields.Char('Ziel Feldname', required=True,tracking=True) color_used = fields.Char(string='Color Index',tracking=True) color_unused = fields.Char(string='Color Index',tracking=True) mediastructure = fields.Many2one('dss.adstructures',string='Feldaufbau',tracking=True) btn_pos_x = fields.Integer('Position im Display X (px)', tracking=True) btn_pos_y = fields.Integer('Position im Display Y (px)', tracking=True) btn_pos_w = fields.Integer('Breite des Feldes (px)', tracking=True) btn_pos_h = fields.Integer('Höhe des Feldes (px)', tracking=True) btn_name = fields.Char('Button name',tracking=True) btn_image = fields.Char('Button Bild',tracking=True) btn_fieldname = fields.Char('Feldname am Display',tracking=True) btn_visible = fields.Boolean('Feld wird angezeigt',tracking=True, default=True) btn_active = fields.Boolean('Feld ist bedienbar/aktiv',tracking=True, default=True) btn_action_inactive = fields.Integer('Inaktiv Klickaktion',help='Aktion die ausgeführt wird bei click auf inaktiven Button - >0 und nicht activ = Baustellenbild bringen', tracking=True) btn_action_active = fields.Selection([('9','Spezialfenster'),('16','Internetfenster'),('3','Storry ausführen'),('2','Gallerie anzeigen'),('5','normales Verhalten'),('12','im Specialfenster das Fenster schliessen'),('14','im Specialfenster ein Bild anzeigen')],string='Aktive Klickaktion',help='Aktion die ausgeführt wird bei click auf Aktiven Button', tracking=True) btn_playlist_zuordnung = fields.Selection([('','Standard Zuordnung - Pfad+SchemaID+File'),('20','Kunden Zuordnung - Pfad+KundenID+File'),('50','Gallerie Zuordnung - Pfad+GallerieID+File')], tracking=True) btn_gallery_rows = fields.Integer('Zeilen der Gallery', tracking=True) btn_gallery_cols = fields.Integer('Spalten der Gallery', tracking=True) btn_gallery_prv_w = fields.Integer('Gallery Bildpreview Breite', tracking=True) btn_gallery_prv_h = fields.Integer('Gallery Bildpreview Höhe', tracking=True) btn_has_timer = fields.Boolean('Button Timeout',tracking=True, default=False) btn_has_timer_time = fields.Integer('Button Timer-Zeit', tracking=True) is_btn = fields.Boolean('ist Button',tracking=True, default=True) btn_editable = fields.Boolean('Button Editierbar',tracking=True, default=True) btn_special_actionimage = fields.Char('Anzeigebild Spezialform ', tracking=True) btn_special_actionimage_x = fields.Integer('X-Position Anzeigebild', tracking=True) btn_special_actionimage_y = fields.Integer('Y-Position Anzeigebild', tracking=True) btn_special_actionimage_w = fields.Integer('Breite Anzeigebild', tracking=True) btn_special_actionimage_h = fields.Integer('Hoehe Anzeigebild', tracking=True) btn_special_actionimage_time = fields.Integer('Anzeigezeit Anzeigebild', tracking=True) btn_text_1_visible = fields.Boolean('Textzeile 1 anzeigen',tracking=True, default=False) btn_text_2_visible = fields.Boolean('Textzeile 1 anzeigen',tracking=True, default=False) btn_text_3_visible = fields.Boolean('Textzeile 1 anzeigen',tracking=True, default=False) btn_text_4_visible = fields.Boolean('Textzeile 1 anzeigen',tracking=True, default=False) btn_text_1_pos_x = fields.Integer('Textzeile 1 X-Pos',help="xxxx direkter Zahlenwert , +/-xxxx relativ zu Button",tracking=True) btn_text_1_pos_y = fields.Integer('Textzeile 1 Y-Pos',help="xxxx direkter Zahlenwert , +/-xxxx relativ zu Button", tracking=True) btn_text_2_pos_x = fields.Integer('Textzeile 2 X-Pos',help="xxxx direkter Zahlenwert , +/-xxxx relativ zu Button", tracking=True) btn_text_2_pos_y = fields.Integer('Textzeile 2 Y-Pos',help="xxxx direkter Zahlenwert , +/-xxxx relativ zu Button", tracking=True) btn_text_3_pos_x = fields.Integer('Textzeile 3 X-Pos',help="xxxx direkter Zahlenwert , +/-xxxx relativ zu Button", tracking=True) btn_text_3_pos_y = fields.Integer('Textzeile 3 Y-Pos',help="xxxx direkter Zahlenwert , +/-xxxx relativ zu Button", tracking=True) btn_text_4_pos_x = fields.Integer('Textzeile 4 X-Pos',help="xxxx direkter Zahlenwert , +/-xxxx relativ zu Button", tracking=True) btn_text_4_pos_y = fields.Integer('Textzeile 4 Y-Pos',help="xxxx direkter Zahlenwert , +/-xxxx relativ zu Button", tracking=True) btn_text_1_font = fields.Char('Textzeile 1 Schriftart', tracking=True) btn_text_2_font = fields.Char('Textzeile 2 Schriftart', tracking=True) btn_text_3_font = fields.Char('Textzeile 3 Schriftart', tracking=True) btn_text_4_font = fields.Char('Textzeile 4 Schriftart', tracking=True) def _default_create_date(self): return str(date.today()) def _default_create_user(self): return str(self.env.user.name) @api.model def _default_uuid(self): return str(uuid.uuid4()) @api.model def get_data(self,template): if not template: template = 1 alldata = self.env['dss.advertisefields.templates'].search([('displaytemplate',"=",template)]) outlist = [] self.env["confirmation.wizard"].with_context(hide_cancel=True).confirm_no_action_message(message="Debug : "+str(len(alldata))+"/"+str(alldata),title="Notification") _logger.info("Screendesigner DataRequest : " + str(len(alldata))+"/"+str(alldata)) for data in alldata: outlist.append({'uuid' : data.uuid,'pos_x':data.btn_pos_x,'pos_y':data.btn_pos_y,'pos_w':data.btn_pos_w,'pos_h':data.btn_pos_h,'feldname':data.feldname}) return outlist