96 lines
3.8 KiB
Python
Executable File
96 lines
3.8 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 dsssystemtypen(models.Model):
|
|
|
|
|
|
_name = "dss.systemtypen"
|
|
_inherit = ['mail.thread']
|
|
_description = "DigitalSignage Systemtypen"
|
|
_rec_name = "systemname"
|
|
uuid = fields.Char(default=lambda self: self._default_uuid(), required=True, readonly=True, copy=False, string='UUID')
|
|
systemname = fields.Char('Systemname', required=True)
|
|
kennung = fields.Char('Kurzkennung', required=True)
|
|
farbe = fields.Char('Grundfarbe')
|
|
icon = fields.Image()
|
|
icon_5050 = fields.Image("Icon 50",compute='_compute_icon_5050')
|
|
default_adstructure = fields.Many2one('dss.adstructures',string='Standard-Werbeaufbau', tracking=True)
|
|
default_cloud_path = fields.Char('Standard Cloud Pfad', tracking=True)
|
|
default_cloud_structure_project = fields.Char('Standard Cloud Projekt-Struktur (Pfad)', tracking=True)
|
|
default_cloud_structure_contract = fields.Char('Standard Cloud Kunden-Struktur (Pfad)', tracking=True)
|
|
email_template_welcome = fields.Many2one('mail.template',string='Mailvorlage für Willkommen', tracking=True)
|
|
email_template_zuarbeit = fields.Many2one('mail.template',string='Mailvorlage für Zuarbeiterrinnerung', tracking=True)
|
|
email_template_abzug = fields.Many2one('mail.template',string='Mailvorlage für Korrekturabzug', tracking=True)
|
|
email_template_start = fields.Many2one('mail.template',string='Mailvorlage für Auslieferung', tracking=True)
|
|
open_close_standard_state = fields.Boolean('Wenn Leer geschlossen ? ', tracking=True)
|
|
open_close_user_state = fields.Boolean('Leer-Verhalten user',compute='_get_user_openstate',tracking=True)
|
|
order = fields.Integer('Reihenfolge')
|
|
showonlinestate = fields.Boolean('OnlineStatus zeigen')
|
|
showonlinestate_type = fields.Selection([('RPORT','RPort Status'),('VNNOX','Vnnox System')])
|
|
|
|
|
|
|
|
@api.model
|
|
def _default_uuid(self):
|
|
return str(uuid.uuid4())
|
|
|
|
@api.depends('icon')
|
|
def _compute_icon_5050(self):
|
|
for rec in self:
|
|
if rec.icon != False:
|
|
_logger.info('compute 50x50 icon for '+rec.uuid)
|
|
# rec.mediafile_preview = self._generate_preview_from_binary(base64.decodebytes(rec.mediafile))
|
|
# rec.icon_5050 = tools.image_resize_image(rec.icon,size=(50,50),avoid_if_small=True)
|
|
rec.icon_5050 = rec.icon
|
|
# if rec.mediafile != False:
|
|
# rec.mediafile_preview = self._generate_preview_from_binary(base64.decodebytes(rec.mediafile))
|
|
# rec.mediafile_preview = None
|
|
else:
|
|
_logger.info('alternative compute '+rec.uuid)
|
|
rec.icon_5050 = rec.icon
|
|
return
|
|
|
|
def _get_user_openstate(self):
|
|
state=self.open_close_standard_state
|
|
self.open_close_user_state=state
|
|
return state
|
|
|
|
|
|
|
|
class dssstatesave(models.Model):
|
|
|
|
|
|
_name = "dss.statesave"
|
|
_description = "DigitalSignage Systemtypen StatusPerUser"
|
|
uuid = fields.Char(default=lambda self: self._default_uuid(), required=True, readonly=True, copy=False, string='UUID')
|
|
stategroup = fields.Selection([('SYSTYP','Systemtypen'),('CONTYP','Vertragsstatus')],'Status Gruppe', required=True)
|
|
state = fields.Char('Status', required=True)
|
|
user = fields.Char('Benutzer', required=True)
|
|
state_open = fields.Boolean('Verhalten ')
|