DigitalSignage/models/dss_systemtypen.py

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 ')