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 dsssystems(models.Model): _name = "dss.systems" _description = "DigitalSignage Systemtypen" _inherit = ['mail.thread','mail.activity.mixin'] _rec_name = "systemname" # _inherit = ['mail.thread', 'mail.activity.mixin'] uuid = fields.Char(default=lambda self: self._default_uuid(), required=True, readonly=True, copy=False, string='UUID') # uuid = fields.Char('UUID', required=True, translate=True) systemname = fields.Char('Systemname', required=True) grundsystem = fields.Many2one('dss.systemtypen', string="Gerät ist nutzbar für") grundsystem_kennung = fields.Char(string='Kennung', related='grundsystem.kennung') standort = fields.Char('Hauptstandort des Systems',tracking=True) farbe = fields.Char('Grundfarbe') has_heizung = fields.Boolean('Mit Heizsystem') has_klima = fields.Boolean('Mit Klimasystem') has_fan = fields.Boolean('Mit Ventiltorensystem') stromzaehler = fields.Many2one('dss.geraetetypen') stromverbrauch_avg = fields.Integer('Stromverbrauch AVG in W') osvorhanden = fields.Boolean('Mit Betriebssystem') osname = fields.Char('Betriebssystem') ostyp = fields.Selection([('Win','Windows'), ('Lin','Linux'), ('And','Android'),('Ras','Raspberry PI'),('Non','Keines bekannt'),('Div','Anderes')]); lcd_ausrichtung = fields.Selection([('quer','Horizontal/Querformat'), ('hoch','Vertikal/Hochformat'),('Divers','Andere Art')],'LCD Ausrichtung'); lcd_touch = fields.Boolean('Touchsystem') lcd_montage = fields.Selection([('WAN','Wandmontage'), ('FUS','Standfuss rollbar'), ('FI1','Boden verankert 1 Fuss'),('FI2','Boden verankert 2 Füsse'),('FIX','Bodenverankert Blockfuss'),('XXX','Sonstige')],'Montage/Befestigung'); lcd_montage_sonstige = fields.Char('Sonstige Montageart') lcd_panel = fields.Many2one('dss.geraetetypen',domain="['&',('grundsystem_kennung','=','LCD'),('led_geraetetyp','=','ANZ')]") lcd_mainboard = fields.Many2one('dss.geraetetypen',domain="['&',('grundsystem_kennung','=','LCD'),('led_geraetetyp','=','STE')]") lcd_touchcontroler = fields.Many2one('dss.geraetetypen',domain="['&',('grundsystem_kennung','=','LCD'),('led_geraetetyp','=','SYS')]") lcd_netzteil = fields.Many2one('dss.geraetetypen',domain="['&',('grundsystem_kennung','=','LCD'),('led_geraetetyp','=','NET')]") led_pixelpitch = fields.Char('Pixelabstand') led_breite = fields.Integer('LED Breite mm') led_hoehe = fields.Integer('LED Hoehe mm') led_pixel_breite = fields.Integer('LED Breite px') led_pixel_hoehe = fields.Integer('LED Hoehe px') led_cab_in_breite = fields.Integer('LED Cabinets Breite Stck') led_cab_in_hoehe = fields.Integer('LED Cabinets Hoehe Stck') led_receivingcard = fields.Many2one('dss.geraetetypen',domain="['&',('grundsystem_kennung','=','LED'),('led_geraetetyp','=','REC')]") led_netzteile = fields.Many2one('dss.geraetetypen',domain="['&',('grundsystem_kennung','=','LED'),('led_geraetetyp','=','NET')]") led_module = fields.Many2one('dss.geraetetypen',domain="['&',('grundsystem_kennung','=','LED'),('led_geraetetyp','=','MOD')]") led_montage = fields.Selection([('WAN','Wandmontage'), ('FUS','1 standFuss zentral'), ('FU2','2 Standfüsse Aussen'),('FU3','1 Standfuss dezentral'),('MO1','manuell Mobil bewegbar'),('MO2','Mobil bewegbar Container'),('XXX','Sonstige')],'Montage/Befestigung'); led_montage_sonstige = fields.Char('Sonstige Montageart') led_cabinets_sonstige = fields.Many2many('dss.geraetetypen','led_cabinet_typen','uuid',domain="['&',('grundsystem_kennung','=','LED'),('geraetetyp','=','ANZ')]",string="Cabinets im Verbund") zusatz_integrationen = fields.Many2many('dss.geraetetypen','zusatz_typen','uuid') @api.model def _default_uuid(self): return str(uuid.uuid4())