116 lines
4.6 KiB
Python
116 lines
4.6 KiB
Python
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
|