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) result.issaved = True return result _name = "dss.advertisefields" _description = "DigitalSignage Werbefelder" _inherit = ['mail.thread','mail.activity.mixin'] _rec_name = "auto_feldname" # _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') issaved = fields.Boolean('ist gespeichert') isblocked = fields.Boolean('Nach Nutzung sperren',tracking=True, default=True) # uuid = fields.Char('UUID', required=True, translate=True) auto_feldname = fields.Char('Projekt_Feldname', required=True) display = fields.Char('Designname') feldname = fields.Char('Feldname', required=True) project = fields.Many2one('dss.projects' , string='Project', store=True) project_id = fields.Integer(related='project.projectid', string='Project ID') contract = fields.Many2many('dss.contracts' , string='Vertrag', store=True) contract_save = fields.Many2one('dss.contracts' , string='Vertrag', store=True) contract_project_id = fields.Integer(related='contract.project_id', string='Project ID') color_used = fields.Char(string='Color Index') color_unused = fields.Char(string='Color Index') mediastructure = fields.Many2one('dss.adstructures',string='Feldaufbau',tracking=True) mediastructure_medias = fields.Many2many(related='mediastructure.medias',string='Inhalt') mediarelations = fields.One2many('dss.mediarelations','relname',tracking=True) def _default_create_date(self): return str(date.today()) def _default_create_user(self): self.issaved = True return str(self.env.user.name) @api.onchange('project') def _onchange_project(self): autoid = "" autoid = str(self.project_id)+"_"+str(self.feldname) self.auto_feldname =autoid @api.onchange('contract') def _onchange_contract(self): autoid = "" _logger.info('Contract Änderung prüfe Projekte !' + str(self.project_id) + ' / ' + str(self.contract_project_id)) if not self.project_id == self.contract_project_id: _logger.info('Contract Änderung unterschiedliche Projekte !'+str(self.project_id)+' / '+str(self.contract_project_id)) raise ValidationError(_("Gewähltes Projekt und Projekt des Vertrages sind unterschiedlich !")) else: autoid = str(self.project_id)+"_"+str(self.feldname) self.auto_feldname =autoid @api.onchange('mediastructure') def _onchange_mediastructure_id(self): restr = 'keine' for record in self : resstr = record.mediastructure.uuid mtyp = self.env['dss.adstructures'].search([("uuid","=",str(record.mediastructure.uuid))]) _logger.info(resstr) if mtyp: resstr = mtyp.structurename _logger.info(resstr + ' uuid : '+record.mediastructure.uuid) foundused = self.env['dss.mediarelations'].search_count(["&",('field_uuid','=',record.uuid),'|',('secured_ro','=',True),('used_ro','=',True)]) if foundused != 0 : _logger.info('change - Canceled !') raise ValidationError(_("Datensatz kann nicht gewechselt werden ! Es sind benutzt Medien in der Kampagne ! Bitte erst diese freigeben !")) self.date_lastedit = str(date.today()) self.mediastructure = mtyp @api.model def _default_uuid(self): return str(uuid.uuid4()) def check_contract_multi_Values(self): for record in self: if not record.contract: record.contract = record.contract_save