vscode neu
This commit is contained in:
+563
-31
@@ -1,13 +1,111 @@
|
||||
import uuid
|
||||
import logging
|
||||
import datetime
|
||||
|
||||
from odoo import api, fields, models, _
|
||||
from odoo import tools
|
||||
from datetime import datetime
|
||||
from datetime import date
|
||||
from odoo.exceptions import ValidationError
|
||||
from dateutil.relativedelta import relativedelta
|
||||
import sys
|
||||
|
||||
_logger = logging.getLogger(__name__)
|
||||
|
||||
class dsstriggerconditions(models.Model):
|
||||
_name = "dss.triggerconditions"
|
||||
_description = "DigitalSignage Trigger Bedingungen"
|
||||
_inherit = ['mail.thread','mail.activity.mixin']
|
||||
_rec_name = "triggerconditionname"
|
||||
# _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')
|
||||
|
||||
triggerconditionname = fields.Char('Trigger Bedingungsname',tracking=True)
|
||||
trigger_table = fields.Many2one('ir.model','Nutzbar in',help='Für welche Daten ist dieser Bedingung gültig ?',tracking=True)
|
||||
trigger_condition_type = fields.Selection([('WERT','Feld gleich einem Wert'),('MARKER','Marker vorhanden')],'Prüfungsart',tracking=True)
|
||||
trigger_field = fields.Many2one('ir.model.fields',string="Bedingungsfeld", help='Prüfungsfeldname in der Tabelle - für dieses Feld wird der Wert geprüft',tracking=True)
|
||||
trigger_operator = fields.Selection([('NGLEICH','Feld gleich dem Wert'),('GGLEICH','Feld größer/gleich dem Wert'),('KGLEICH','Feld kleiner/gleich dem Wert'),('UGLEICH','Feld ungleich dem Wert'),('ENTHAELT','Feld enthällt dem Wert')],'Feldwertoperator',tracking=True)
|
||||
trigger_value_opperator = fields.Selection([('TAG','Aktueller Tag'),('TIME','Aktuelle Zeit'),('JAHR','Aktuelles Jahr'),('BTRUE','Boolean Wahr'),('BFALSE','Boolean Falsch'),('FIX','Wert')],'Vergleichswert',tracking=True)
|
||||
trigger_negate = fields.Boolean('Ergebnis Negieren',tracking=True)
|
||||
trigger_marker_check = fields.Many2one('dss.marker','Marker',help='Welcher Marker soll eingefügt werden ?',tracking=True)
|
||||
trigger_value = fields.Char('Fix Wert',tracking=True)
|
||||
|
||||
@api.model
|
||||
def _default_uuid(self):
|
||||
return str(uuid.uuid4())
|
||||
|
||||
def _default_create_date(self):
|
||||
return str(date.today())
|
||||
|
||||
def _default_create_user(self):
|
||||
return str(self.env.user.name)
|
||||
|
||||
|
||||
def trigger_CheckCond(self,Dataset,Condition):
|
||||
if (Condition.trigger_condition_type == "MARKER"):
|
||||
Wert = ""
|
||||
else:
|
||||
fieldname = Condition.trigger_field.name
|
||||
field = Dataset._fields[fieldname]
|
||||
field_type = field.type
|
||||
Compare = False
|
||||
if (field_type == "date"):
|
||||
Wert = str(Dataset[fieldname])
|
||||
elif (field_type == "many2one"):
|
||||
Wert = str(Dataset[fieldname].id)
|
||||
else:
|
||||
Wert = Dataset[fieldname]
|
||||
if (Condition.trigger_condition_type == "WERT"):
|
||||
_logger.info("Trigger in CheckConditions - checking conditions : "+str(Dataset)+" field : "+str(fieldname)+' ('+str(Condition.trigger_value_opperator)+') -> '+str(Condition))
|
||||
OPP = Condition.trigger_operator
|
||||
if (Condition.trigger_value_opperator== "TAG"):
|
||||
TargetValue= str(date.today())
|
||||
if (Wert == False):
|
||||
Wert = "1900-01-01"
|
||||
elif (Condition.trigger_value_opperator== "TIME"):
|
||||
TargetValue= str(datetime.now())
|
||||
if (Wert == False):
|
||||
Wert = "00:00"
|
||||
elif (Condition.trigger_value_opperator== "JAHR"):
|
||||
TargetValue= str(date.today())
|
||||
if (Wert == False):
|
||||
Wert = "1900-01-01"
|
||||
elif (Condition.trigger_value_opperator== "BTRUE"):
|
||||
TargetValue= str(True)
|
||||
elif (Condition.trigger_value_opperator== "BFALSE"):
|
||||
TargetValue= str(False)
|
||||
elif (Condition.trigger_value_opperator== "FIX"):
|
||||
TargetValue= str(Condition.trigger_value)
|
||||
_logger.info("Trigger in CheckConditions - Vergleich : ("+str(Wert)+') ('+str(field_type)+' -> '+str(OPP)+' -> '+str(TargetValue))
|
||||
Compare = False
|
||||
|
||||
if OPP=="NGLEICH":
|
||||
Compare = str(Wert) == str(TargetValue)
|
||||
_logger.info("Trigger in CheckConditions - Vergleich GLEICH : "+str(Wert)+' = '+str(TargetValue)+" = "+str(Compare))
|
||||
if OPP=="UGLEICH":
|
||||
Compare = str(Wert) != str(TargetValue)
|
||||
_logger.info("Trigger in CheckConditions - Vergleich NGLEICH : "+str(Wert)+' <> '+str(TargetValue)+" = "+str(Compare))
|
||||
if OPP=="GGLEICH":
|
||||
Compare = str(Wert) >= str(TargetValue)
|
||||
_logger.info("Trigger in CheckConditions - Vergleich GGLEICH : "+str(Wert)+' >= '+str(TargetValue)+" = "+str(Compare))
|
||||
if OPP=="KGLEICH":
|
||||
Compare = str(Wert) <= str(TargetValue)
|
||||
_logger.info("Trigger in CheckConditions - Vergleich KGLEICH : "+str(Wert)+' <= '+str(TargetValue)+" = "+str(Compare))
|
||||
elif (Condition.trigger_condition_type == "MARKER"):
|
||||
_logger.info("Trigger in CheckConditions - checking conditions : "+str(Dataset.marker_list)+" Marker : "+str(Condition.trigger_marker_check))
|
||||
Compare = Condition.trigger_marker_check.id in Dataset.marker_list.mapped('id')
|
||||
if Condition.trigger_negate:
|
||||
Compare = not Compare
|
||||
_logger.info("Trigger in CheckConditions - NOT Invert : = "+str(Compare))
|
||||
|
||||
dotrigger = Compare
|
||||
return dotrigger
|
||||
|
||||
|
||||
class dsstriggergroups(models.Model):
|
||||
_name = "dss.triggergroups"
|
||||
_description = "DigitalSignage Trigger Gruppen"
|
||||
@@ -21,8 +119,10 @@ class dsstriggergroups(models.Model):
|
||||
user_lastedit = fields.Char('Änderungsuser')
|
||||
|
||||
triggergroupname = fields.Char('Trigger Gruppenname',tracking=True)
|
||||
trigger_table = fields.Many2one('ir.model','Nutzbar in',help='Für welche Daten ist dieser Tigger gültig ?',track_visibility='onchange',tracking=True)
|
||||
trigger_table = fields.Many2one('ir.model','Nutzbar in',help='Für welche Daten ist dieser Tigger gültig ?',tracking=True)
|
||||
triggers = fields.Many2many('dss.triggertypes',string='Enthaltene Trigger',tracking=True)
|
||||
trigger_allgemein = fields.Boolean('Trigger allgemein gültig ?',tracking=True)
|
||||
trigger_cron = fields.Boolean('Triggergruppe für Zeitsteuerung ?',tracking=True)
|
||||
|
||||
@api.model
|
||||
def _default_uuid(self):
|
||||
@@ -33,6 +133,205 @@ class dsstriggergroups(models.Model):
|
||||
|
||||
def _default_create_user(self):
|
||||
return str(self.env.user.name)
|
||||
|
||||
@api.model
|
||||
def run_triggers(self, changes, Dataset, triggers):
|
||||
_logger.info("Trigger in run_triggers ! - start count :"+str(len(triggers)) )
|
||||
for trig in triggers:
|
||||
_logger.info("Trigger in run_triggers - Working on : "+str(trig.id))
|
||||
dochecktrigger = False
|
||||
|
||||
if (changes == False):
|
||||
dochecktrigger = True
|
||||
elif (trig.triggertyp == "COND"):
|
||||
dochecktrigger = True
|
||||
else:
|
||||
if (trig.trigger_field.name in changes):
|
||||
dochecktrigger = True
|
||||
|
||||
if (dochecktrigger):
|
||||
isinintitable = self.env['dss.triggermodel.execute'].search(['&',('trigger','=',trig.id),('data_uuid','=',Dataset.uuid)])
|
||||
dotrigger = False
|
||||
if (not isinintitable) and trig.trigger_init_trigger:
|
||||
_logger.info("Trigger in run_triggers - first run and allowed : "+str(isinintitable)+' -> '+str(trig.trigger_init_trigger)+' -> '+str(trig))
|
||||
dotrigger = True
|
||||
elif (not isinintitable) and ((not trig.trigger_init_trigger) and (not trig.trigger_onlyinit_trigger)):
|
||||
_logger.info("Trigger in run_triggers - first run but not allowed : "+str(isinintitable)+' -> '+str(trig.trigger_init_trigger)+' -> '+str(trig))
|
||||
dotrigger = False
|
||||
elif (isinintitable) and trig.trigger_onlyinit_trigger:
|
||||
_logger.info("Trigger in run_triggers - not first run but only first: "+str(isinintitable)+' -> '+str(trig.trigger_onlyinit_trigger)+' -> '+str(trig))
|
||||
dotrigger = False
|
||||
else:
|
||||
_logger.info("Trigger in run_triggers - not first run but only first: "+str(isinintitable)+' -> '+str(trig))
|
||||
dotrigger = True
|
||||
|
||||
if dotrigger:
|
||||
fieldname = trig.trigger_value_field.name
|
||||
_logger.info("Trigger in run_triggers - checking conditions : "+str(trig.triggertyp)+" field : "+str(fieldname)+' -> '+str(trig.trigger_value_field))
|
||||
if (trig.triggertyp == "FIELD_B"):
|
||||
Wert = Dataset[fieldname]
|
||||
_logger.info("Trigger in run_triggers - Boolean check : "+str(Dataset[fieldname])+" vs "+str(Wert)+' -> '+str(trig.trigger_value_Bool))
|
||||
if trig.trigger_value_Bool:
|
||||
if Wert:
|
||||
_logger.info("Trigger in run_triggers - value true - specific value found : "+str(changes)+" ("+str(Wert)+') -> '+str(trig.trigger_value_Bool))
|
||||
dotrigger = True
|
||||
else:
|
||||
_logger.info("Trigger in run_triggers - value true - specific value not found : "+str(changes)+" ("+str(Wert)+') -> '+str(trig.trigger_value_Bool))
|
||||
dotrigger = False
|
||||
else:
|
||||
if Wert:
|
||||
_logger.info("Trigger in run_triggers - value False - specific value found : "+str(changes)+" ("+str(Wert)+') -> '+str(trig.trigger_value_Bool))
|
||||
dotrigger = False
|
||||
else:
|
||||
_logger.info("Trigger in run_triggers - value False - specific value not found : "+str(changes)+" ("+str(Wert)+') -> '+str(trig.trigger_value_Bool))
|
||||
dotrigger = True
|
||||
elif (trig.triggertyp == "FIELD_S"):
|
||||
#Wert= self.env[trig.trigger_table.model].get(fieldname)
|
||||
WertDB = self.env[trig.trigger_table.model].search([('id', '=', Dataset.id)])
|
||||
field = WertDB._fields[fieldname]
|
||||
field_type = field.type
|
||||
Wert = ""
|
||||
if field_type=="many2one":
|
||||
Wert = str(Dataset[fieldname].id)
|
||||
# Dataset[fieldname].model
|
||||
# SubWertDB = self.env[].search([('id', '=', field.id)])
|
||||
# Wert = SubWertDB.id
|
||||
if field_type=="char":
|
||||
Wert = str(Dataset[fieldname])
|
||||
_logger.info("Trigger in run_triggers - specific value : "+str(changes)+" ("+str(Wert)+') -> '+str(trig.trigger_value)+' - '+str(field)+' / '+str(field_type))
|
||||
if (str(Wert) == str(trig.trigger_value)):
|
||||
_logger.info("Trigger in run_triggers - specific value found : "+str(changes)+" ("+str(Wert)+') -> '+str(trig.trigger_value))
|
||||
dotrigger = True
|
||||
else:
|
||||
_logger.info("Trigger in run_triggers - specific value not found : "+str(changes)+" ("+str(Wert)+') -> '+str(trig.trigger_value))
|
||||
dotrigger = False
|
||||
elif (trig.triggertyp == "FIELD_K"):
|
||||
dotrigger = False
|
||||
elif (trig.triggertyp == "MANUAL"):
|
||||
dotrigger = False
|
||||
elif (trig.triggertyp == "COND"):
|
||||
dotrigger = True
|
||||
|
||||
if trig.trigger_plus_conditions and dotrigger:
|
||||
runtrigger = True
|
||||
for SingleC in trig.trigger_conditions:
|
||||
_logger.info("Trigger in run_triggers - Multible Conditions found "+str(trig.trigger_conditions)+' -> '+str(SingleC)+' -> '+str(runtrigger))
|
||||
runtrigger = SingleC.trigger_CheckCond(Dataset,SingleC) and runtrigger
|
||||
else:
|
||||
runtrigger = dotrigger
|
||||
|
||||
if runtrigger:
|
||||
execds = ''
|
||||
self.trigger_run(trig,Dataset,isinintitable,execds)
|
||||
|
||||
def trigger_run(self,trig,Dataset,isinintitable,execds):
|
||||
for akt in trig.trigger_aktionen:
|
||||
if akt:
|
||||
_logger.info("Trigger in Trigger_run - Aktion "+str(akt))
|
||||
akt.Doexecute(Dataset)
|
||||
execds = execds + ";" +str(Dataset.id)+'/'+str(akt.id)
|
||||
if not isinintitable:
|
||||
# self.env['dss.triggermodel.execute'].create({'trigger':trig.id,'data_uuid':Dataset.uuid,'execdatetime':date.today(),"trigger_action":akt.id})
|
||||
self.env['dss.triggermodel.execute'].create({'trigger':trig.id,'data_uuid':Dataset.uuid,'execdatetime':date.today(),"trigger_table":self.env['ir.model'].search([('model','=',str(akt.trigger_table.model))]).id,"trigger_action":akt.id})
|
||||
# akt._run_action_code_multi(akt._get_eval_context(akt))
|
||||
else:
|
||||
_logger.info("Trigger in Trigger_run - no Aktion in Trigger !")
|
||||
for aktgroup in trig.trigger_aktionen_groups:
|
||||
if aktgroup:
|
||||
for akt in aktgroup:
|
||||
_logger.info("Trigger in Trigger_run - Aktion "+str(akt))
|
||||
akt.Doexecute(Dataset,trig,isinintitable)
|
||||
execds = execds + ";" +str(Dataset.id)+'/'+str(akt.id)
|
||||
|
||||
return execds
|
||||
|
||||
|
||||
def run_cron_triggers(self,triggergroup,triggers):
|
||||
_logger.info("Trigger in run_Cron_Triggers ! - Start für : "+str(self.trigger_table.model))
|
||||
resultstr = "Anz. Trigger : "+str(len(triggers))
|
||||
resultsimplestr = "Anz. Trigger : "+str(len(triggers))
|
||||
triggercnt = 0
|
||||
cntExecDS_init = 0
|
||||
cntExecDS = 0
|
||||
cntExecCont = 0
|
||||
cntExecContTrue = 0
|
||||
cntExecAS = 0
|
||||
dscnt = 0
|
||||
execds = ""
|
||||
for trig in triggers:
|
||||
triggercnt += 1
|
||||
resultstr = resultstr+" Trigger "+str(triggercnt)+' : '
|
||||
if (trig.triggertyp == "FILTER"):
|
||||
lea=trig.trigger_raw_condition.split(',')
|
||||
_logger.info("Trigger in run_Cron_triggers - : Filtered Datasets "+str(lea))
|
||||
AllDataset = self.env[str(triggergroup.trigger_table.model)].search([lea])
|
||||
else:
|
||||
AllDataset = self.env[str(triggergroup.trigger_table.model)].search([])
|
||||
_logger.info("Trigger in run_Cron_triggers - : All Datasets "+str(len(AllDataset)))
|
||||
resultstr = " Count Data : "+str(len(AllDataset))
|
||||
for Dataset in AllDataset:
|
||||
dscnt += 1
|
||||
resultstr = resultstr+" Data "+str(dscnt)+' : '
|
||||
_logger.info("Trigger in run_Cron_triggers - : "+str(Dataset)+" check allready execute : "+str(Dataset.uuid)+" "+str(date.today()))
|
||||
isinintitable = self.env['dss.triggermodel.execute'].search(['&',('trigger','=',trig.id),('data_uuid','=',Dataset.uuid),('execdatetime','=',date.today())])
|
||||
dotrigger = False
|
||||
if (not isinintitable) and trig.trigger_init_trigger:
|
||||
_logger.info("Trigger in run_Cron_triggers - first run and allowed : "+str(isinintitable)+' -> '+str(trig.trigger_init_trigger)+' -> '+str(trig))
|
||||
dotrigger = True
|
||||
elif (not isinintitable) and ((not trig.trigger_init_trigger) and (not trig.trigger_onlyinit_trigger)):
|
||||
_logger.info("Trigger in run_Cron_triggers - first run but not allowed : "+str(isinintitable)+' -> '+str(trig.trigger_init_trigger)+' -> '+str(trig))
|
||||
dotrigger = False
|
||||
elif (isinintitable) and trig.trigger_onlyinit_trigger:
|
||||
_logger.info("Trigger in run_Cron_triggers - not first run but only first (or day): "+str(isinintitable)+' -> '+str(trig.trigger_onlyinit_trigger)+' -> '+str(trig))
|
||||
dotrigger = False
|
||||
else:
|
||||
_logger.info("Trigger in run_Cron_triggers - running no given restrictions : "+str(isinintitable)+' -> '+str(trig))
|
||||
dotrigger = True
|
||||
|
||||
if dotrigger:
|
||||
cntExecDS_init += 1
|
||||
if (trig.triggertyp == "FILTER"):
|
||||
runtrigger = True
|
||||
elif (trig.triggertyp == "COND"):
|
||||
runtrigger = True
|
||||
for SingleC in trig.trigger_conditions:
|
||||
cntExecCont += 1
|
||||
_logger.info("Trigger in run_Cron_triggers - Multible Conditions found "+str(trig.trigger_conditions)+' -> '+str(SingleC)+' -> '+str(runtrigger))
|
||||
conres = SingleC.trigger_CheckCond(Dataset,SingleC)
|
||||
runtrigger = conres and runtrigger
|
||||
if conres:
|
||||
cntExecContTrue += 1
|
||||
else:
|
||||
_logger.info("Trigger Abgebrochen ! in ZeitGruppen sind nur BedingungsTrigger Erlaubt "+str(trig.trigger_aktionen))
|
||||
runtrigger = False
|
||||
|
||||
_logger.info("Trigger in run_Cron_triggers - Conditions result "+str(runtrigger))
|
||||
if runtrigger:
|
||||
cntExecDS += 1
|
||||
_logger.info("Trigger wird Ausgeführt - Aktionen "+str(trig.trigger_aktionen))
|
||||
resultstr = resultstr + " Anz Aktionen : "+str(len(trig.trigger_aktionen))
|
||||
execds = self.trigger_run(trig,Dataset,isinintitable,execds)
|
||||
|
||||
_logger.info("Result :"+resultstr)
|
||||
_logger.info("-------------------------------------- CRON Trigger Result --------------------------------------------------------------------")
|
||||
_logger.info("Result :"+resultsimplestr)
|
||||
_logger.info("Result : Anz. CondChecks : "+str(cntExecDS_init))
|
||||
_logger.info("Result : Anz. Conditions : "+str(cntExecCont))
|
||||
_logger.info("Result : Anz. ConditionsTrue : "+str(cntExecContTrue))
|
||||
_logger.info("Result : Anz. ConditionsFalse : "+str(cntExecCont - cntExecContTrue))
|
||||
_logger.info("Result : Anz. Conditionok : "+str(cntExecDS))
|
||||
_logger.info("Result : Anz. ExecAction : "+str(cntExecAS))
|
||||
_logger.info("Result : Exec Datasets : "+execds)
|
||||
_logger.info("-------------------------------------------------------------------------------------------------------------------------------")
|
||||
|
||||
|
||||
def exectrigger(self):
|
||||
_logger.info("Trigger Sofort Execute !"+str(self))
|
||||
if self.trigger_cron:
|
||||
self.run_cron_triggers(self,self.triggers)
|
||||
else:
|
||||
self.run_triggers(False,False,self.triggers)
|
||||
|
||||
|
||||
|
||||
class dsstriggertypes(models.Model):
|
||||
@@ -47,15 +346,23 @@ class dsstriggertypes(models.Model):
|
||||
user_lastedit = fields.Char('Änderungsuser')
|
||||
|
||||
triggername = fields.Char('Triggername',tracking=True)
|
||||
triggergruppe = fields.Char('Triggergruppe',tracking=True)
|
||||
trigger_active = fields.Boolean('Trigger Aktiv ?',tracking=True)
|
||||
triggertyp = fields.Selection([('FIELD_A','Feldänderung allgemein'),('FIELD_S','Feldänderung spezifisch'),('FIELD_K','Feldwert berechnet'),('MANUAL','Menuell ausgelösst')],'Triggertyp',tracking=True)
|
||||
triggertyp = fields.Selection([('FIELD_A','Feldänderung allgemein'),('FIELD_S','Feldänderung spezifisch'),('FIELD_B','Feldänderung BOOL'),('FIELD_K','Feldwert berechnet'),('COND','Bedingungen prüfen'),('MANUAL','Manuell ausgelösst'),('FILTER','Manuell gefiltert')],'Triggertyp',tracking=True)
|
||||
trigger_table = fields.Many2one('ir.model','Nutzbar in',help='Für welche Daten ist dieser Tigger gültig ?',tracking=True)
|
||||
trigger_field = fields.Many2one('ir.model.fields', help='Feldname in der Tabelle',tracking=True)
|
||||
trigger_field = fields.Many2one('ir.model.fields', string="Auslöser Feld",help='Triggerfeldname in der Tabelle - Änderungen an dem Feld lösen den Trigger aus',tracking=True)
|
||||
trigger_operator = fields.Selection([('NGLEICH','Feld gleich dem Wert'),('GGLEICH','Feld größer/gleich dem Wert'),('KGLEICH','Feld kleiner/gleich dem Wert'),('UGLEICH','Feld ungleich dem Wert'),('ENTHAELT','Feld enthällt dem Wert')],'Feldwertoperator',tracking=True)
|
||||
trigger_time_opperator = fields.Selection([('TAG','Aktueller Tag'),('TIME','Aktuelle Zeit'),('JAHR','Aktuelles Jahr'),('FIX','Feste Zeit')],'Vergleichswert',tracking=True)
|
||||
trigger_init_trigger = fields.Boolean('Ausl. bei 1. Änderung ?',help='Soll der Trigger bereits beim setzen des 1. Wertes auslösen?',tracking=True)
|
||||
trigger_onlyinit_trigger = fields.Boolean('Ausl. nur bei 1. Änderung ?',help='Soll der Trigger nur beim setzen des 1. Wertes auslösen?',tracking=True)
|
||||
trigger_plus_conditions = fields.Boolean('Zusätz. Bedingungen prüfen',help='Soll der Trigger zusätzlich zur Auslösung Bedingungen prüfen?',tracking=True)
|
||||
trigger_value_field = fields.Many2one('ir.model.fields',string="Vergleichsfeld Feld", help='Prüfungsfeldname in der Tabelle - für dieses Feld wird der Wert geprüft',tracking=True)
|
||||
trigger_value = fields.Char('Feldwert für Trigger',tracking=True)
|
||||
trigger_old_value = fields.Char('Letzter-Feldwert für Trigger',tracking=True)
|
||||
trigger_aktionen = fields.Many2many('ir.actions.server',string='Aktionen bei auslösen des Triggers',tracking=True)
|
||||
trigger_value_Bool = fields.Boolean('Feldwert für Trigger (Ja/Nein)',tracking=True)
|
||||
trigger_conditions = fields.Many2many('dss.triggerconditions',string='Bedingungen zum auslösen des Triggers',tracking=True)
|
||||
trigger_aktionen = fields.Many2many('dss.triggeractions',string='Aktionen bei auslösen des Triggers',tracking=True)
|
||||
trigger_aktionen_groups = fields.Many2many('dss.triggeractions.groups',string='Aktionsgruppen bei auslösen des Triggers',tracking=True)
|
||||
trigger_raw_condition = fields.Char('Datensatz Auswahl',tracking=True)
|
||||
|
||||
@api.model
|
||||
def _default_uuid(self):
|
||||
@@ -73,25 +380,7 @@ class dsstriggertypes(models.Model):
|
||||
value = getattr(value,part)
|
||||
return value
|
||||
|
||||
def _check_trigger(self):
|
||||
for record in self:
|
||||
_logger.info('Trigger Check TR_' + str(record)+' Begin')
|
||||
if record.trigger_active:
|
||||
_logger.info('Trigger Check TR_' + str(record) + ' Check Field F_'+str(record.trigger_field.name)+' of model M_'+str(record.trigger_table.model)+' Feld-Typ :'+str(record.trigger_field.ttype))
|
||||
if record.trigger_field.ttype in ['char','text','html']:
|
||||
val = self.env[record.trigger_table.model]._origin.read([record.trigger_field.name])
|
||||
elif record.trigger_field.ttype in ['selection']:
|
||||
val = self.env[record.trigger_table.model]._origin.read([record.trigger_field.name])[0]
|
||||
elif record.trigger_field.ttype in ['one2many']:
|
||||
val = self.env[record.trigger_table.model]._origin.read([record.trigger_field.name]).ids
|
||||
elif record.trigger_field.ttype in ['many2one']:
|
||||
# val = self.getfield(self.env[record.trigger_table.model],record.trigger_field.name+'.uuid')
|
||||
val = self.env[record.trigger_table.model]._fields[record.trigger_field.name].string
|
||||
else:
|
||||
val = False
|
||||
record.trigger_old_value = str(val)
|
||||
_logger.info('Trigger Check TR_' + str(record)+' oldValue '+str(record.trigger_old_value)+' newValue '+str(val))
|
||||
_logger.info('Trigger Check TR_' + str(record)+' Ende')
|
||||
def _check_trigger(self,DataRecord):
|
||||
return ""
|
||||
|
||||
class dsstriggeractions(models.Model):
|
||||
@@ -99,25 +388,60 @@ class dsstriggeractions(models.Model):
|
||||
_description = "DigitalSignage Trigger Aktionen"
|
||||
_inherit = ['mail.thread','mail.activity.mixin']
|
||||
_rec_name = "triggeractionname"
|
||||
_order = "triggeractionprio"
|
||||
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')
|
||||
BotText = fields.Html('Ausgabetext')
|
||||
triggeractionprio = fields.Integer('Priorität',tracking=True)
|
||||
Info_Subject = fields.Char('InfoÜberschrift')
|
||||
followaction = fields.Boolean('Folgeaktion vorhanden',tracking=True)
|
||||
|
||||
triggeractionname = fields.Char('Triggeraktionname',track_visibility='onchange',tracking=True)
|
||||
triggeractiontyp = fields.Selection([('EMAIL','EMail senden'),('ACTIV','Aufgabe erzeugen'),('DSEDIT','Datensatz ändern'),('TUYA','Tuya Aktion auslössen')],'Aktionstyp',tracking=True)
|
||||
has_trigger_action_conditions = fields.Boolean('Bedingungen vorhanden',help="Sind Bedingungen vor Ausführung vorhanden?",tracking=True)
|
||||
trigger_conditions = fields.Many2many('dss.triggerconditions',string='Bedingungen zum Ausführen der Aktion',tracking=True)
|
||||
|
||||
trigger_aktionen_active = fields.Boolean('Trigger Aktion aktiv',tracking=True)
|
||||
trigger_table = fields.Many2one('ir.model','Nutzbar in',help='Für welche Daten ist dieser Tigger gültig ?',tracking=True)
|
||||
triggeractionname = fields.Char('Triggeraktionname',tracking=True)
|
||||
triggeractiontyp = fields.Selection([('EMAIL','EMail an senden'),('NOTIZ','Notitz erstellen'),('MESSA','Message an Follower senden'),('CHANNEL','Message an Channel senden'),('ACTIV','Aufgabe erzeugen'),('MARKER','Marker eintragen'),('DSEDIT','Akt. Datensatz ändern'),('TUYA','Tuya Aktion auslössen'),('PRUEF','Wert prüfen')],'Aktionstyp',tracking=True)
|
||||
email_getfrom = fields.Selection([('FIX','Email fest hinterlegt'),('DATA','Email in Feld hinterlegt')],'Emailadresse von',tracking=True)
|
||||
email_fix_email_sender = fields.Many2one('res.partner','Absender',help='Email Sender Adresse der Aktion',tracking=True)
|
||||
email_fix_email = fields.Many2one('res.partner','Empfänger',help='Email Emüfänger Adresse für Benachrichtigung/Triggeraktion',tracking=True)
|
||||
email_data_table = fields.Many2one('ir.model','Nutzbar in',help='Für welche Daten ist diese Aktion gültig ?',tracking=True)
|
||||
email_data_field = fields.Many2one('ir.model.fields', help='Feldname in der Tabelle',tracking=True)
|
||||
email_fix_email = fields.Many2one('res.partner','Empfänger fix',help='Email Emüfänger Adresse für Benachrichtigung/Triggeraktion',tracking=True)
|
||||
email_data_table = fields.Many2one('ir.model','EmailDaten in',help='Für welche Daten ist diese Aktion gültig ?',tracking=True)
|
||||
email_data_field = fields.Many2one('ir.model.fields','Empfänger Feld', help='Feldname in der Tabelle',tracking=True)
|
||||
email_template = fields.Many2one('mail.template','Emailvorlage',tracking=True)
|
||||
|
||||
activity_user = fields.Many2one('res.users','Empfänger der Aufgabe',tracking=True)
|
||||
activity_type = fields.Many2one('mail.activity.type','Art der Aufgabe',tracking=True)
|
||||
activity_date_type = fields.Selection([('TOPLU','Von heute in x Tagen'),('TOFIX','An einem festen Datum'),('TOFIXDB','An einem festen Datum der Datenbank'),('TOPLUDB','An einem festen Datum der Datenbank + x Tage')],tracking=True)
|
||||
activity_date_type_add_days = fields.Integer('x Tage Aufschlag',tracking=True)
|
||||
activity_date_type_fix = fields.Date('Planungsdatum ',tracking=True)
|
||||
activity_text = fields.Text('Inhalt der Aufgabe',tracking=True)
|
||||
|
||||
field = fields.Char('Feldname',help='Feldname in o.g. Tebelle.',tracking=True)
|
||||
type_s = fields.Char('Feldwertoperator',tracking=True)
|
||||
value_s = fields.Char('Feldwert für Trigger',tracking=True)
|
||||
|
||||
action_table = fields.Many2one('ir.model','Nutzbar in',help='Für welche Daten ist dieser Tigger gültig ?',tracking=True)
|
||||
action_field = fields.Many2one('ir.model.fields', string="Auslöser Feld",help='Triggerfeldname in der Tabelle - Änderungen an dem Feld lösen den Trigger aus',tracking=True)
|
||||
action_test_id = fields.Char('TestID für Triggeraktion',tracking=True)
|
||||
action_value_type = fields.Selection([('FIXT','Fester Wert'),('BOOL','Boolischen Wert'),('DATE','Aktuelles Datum'),('DATX','Aktuelles Datum + X'),('CALC','Berechneter Wert'),('GROS','Aus anderer Quelle')],'Wertart des Eintrags',tracking=True)
|
||||
action_value_fix = fields.Char('Wert zum setzen',tracking=True)
|
||||
action_value_bool = fields.Boolean('Boolwert zum setzen',tracking=True)
|
||||
action_value_fix_plus = fields.Integer('Zuschlag für Berechnung',tracking=True)
|
||||
|
||||
action_value_from_same_table_bool = fields.Boolean('Wert aus akt. Datensatz ?',tracking=True)
|
||||
action_value_from_table = fields.Many2one('ir.model','Daten aus ',help='Aus welcher Datenmenge soll der Wert geholt werden ?',tracking=True)
|
||||
action_value_from_field = fields.Many2one('ir.model.fields','Feld aus ',help='Aus welchem Feld soll der Wert geholt werden ?',tracking=True,domain='[("model_id","=",action_value_from_table)]')
|
||||
|
||||
postChannel = fields.Char('Kanalnummer für Post :',tracking=True)
|
||||
|
||||
follow_action_id = fields.Many2one('dss.triggeractions', string="Nachfolgende Aktion",help='Aktion welche direkt im Anschluss unabhänig des Ablaufs ausgeführt wird',tracking=True)
|
||||
|
||||
insert_marker = fields.Many2one('dss.marker','Marker',help='Welcher Marker soll eingefügt werden ?',tracking=True)
|
||||
|
||||
@api.model
|
||||
def _default_uuid(self):
|
||||
return str(uuid.uuid4())
|
||||
@@ -129,14 +453,222 @@ class dsstriggeractions(models.Model):
|
||||
return str(self.env.user.name)
|
||||
|
||||
|
||||
def Doexecute(self,Dataset):
|
||||
runaction = False
|
||||
if self.has_trigger_action_conditions:
|
||||
runaction = True
|
||||
for SingleC in self.trigger_conditions:
|
||||
_logger.info("Trigger in run_triggers - Multible Conditions found "+str(self.trigger_conditions)+' -> '+str(SingleC)+' -> '+str(runaction))
|
||||
runaction = SingleC.trigger_CheckCond(Dataset,SingleC) and runaction
|
||||
else :
|
||||
runaction=True
|
||||
if runaction:
|
||||
if (self.triggeractiontyp == 'EMAIL'):
|
||||
# mail_pool = self.env['mail.mail']
|
||||
# values={}
|
||||
# values.update({'subject': 'Your subject'})
|
||||
# values.update({'email_to': 'To email'})
|
||||
# values.update({'body_html': 'body' })
|
||||
# values.update({'body': 'body' })
|
||||
# values.update({'res_id': 'obj.id' }) #[optional] here is the record id, where you want to post that email after sending
|
||||
# values.update({'model': ''Object Name }) #[optional] here is the object(like 'project.project') to whose record id you want to post that email after sending
|
||||
# msg_id = mail_pool.create(values)
|
||||
# # And then call send function of the mail.mail,
|
||||
# if msg_id:
|
||||
# mail_pool.send([msg_id])
|
||||
ccmailto = self.email_template.email_cc
|
||||
ccmailto_org = self.email_template.email_cc
|
||||
if not ccmailto:
|
||||
ccmailto=''
|
||||
mailto = ""
|
||||
if self.email_getfrom == "FIX":
|
||||
mailto = ""
|
||||
for partner in self.email_fix_email:
|
||||
mailto = mailto+';'+partner.email
|
||||
_logger.info('Trigger Aktion TRA_' + str(self)+' Sending Email - FIX Empfänger : '+str(self.email_getfrom)+' -> '+str(mailto))
|
||||
elif self.email_getfrom == "DATA":
|
||||
mailto = str(Dataset[self.email_data_field.name])
|
||||
_logger.info('Trigger Aktion TRA_' + str(self)+' Sending Email - DATA Empfänger : '+str(self.email_getfrom)+' -> '+str(mailto))
|
||||
else:
|
||||
mailto = "technik@logumedia.de"
|
||||
_logger.info('Trigger Aktion TRA_' + str(self)+' Sending Email - NONE Empfänger : '+str(self.email_getfrom)+' -> '+str(mailto))
|
||||
if 'contract_writer_mailcc' in self.env[str(self.trigger_table.model)]._fields:
|
||||
mailcc = Dataset["contract_writer_mailcc"]
|
||||
if mailcc:
|
||||
VsPartner = self.env['res.partner'].search([('id','=',Dataset.contract_writer.id)])
|
||||
ccmailto = ccmailto+';'+VsPartner.email
|
||||
_logger.info('Trigger Aktion TRA_' + str(self)+' Sending Email CC Writer - FIX Empfänger : '+str(VsPartner)+' -> '+str(ccmailto)+' + '+str(VsPartner.email))
|
||||
_logger.info('Trigger Aktion TRA_' + str(self)+' Sending Email - Template : '+str(self.email_template)+" Empfänger :"+str(mailto)+'/'+str(ccmailto)+' -> '+str(Dataset))
|
||||
self.email_template.email_to = mailto
|
||||
self.email_template.email_cc = ccmailto
|
||||
self.email_template.send_mail(Dataset.id,force_send=True)
|
||||
self.email_template.email_cc = ccmailto_org
|
||||
elif (self.triggeractiontyp == 'DSEDIT'):
|
||||
_logger.info('Trigger Aktion TRA_' + str(self)+' Setze Wert für DS_'+str(Dataset)+' FLD_'+str(self.action_field.name)+' - Typ : '+str(self.action_value_type)+' -> '+str(self.action_value_bool))
|
||||
EditFeld = Dataset[self.action_field.name]
|
||||
field = Dataset._fields[self.action_field.name]
|
||||
field_type = field.type
|
||||
if (self.action_value_type == 'BOOL'):
|
||||
_logger.info('Trigger Aktion TRA_' + str(self)+' Setze Wert - Typ : '+str(self.action_value_type)+' / '+str(EditFeld)+' -> '+str(self.action_value_bool))
|
||||
EditFeld = Dataset.write({self.action_field.name : self.action_value_bool})
|
||||
if (self.action_value_type == 'DATE'):
|
||||
_logger.info('Trigger Aktion TRA_' + str(self)+' Setze Wert - Typ : '+str(self.action_value_type)+' / '+str(EditFeld)+' -> '+str(date.today()))
|
||||
EditFeld = Dataset.write({self.action_field.name : date.today()})
|
||||
if (self.action_value_type == 'DATX'):
|
||||
_logger.info('Trigger Aktion TRA_' + str(self)+' Setze Wert - Typ : '+str(self.action_value_type)+' / '+str(EditFeld)+' -> '+str(date.today())+' + '+str(self.action_value_fix_plus)+' = '+str(date.today()+ relativedelta(days=self.action_value_fix_plus)))
|
||||
EditFeld = Dataset.write({self.action_field.name : date.today() + relativedelta(days=self.action_value_fix_plus)})
|
||||
if (self.action_value_type == 'FIXT'):
|
||||
_logger.info('Trigger Aktion TRA_' + str(self)+' Setze Wert - Typ : '+str(self.action_value_type)+' / '+str(EditFeld)+' (Type : '+str(field_type)+') -> '+str(self.action_value_fix))
|
||||
if (field_type == "many2one"):
|
||||
Dataset[self.action_field.name] = int(self.action_value_fix)
|
||||
elif (field_type == "date"):
|
||||
Dataset.write({self.action_field.name : self.action_value_fix})
|
||||
else:
|
||||
Dataset.write({self.action_field.name : self.action_value_fix})
|
||||
if (self.action_value_type == 'GROS'):
|
||||
if (self.action_value_from_same_table_bool):
|
||||
Dataset[self.action_field.name] = Dataset[self.action_value_from_field.name]
|
||||
|
||||
elif (self.triggeractiontyp == 'ACTIV'):
|
||||
deadline = datetime.now()
|
||||
if self.activity_date_type == 'TOPLU':
|
||||
deadline = datetime.now()
|
||||
deadline = deadline + relativedelta(days=self.activity_date_type_add_days)
|
||||
elif self.activity_date_type == 'TOFIX':
|
||||
deadline = self.activity_date_type_fix
|
||||
elif self.activity_date_type == 'TOFIXDB':
|
||||
deadline = Dataset[self.action_field.name]
|
||||
elif self.activity_date_type == 'TOPLUDB':
|
||||
deadline = Dataset[self.action_field.name]
|
||||
deadline = deadline + relativedelta(days=self.activity_date_type_add_days)
|
||||
|
||||
if not Dataset:
|
||||
_logger.info('Trigger Aktion TRA_' + str(self)+' Create Task - No Dataset - use Test '+str(self.trigger_table)+' '+str(self.action_test_id))
|
||||
ds = self.env[self.trigger_table.model].search([('id','=',self.action_test_id)])
|
||||
else:
|
||||
ds = Dataset
|
||||
if not self.trigger_table:
|
||||
_logger.info('Trigger Aktion TRA_' + str(self)+' Create Task - No Model '+str(ds)+' '+str(self.trigger_table))
|
||||
else:
|
||||
_logger.info('Trigger Aktion TRA_' + str(self)+' Create Task '+str(self.Info_Subject)+' ('+str(self.activity_user)+') - Model : '+str(self.trigger_table.id)+'/'+str(ds.id)+' '+str(deadline))
|
||||
self.env['mail.activity'].create({
|
||||
'display_name': self.Info_Subject,
|
||||
'summary': self.activity_text,
|
||||
'date_deadline': deadline,
|
||||
'user_id': self.activity_user.id,
|
||||
'res_id': ds.id,
|
||||
'res_model_id': self.trigger_table.id,
|
||||
'activity_type_id': self.activity_type.id
|
||||
})
|
||||
_logger.info('Trigger Aktion TRA_' + str(self)+' Create Task '+str(self.Info_Subject)+' ('+str(self.activity_user)+') - Model : '+str(self.trigger_table.id)+'/'+str(Dataset.id)+' '+str(deadline))
|
||||
elif (self.triggeractiontyp == 'MARKER'):
|
||||
_logger.info('Trigger Aktion TRA_' + str(self)+' Insert Marker '+str(Dataset.marker_list)+' ('+str(self.insert_marker)+') - Model : '+str(self.trigger_table.id)+'/'+str(Dataset.id))
|
||||
Dataset.marker_list = [(4,self.insert_marker.id)]
|
||||
elif (self.triggeractiontyp == 'CHANNEL'):
|
||||
if (not self.BotText): self.BotText=''
|
||||
body = self.BotText + '('+str(self.id)+')'
|
||||
Channel = self.env["mail.channel"].browse(int(self.postChannel))
|
||||
Channel.message_post(body=body,author_id=self.env.ref('base.partner_root').id,subject=self.Info_Subject,message_type="comment",subtype_xmlid="mail.mt_comment")
|
||||
_logger.info('Trigger Aktion TRA_' + str(self)+' Post channel '+str(self.postChannel)+' ('+str(Channel.name)+') - Text : '+str(body))
|
||||
elif (self.triggeractiontyp == 'NOTIZ'):
|
||||
if (not self.BotText): self.BotText=''
|
||||
body = self.BotText + '('+str(self.id)+')'
|
||||
# body = 'Für die Werbekampagne '+str(record.adname)+' im Vertrag '+str(record.contract.contract_auto_name)+' des Projektes '+str(record.project.projektname)+' wurde der Korekturabzug automatisch durch Zeitablauf bestätigt !'
|
||||
Dataset.message_post(body=body,author_id=self.env.ref('base.partner_root').id,subject=self.Info_Subject)
|
||||
# self.env['mail.message'].create({'message_type': 'comment','subtype_id': self.env.ref('mail.mt_comment').id,
|
||||
# 'model': 'mail.channel','res_id': self.env.ref('mail.channel_all_employees').id,'body': body,'subject': akt.Info_Subject,})
|
||||
_logger.info('Trigger Aktion TRA_' + str(self)+' Create notice '+str(self.Info_Subject)+' + Text : '+str(body))
|
||||
elif (self.triggeractiontyp == 'MESSA'):
|
||||
partner_ids = Dataset.message_follower_ids.partner_id.ids
|
||||
if (not self.BotText): self.BotText=''
|
||||
body = self.BotText + '('+str(self.id)+')'
|
||||
#while '{#' in str(body):
|
||||
_logger.info('Trigger Aktion TRA_' + str(self)+' Sende Message '+str(partner_ids)+' + Text : '+str(body))
|
||||
# Dataset.message_post(body=body,author_id=self.env.ref('base.partner_root').id,subject=self.Info_Subject,partner_ids=partner_ids)
|
||||
# self.env['mail.message'].create({'message_type': 'comment','subtype_id': self.env.ref('mail.mt_comment').id,
|
||||
# 'model': 'mail.channel','res_id': self.env.ref('mail.channel_all_employees').id,'body': body,'subject': akt.Info_Subject,})
|
||||
|
||||
return True
|
||||
|
||||
def exectriggeraction(self):
|
||||
_logger.info('Trigger Aktion Sofortauslösung TRA_' + str(self)+' '+str(self.trigger_table.model)+' Testid :'+str(self.action_test_id))
|
||||
Dataset = self.env[str(self.trigger_table.model)].search([('id','=',self.action_test_id)], limit=1)
|
||||
self.Doexecute(Dataset)
|
||||
|
||||
|
||||
class dsstriggermodel(models.Model):
|
||||
_name = "dss.triggermodel"
|
||||
_description = "DigitalSignage Trigger Model für Inherit"
|
||||
_rec_name = "trigger_uuid"
|
||||
trigger_uuid = fields.Char(default=lambda self: self._default_uuid(), required=True, readonly=True, copy=False, string='UUID')
|
||||
run_trigger = fields.Boolean('Trigger aktiv',tracking=True)
|
||||
triggergroup = fields.Many2one('dss.triggergroups',string='Triggergruppe',tracking=True,default=True)
|
||||
run_trigger = fields.Boolean('Trigger aktiv')
|
||||
run_uni_trigger = fields.Boolean('Allgemeine Trigger aktiv',default=True)
|
||||
run_uni_sub_trigger = fields.Boolean('Allgemeine Trigger (Sub) aktiv',default=True)
|
||||
triggergroup = fields.Many2one('dss.triggergroups',string='Triggergruppe')
|
||||
|
||||
@api.model
|
||||
def _default_uuid(self):
|
||||
return str(uuid.uuid4())
|
||||
|
||||
|
||||
@api.model
|
||||
def trigger_track_template(self, changes, Dataset):
|
||||
_logger.info("Trigger in track_template - "+str(Dataset)+" - Changes : "+str(changes))
|
||||
if Dataset.run_trigger:
|
||||
_logger.info("Trigger in track_template - "+str(Dataset.triggergroup)+" - Changes : "+str(changes))
|
||||
Dataset.triggergroup.run_triggers(changes, Dataset, Dataset.triggergroup.triggers)
|
||||
|
||||
if Dataset.run_uni_trigger:
|
||||
_logger.info("Trigger in track_template - UNIVERSAL - Suche Triggergruppen : id :"+str(Dataset._name))
|
||||
triggergroups = self.env['dss.triggergroups'].search([('trigger_table','=',Dataset._name),('trigger_allgemein','=',True)])
|
||||
_logger.info("Trigger in track_template - UNIVERSAL - Triggergruppen gefunden : "+str(triggergroups))
|
||||
for trig in triggergroups:
|
||||
trig.run_triggers(changes, Dataset, trig.triggers)
|
||||
|
||||
|
||||
class dsstriggeractiongroupss(models.Model):
|
||||
_name = "dss.triggeractions.groups"
|
||||
_description = "DigitalSignage Trigger Aktionen Gruppen"
|
||||
_inherit = ['mail.thread','mail.activity.mixin']
|
||||
_rec_name = "triggeractiongroupname"
|
||||
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')
|
||||
triggeractiongroupname = fields.Char('Triggeraktion Gruppenname',tracking=True)
|
||||
trigger_list = fields.Many2many('dss.triggeractions',string='Enthaltene Trigger',help='Welche Trigger sollen ausgeführt werden ?',tracking=True)
|
||||
action_test_id = fields.Char('TestID für Triggeraktion',tracking=True)
|
||||
trigger_table = fields.Many2one('ir.model','Nutzbar in',help='Für welche Daten ist dieser Tigger gültig ?',tracking=True)
|
||||
|
||||
@api.model
|
||||
def _default_uuid(self):
|
||||
return str(uuid.uuid4())
|
||||
|
||||
def _default_create_date(self):
|
||||
return str(date.today())
|
||||
|
||||
def _default_create_user(self):
|
||||
return str(self.env.user.name)
|
||||
|
||||
def Doexecute(self,Dataset,trig,isinintitable):
|
||||
for akt in self.trigger_list:
|
||||
_logger.info("Trigger in ExecTrigger_Group - Aktion "+str(akt))
|
||||
akt.Doexecute(Dataset)
|
||||
if not isinintitable:
|
||||
self.env['dss.triggermodel.execute'].create({'trigger':trig.id,'data_uuid':Dataset.uuid,'execdatetime':date.today(),"trigger_table":self.env['ir.model'].search([('model','=',str(akt.trigger_table.model))]).id,"trigger_action":akt.id})
|
||||
else:
|
||||
_logger.info("Trigger in Trigger_group_run - no Aktion in Trigger !")
|
||||
|
||||
|
||||
def DoexecuteGroup(self,Dataset):
|
||||
for akt in self.trigger_list:
|
||||
_logger.info("Trigger in ExecTrigger_Group - Aktion "+str(akt))
|
||||
akt.Doexecute(Dataset)
|
||||
|
||||
|
||||
def exectriggeraction_group(self):
|
||||
_logger.info('Trigger Aktion Sofortauslösung TRA_G' + str(self)+' '+str(self.trigger_table.model)+' Testid :'+str(self.action_test_id))
|
||||
Dataset = self.env[str(self.trigger_table.model)].search([('id','=',self.action_test_id)], limit=1)
|
||||
self.DoexecuteGroup(Dataset)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user