125 lines
7.4 KiB
Python
Executable File
125 lines
7.4 KiB
Python
Executable File
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
|