DigitalSignage/models/dss_advertisefields_templat...

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