Blockly integration
This commit is contained in:
parent
4e32d9ba82
commit
d416043bf7
|
|
@ -30,8 +30,7 @@
|
|||
'views/dss_geraetetypen.xml',
|
||||
'views/dss_onlinestate.xml',
|
||||
'views/dss_texts.xml',
|
||||
'views/dss_systems.xml',
|
||||
'views/dss_screendesign.xml',
|
||||
'views/dss_systems.xml',
|
||||
'views/dss_eventdays.xml',
|
||||
'views/dss_trigger_actions.xml',
|
||||
'views/dss_trigger_action_groups.xml',
|
||||
|
|
@ -46,6 +45,9 @@
|
|||
'views/dss_web_contracts.xml',
|
||||
'views/dss_invoices.xml',
|
||||
'views/dss_m2mmail_views.xml',
|
||||
'views/dss_linkmail_views.xml',
|
||||
'views/dss_binaries_wizard.xml',
|
||||
'views/dss_binaries.xml',
|
||||
'views/mainsystem_view.xml',
|
||||
'views/dss_importinvoicelist.xml',
|
||||
'views/menu.xml',
|
||||
|
|
@ -53,6 +55,7 @@
|
|||
'views/google_map.xml',
|
||||
'views/dss_report_invoice.xml',
|
||||
'data/ir_model_data.xml',
|
||||
#'views/dss_screendesign.xml',
|
||||
],
|
||||
'demo': [],
|
||||
'installable': True,
|
||||
|
|
@ -70,6 +73,15 @@
|
|||
'DigitalSignage/static/src/js/dss_screenview_renderer.js',
|
||||
'DigitalSignage/static/src/js/dss_screenview_register.js',
|
||||
'DigitalSignage/static/src/js/dss_screenview_model.js',
|
||||
'DigitalSignage/static/src/xml/dss_trigger_condition_view_controller.xml',
|
||||
'DigitalSignage/static/src/xml/dss_trigger_condition_view_renderer.xml',
|
||||
'DigitalSignage/static/src/js/dss_trigger_condition_view_archparser.js',
|
||||
'DigitalSignage/static/src/js/dss_trigger_condition_view_helper.js',
|
||||
'DigitalSignage/static/src/js/dss_trigger_condition_view_blocks.js',
|
||||
'DigitalSignage/static/src/js/dss_trigger_condition_view_controller.js',
|
||||
'DigitalSignage/static/src/js/dss_trigger_condition_view_renderer.js',
|
||||
'DigitalSignage/static/src/js/dss_trigger_condition_view_register.js',
|
||||
'DigitalSignage/static/src/js/dss_trigger_condition_view_model.js',
|
||||
'DigitalSignage/static/src/scss/dss_nextcloudwidget.scss',
|
||||
'DigitalSignage/static/src/xml/dss_nextcloudwidget.xml',
|
||||
'DigitalSignage/static/src/js/dss_nextcloudwidget.js',
|
||||
|
|
@ -83,6 +95,7 @@
|
|||
'DigitalSignage/static/src/js/screenDesignerViewReload.js',
|
||||
'DigitalSignage/static/src/xml/form_button.xml',
|
||||
'DigitalSignage/static/src/xml/form_label.xml',
|
||||
'DigitalSignage/static/src/js/test.php',
|
||||
],
|
||||
'web.assets_common': [
|
||||
'DigitalSignage/static/images/**/*',
|
||||
|
|
|
|||
|
|
@ -28,3 +28,5 @@ from . import dss_importinvoicelist
|
|||
from . import dss_web_contracts
|
||||
from . import dss_m2mmail
|
||||
from . import dsslogger
|
||||
from . import dss_binaries
|
||||
from . import dss_linkmail
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
|
@ -24,8 +24,10 @@ from dateutil.relativedelta import relativedelta
|
|||
from pyffmpeg import FFmpeg
|
||||
from tuya_iot import TuyaOpenAPI, TUYA_LOGGER
|
||||
from tuya_connector import TuyaOpenAPI, TUYA_LOGGER
|
||||
from . import dss_contract
|
||||
import sys
|
||||
|
||||
|
||||
TUYA_LOGGER.setLevel(logging.DEBUG)
|
||||
_logger = logging.getLogger(__name__)
|
||||
|
||||
|
|
@ -189,11 +191,13 @@ class dssmediatypes(models.Model):
|
|||
mediatype = fields.Selection([('IMG_J','Bild'),('VID_4','MP4 Video'),('FIL_X','belieb. Datei')])
|
||||
description = fields.Text('Medien Beschreibung')
|
||||
cloudlink = fields.Char('Cloud Verzeichnis',help='Verzeichnis für diese Datei innerhalb des Vertrags-Ordners')
|
||||
archiv_cloudlink = fields.Char('Archivcloud Verzeichnis',help='Verzeichnis für diese Datei innerhalb des Vertrags-Ordners')
|
||||
filepartname = fields.Char('Part.Dateiname',help='Teil des Dateinamens. Wird ergaenzt durch KampagnenID und MedienID. Beispiel : PNAME_34_544.jpg')
|
||||
maxsize_kb = fields.Integer('Maximale Größe KB')
|
||||
maxsize_w = fields.Integer('Maximale Pixel W')
|
||||
maxsize_h = fields.Integer('Maximale Pixel H')
|
||||
standard_image = fields.Image()
|
||||
default_filename = fields.Char('Default Dateiname', help='Standard-Dateiname für diesen Mediatyp. Wird automatisch aus dem Dateinamen der hochgeladenen Datei abgerufen')
|
||||
|
||||
@api.model
|
||||
def _default_uuid(self):
|
||||
|
|
@ -205,7 +209,7 @@ class dssmediarelations(models.Model):
|
|||
_description = "DigitalSignage Kampagne-Medien-Zuordnung"
|
||||
_inherit = []
|
||||
_rec_name = "relname"
|
||||
# _inherit = ['mail.thread', 'mail.activity.mixin']
|
||||
_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)
|
||||
field = fields.Many2one('dss.advertisefields',string='Feld')
|
||||
|
|
@ -340,7 +344,20 @@ class dssscreendesign(models.Model):
|
|||
'context' : {'screenlayout': 1},
|
||||
'tag': 'dss_screenDesigner_js_action'
|
||||
}
|
||||
|
||||
|
||||
class NewBinaryWizard(models.TransientModel):
|
||||
_name = 'dss.binaries.wizard.new'
|
||||
_description = 'New Binary Wizard'
|
||||
|
||||
field_ids = fields.Many2one('dss.mediatypes' , string='Partners')
|
||||
|
||||
def pyopen_dss_contract_add_binary_form_view_from_wizzard(self):
|
||||
context = dict(self.env.context or {})
|
||||
default_contract_id = context.get('active_id', False)
|
||||
_logger.info('Open Add Binary Form '+str(context)+' - '+str(default_contract_id)+' / '+str(self.field_ids))
|
||||
contract= self.env['dss.contracts'].browse(default_contract_id)
|
||||
dss_contract.dsscontracts.pyopen_dss_contract_add_binary_form_view_from_wizzard(contract,self.field_ids)
|
||||
return context
|
||||
|
||||
class View(models.Model):
|
||||
"""
|
||||
|
|
@ -349,6 +366,7 @@ class View(models.Model):
|
|||
"""
|
||||
_inherit = 'ir.ui.view'
|
||||
type = fields.Selection(selection_add=[('screenview', "ScreenView")])
|
||||
type = fields.Selection(selection_add=[('trigger_condition_view', "Trigger_Condition_View")])
|
||||
|
||||
class IrActionsActWindowView(models.Model):
|
||||
"""
|
||||
|
|
@ -356,5 +374,6 @@ class IrActionsActWindowView(models.Model):
|
|||
a new view mode called 'grid'.
|
||||
"""
|
||||
_inherit = 'ir.actions.act_window.view'
|
||||
view_mode = fields.Selection(selection_add=[('screenview', "ScreenView")],
|
||||
ondelete={'screenview': 'cascade'})
|
||||
view_mode = fields.Selection(selection_add=[('screenview', "ScreenView")],ondelete={'screenview': 'cascade'})
|
||||
view_mode = fields.Selection(selection_add=[('trigger_condition_view', "Trigger_Condition_View")],ondelete={'trigger_condition_view': 'cascade'})
|
||||
|
||||
|
|
|
|||
|
|
@ -99,7 +99,7 @@ class dsscontractads(models.Model):
|
|||
# uuid = fields.Char('UUID', required=True, translate=True)
|
||||
adname = fields.Char('Kampagnenname', required=True, tracking=True)
|
||||
adtype = fields.Selection(
|
||||
[('MAIN', 'Ersteinrichtung'), ('KCHN', 'Änderung durch Kunde'), ('LCHN', 'Änderung durch Logumedia'),
|
||||
[('MAIN', 'Ersteinrichtung'), ('KCHN', 'Änderung durch Kunde'), ('LCHN', 'Änderung durch Logumedia'),('VERL', 'Verlängerung des Vertrages'),
|
||||
('SONS', 'Sonstige Änderung'),('PREA', 'Vorausplanung')], tracking=True)
|
||||
adpos = fields.Integer('Reihenfolge', default=lambda self: self._default_adpos(),
|
||||
tracking=True)
|
||||
|
|
|
|||
|
|
@ -114,6 +114,7 @@ class dsscontracts(models.Model):
|
|||
provisionspayedpercent = fields.Float('Ausgezahlte Provision % :',compute='_compute_provisionspayedpercent')
|
||||
grafiker = fields.Many2one('res.partner', domain="['&',('dssinternpartner','=',True),('dssinternpartner_grafik','=',True)]", tracking=True, string="abw. Grafiker",help="Grafiker nur wenn abweichend vom Projektgrafiker")
|
||||
real_grafiker = fields.Char('Grafiker tatsächlich', tracking=True)
|
||||
techniker = fields.Many2one('res.partner', domain="['&',('dssinternpartner','=',True),('dssinternpartner_technik','=',True)]", tracking=True, string="abw. Techniker (Einspielung)",help="der Techniker der die Einspielung vornehmen kann")
|
||||
|
||||
contract_remark = fields.Html('Vertragshinweise',tracking=True)
|
||||
|
||||
|
|
@ -171,7 +172,7 @@ class dsscontracts(models.Model):
|
|||
shortwerbe_feld_selected = fields.Char(related='werbe_feld_selected.feldname',string='Werbefelder',tracking=True)
|
||||
cutshortwerbe_feld_selected = fields.Char(string='gekürzte Felder',compute='_compute_cutshort')
|
||||
|
||||
werbe_feld_selected_btn_img = fields.Binary(related="werbe_feld_selected.btn_image_bin",string='Buttonbild',tracking=True)
|
||||
werbe_feld_selected_btn_img = fields.Binary(related="werbe_feld_selected.btn_image_bin",string='Buttonbild')
|
||||
werbe_feld_selected_btn_img_base64 = fields.Char(related="werbe_feld_selected.btn_image_bin_base64")
|
||||
werbe_feld_selected_btn_pos_x = fields.Integer(related="werbe_feld_selected.btn_pos_x", tracking=True)
|
||||
werbe_feld_selected_btn_pos_y = fields.Integer(related="werbe_feld_selected.btn_pos_y", tracking=True)
|
||||
|
|
@ -275,10 +276,28 @@ class dsscontracts(models.Model):
|
|||
info_partner_changes = fields.Boolean('Benachrichtigen bei Partneränderungen',tracking=True)
|
||||
info_partner = fields.Many2one('res.partner','Benachrichtigung an : ',tracking=True)
|
||||
|
||||
work_marker_1 = fields.Boolean('Markierung 1 aktiv',tracking=True)
|
||||
work_marker_1 = fields.Boolean('Markierung 1 aktiv (StartEmail versendet)',tracking=True)
|
||||
get_marker_1_color_false = fields.Char('Markierung 1 Farbe',compute='_get_marker_1_color_false')
|
||||
get_marker_1_color_true = fields.Char('Markierung 1 Farbe true',compute='_get_marker_1_color_false')
|
||||
get_marker_1_color = fields.Char('Markierung 1 Farbe get',compute='_get_marker_1_color_false')
|
||||
work_marker_2 = fields.Boolean('Markierung 2 aktiv',tracking=True)
|
||||
get_marker_2_color = fields.Char('Markierung 1 Farbe get',compute='_get_marker_2_color_false')
|
||||
work_marker_3 = fields.Boolean('Markierung 3 aktiv',tracking=True)
|
||||
work_marker_3_full = fields.Boolean('Markierung 3 vollmarker',tracking=True)
|
||||
work_marker_3_value = fields.Char('Markierung 3 Wert',tracking=True)
|
||||
get_marker_3_color = fields.Char('Markierung 1 Farbe get',compute='_get_marker_3_color_false')
|
||||
work_marker_3_1 = fields.Boolean('Teil-Markierung 3.1 aktiv',tracking=True)
|
||||
work_marker_3_1_value = fields.Char('Teil-Markierung 3.1 Wert',tracking=True)
|
||||
work_marker_3_2 = fields.Boolean('Teil-Markierung 3.2 aktiv',tracking=True)
|
||||
work_marker_3_2_value = fields.Char('Teil-Markierung 3.2 Wert',tracking=True)
|
||||
work_marker_4 = fields.Boolean('Markierung 4 aktiv',tracking=True)
|
||||
work_marker_4_full = fields.Boolean('Markierung 4 vollmarker',tracking=True)
|
||||
work_marker_4_value = fields.Char('Markierung 4 Wert',tracking=True)
|
||||
get_marker_4_color = fields.Char('Markierung 1 Farbe get',compute='_get_marker_4_color_false')
|
||||
work_marker_4_1 = fields.Boolean('Teil-Markierung 4.1 aktiv',tracking=True)
|
||||
work_marker_4_1_value = fields.Char('Teil-Markierung 4.1 Wert',tracking=True)
|
||||
work_marker_4_2 = fields.Boolean('Teil-Markierung 4.2 aktiv',tracking=True)
|
||||
work_marker_4_2_value = fields.Char('Teil-Markierung 4.2 Wert',tracking=True)
|
||||
|
||||
marker_list = fields.Many2many('dss.marker', string='vorhandene Marker', tracking=True)
|
||||
|
||||
|
|
@ -287,6 +306,8 @@ class dsscontracts(models.Model):
|
|||
# work_state_text = fields.Char(related='work_state.statusname')
|
||||
work_state_info = fields.Char('Zusatzinfo',tracking=True)
|
||||
|
||||
contract_binaries = fields.Many2many('dss.binaries', string='Vertragsdateien', tracking=True)
|
||||
|
||||
# todo_state = fields.Many2one('dss.todostate',default=_default_todo_state,tracking=True)
|
||||
# todo_state_color = fields.Char(related='todo_state.color')
|
||||
# todo_state_text = fields.Char(related='todo_state.statusname')
|
||||
|
|
@ -304,6 +325,58 @@ class dsscontracts(models.Model):
|
|||
ads_topics = fields.Many2many('dss.contracts_ads_topics', string='Themenliste', tracking=True)
|
||||
ads_topics_text = fields.Char('Themenliste gesamt',compute='_compute_themenliste')
|
||||
|
||||
@api.depends('work_marker_1')
|
||||
@api.onchange('work_marker_1')
|
||||
def _get_marker_1_color_false(self):
|
||||
_logger.info('Contract get Marker 1 Color false')
|
||||
for record in self:
|
||||
if not record.work_marker_1:
|
||||
record.get_marker_1_color = dss_settings.dssSettings._get_settingvalue(self,'marker_1_color_unused')
|
||||
else:
|
||||
record.get_marker_1_color = dss_settings.dssSettings._get_settingvalue(self,'marker_1_color_used')
|
||||
|
||||
@api.depends('work_marker_2')
|
||||
@api.onchange('work_marker_2')
|
||||
def _get_marker_2_color_false(self):
|
||||
_logger.info('Contract get Marker 2 Color false')
|
||||
for record in self:
|
||||
if not record.work_marker_2:
|
||||
record.get_marker_2_color = dss_settings.dssSettings._get_settingvalue(self,'marker_2_color_unused')
|
||||
else:
|
||||
record.get_marker_2_color = dss_settings.dssSettings._get_settingvalue(self,'marker_2_color_used')
|
||||
|
||||
@api.depends('work_marker_3')
|
||||
@api.onchange('work_marker_3')
|
||||
def _get_marker_3_color_false(self):
|
||||
_logger.info('Contract get Marker 3 Color false')
|
||||
for record in self:
|
||||
if dss_settings.dssSettings._get_settingvalue(self,'marker_3_color_value'):
|
||||
if record.work_marker_3:
|
||||
record.get_marker_3_color = record.work_marker_3_value
|
||||
else:
|
||||
record.get_marker_3_color = dss_settings.dssSettings._get_settingvalue(self,'marker_3_color_unused')
|
||||
else:
|
||||
if not record.work_marker_3:
|
||||
record.get_marker_3_color = dss_settings.dssSettings._get_settingvalue(self,'marker_3_color_unused')
|
||||
else:
|
||||
record.get_marker_3_color = dss_settings.dssSettings._get_settingvalue(self,'marker_3_color_used')
|
||||
|
||||
def _get_marker_4_color_false(self):
|
||||
_logger.info('Contract get Marker 4 Color false')
|
||||
for record in self:
|
||||
if dss_settings.dssSettings._get_settingvalue(self,'marker_4_color_value'):
|
||||
if record.work_marker_4:
|
||||
record.get_marker_4_color = record.work_marker_4_value
|
||||
else:
|
||||
record.get_marker_4_color = dss_settings.dssSettings._get_settingvalue(self,'marker_4_color_unused')
|
||||
else:
|
||||
if not record.work_marker_4:
|
||||
record.get_marker_4_color = dss_settings.dssSettings._get_settingvalue(self,'marker_4_color_unused')
|
||||
else:
|
||||
record.get_marker_4_color = dss_settings.dssSettings._get_settingvalue(self,'marker_4_color_used')
|
||||
|
||||
|
||||
|
||||
@api.depends('ads_topics')
|
||||
def _compute_themenliste(self):
|
||||
# _logger.info('Contract Themenliste Berechnung : C_' + str(self.id))
|
||||
|
|
@ -1042,6 +1115,22 @@ class dsscontracts(models.Model):
|
|||
return True
|
||||
|
||||
|
||||
def pyaction_create_cloud_structure_client(self):
|
||||
projectcloudpath = self.project.cloudlink
|
||||
if not projectcloudpath:
|
||||
newpath = str(dss_settings.dssSettings.getprojectpath(self,self.project))+str(dss_settings.dssSettings.getClientpath(self,self))
|
||||
else:
|
||||
if projectcloudpath[0] != '$':
|
||||
newpath = str(projectcloudpath)+str(dss_settings.dssSettings.getClientpath(self,self))
|
||||
else:
|
||||
newpath = str(dss_settings.dssSettings.getprojectpath(self,self.project))+str(dss_settings.dssSettings.getClientpath(self,self))
|
||||
action = (self.env["confirmation.wizard"].confirm_message(_("Sind Sie sicher den Cloudordner auf Standard zurück zu setzen und anzulegen ? : Aktuell : "+self.cloudlink+" danach : "+str(newpath)),title="Bitte bestätigen",method="createcontract",records=self,callback_params={"template":self.id})
|
||||
)
|
||||
if action:
|
||||
self.cloudlink=newpath
|
||||
self.create_cloud_structure_client(self)
|
||||
|
||||
|
||||
def createcontract(self,template):
|
||||
newid = template
|
||||
newClient = self.env['dss.contracts'].search([('id','=',newid)])
|
||||
|
|
@ -1251,12 +1340,73 @@ class dsscontracts(models.Model):
|
|||
#raise ValidationError((all_contract_text))
|
||||
return contracts
|
||||
|
||||
|
||||
def pyopen_dss_contract_add_media_form_view(self):
|
||||
_logger.info('Open Add Media Form')
|
||||
view = self.env.ref("DigitalSignage.dss_media_add_form")
|
||||
self._compute_prov()
|
||||
media = self.env['dss.mediarelations'].create({'contract':self.id,'project':self.project.id,'field_uuid':self.werbe_feld_selected[0].uuid,'ad':self.ads_last_ad.id})
|
||||
_logger.info('Open Add Media Form '+str(view)+' M_'+str(media))
|
||||
return {
|
||||
'type': 'ir.actions.act_window',
|
||||
'view_mode': 'form' ,
|
||||
'view_type': 'form' ,
|
||||
'view_id': view.id,
|
||||
'res_model': 'dss.mediarelations' ,
|
||||
'target': 'new' ,
|
||||
'display_name' : 'Neu Media einfügen',
|
||||
'views':[(view.id,'form')],
|
||||
'res_id':media.id,
|
||||
}
|
||||
|
||||
def pyopen_dss_contract_add_binary_form_view(self):
|
||||
_logger.info('Open Add Binary Form')
|
||||
view = self.env.ref("DigitalSignage.dss_binaries_view_form_wizard")
|
||||
_logger.info('Open Wizzard Binary Form '+str(view))
|
||||
return {
|
||||
'type': 'ir.actions.act_window',
|
||||
'view_mode': 'form' ,
|
||||
'view_type': 'form' ,
|
||||
'view_id': view.id,
|
||||
'res_model': 'dss.binaries.wizard.new' ,
|
||||
'target': 'new' ,
|
||||
'views':[(view.id,'form')],
|
||||
'context': {'default_binary_contract':self.id},
|
||||
}
|
||||
|
||||
def pyopen_dss_contract_add_binary_form_view_from_wizzard(self,media):
|
||||
_logger.info('Open Add Binary Form')
|
||||
view = self.env.ref("DigitalSignage.dss_binaries_view_form")
|
||||
self._compute_prov()
|
||||
binary = self.env['dss.binaries'].create({'binary_contract':self.id,'binary_name':self.contract_name,'binary_mediatype':media.id,'binary_id':str(media.filepartname+'_'+self.contract_auto_id),'binary_binary':media.standard_image})
|
||||
self.contract_binaries = [(4, binary.id)]
|
||||
_logger.info('Open Add Binary Form '+str(view)+' B_'+str(binary))
|
||||
return {
|
||||
'type': 'ir.actions.act_window',
|
||||
'view_mode': 'form' ,
|
||||
'view_type': 'form' ,
|
||||
'view_id': view.id,
|
||||
'res_model': 'dss.binaries' ,
|
||||
'target': 'new' ,
|
||||
'views':[(view.id,'form')],
|
||||
'res_id':binary.id,
|
||||
}
|
||||
|
||||
@api.model
|
||||
def newwizzard(self,id):
|
||||
project = self.env['dss.projects'].search([('id', '=', id)], limit=1)
|
||||
_logger.info("Create new Contract Wizard - Project : "+str(project))
|
||||
action = self.env["ir.actions.actions"]._for_xml_id("DigitalSignage.action_open_create_contract")
|
||||
action['context'] = {'default_project': project.id}
|
||||
|
||||
|
||||
return action
|
||||
|
||||
|
||||
def get_attachments_by_mediatype(self, mediatype):
|
||||
_logger.info('Get Attachments for Contract : C_'+str(self.id)+' - Mediatype : '+str(mediatype))
|
||||
attachment = self.env['dss.binaries'].search([('binary_contract', '=', self.id), ('binary_mediatype', '=', mediatype.id)])
|
||||
if not attachment:
|
||||
_logger.info('No Attachments found for Contract : C_'+str(self.id)+' - Mediatype : '+str(mediatype))
|
||||
return ""
|
||||
else:
|
||||
return attachment
|
||||
|
||||
|
|
|
|||
|
|
@ -37,4 +37,8 @@ class dssmarker(models.Model):
|
|||
|
||||
@api.model
|
||||
def _default_uuid(self):
|
||||
return str(uuid.uuid4())
|
||||
return str(uuid.uuid4())
|
||||
|
||||
@api.model
|
||||
def readmarker(self):
|
||||
return self.env['dss.marker'].browse()
|
||||
|
|
@ -115,6 +115,7 @@ class dssprojects(models.Model):
|
|||
standortpartner = fields.Many2one('res.partner',domain="['&',('dsspartner','=',True),('dsspartner_standort','=',True)]",tracking=True)
|
||||
vertriebspartner = fields.Many2many('res.partner',domain="['&',('dsspartner','=',True),('dsspartner_vertrieb','=',True)]",tracking=True)
|
||||
project_grafiker = fields.Many2one('res.partner',domain="['&',('dssinternpartner','=',True),('dssinternpartner_grafik','=',True)]",tracking=True)
|
||||
project_techniker = fields.Many2one('res.partner', domain="['&',('dssinternpartner','=',True),('dssinternpartner_technik','=',True)]", tracking=True, string="Techniker (Einspielung)",help="der Techniker der die Einspielung vornehmen kann")
|
||||
zeiten_on = fields.Datetime('veraltet',tracking=True)
|
||||
zeiten_off = fields.Datetime('veraltet',tracking=True)
|
||||
zeitenf_on = fields.Float('Einschaltzeit',tracking=True)
|
||||
|
|
@ -285,8 +286,8 @@ class dssprojects(models.Model):
|
|||
|
||||
@api.model
|
||||
def compute_getonlinestate2(self,project):
|
||||
projekte = self.env['dss.projects'].search([('grundsystem_showonlinestate','=',True)])
|
||||
for pro in projekte:
|
||||
projekte = self.env['dss.projects'].search([('grundsystem_showonlinestate','=',True)])
|
||||
for pro in projekte:
|
||||
self.compute_getonlinestate_single(pro)
|
||||
|
||||
@api.model
|
||||
|
|
@ -327,6 +328,7 @@ class dssprojects(models.Model):
|
|||
|
||||
def compute_getonlinestate_single(self,project):
|
||||
#proj = self.env['dss.projects'].search([('id',"=",project.id)])
|
||||
_logger.setLevel(1)
|
||||
proj = project
|
||||
colorOn = str(self.env['dss.settings'].search([], limit=1).systemonline_color)
|
||||
colorOff = str(self.env['dss.settings'].search([], limit=1).systemoffline_color)
|
||||
|
|
|
|||
|
|
@ -38,9 +38,32 @@ class dssSettings(models.Model):
|
|||
def_contract_cloudpath = fields.Char('Standard Kunden Pfad',tracking=True)
|
||||
def_contract_cloudpath_sample = fields.Char('Vertrags Beispiel :',tracking=True)
|
||||
def_contract_cloudpath_V2 = fields.Char('Standard Kunden Pfad V2',tracking=True)
|
||||
def_contract_cloudpath_sample_V2 = fields.Char('Projekt Beispiel V2 :',tracking=True)
|
||||
def_contract_cloudpath_sample_V2 = fields.Char('Projekt Beispiel V2 :',tracking=True)
|
||||
def_ad_cloudpath = fields.Char('Standard Kampagnen Pfad',tracking=True)
|
||||
def_ad_cloudpath_sample = fields.Char('Kampagnen Beispiel :',tracking=True)
|
||||
marker_1_color_used = fields.Char('Marker Farbe (benutzt)',default='#00FF00',tracking=True)
|
||||
marker_1_color_unused = fields.Char('Marker Farbe (unbenutzt)',default='#FF0000',tracking=True)
|
||||
marker_2_color_used = fields.Char('Marker 2 Farbe (benutzt)',default='#00FF00',tracking=True)
|
||||
marker_2_color_unused = fields.Char('Marker 2 Farbe (unbenutzt)',default='#FF0000',tracking=True)
|
||||
marker_3_color_used = fields.Char('Marker 3 Farbe (benutzt)',default='#00FF00',tracking=True)
|
||||
marker_3_color_unused = fields.Char('Marker 3 Farbe (unbenutzt)',default='#FF0000',tracking=True)
|
||||
marker_3_color_value = fields.Boolean('Marker 3 Farbe aus wert ?',tracking=True)
|
||||
marker_3_1_color_used = fields.Char('Marker 3.1 Farbe (benutzt)',default='#00FF00',tracking=True)
|
||||
marker_3_1_color_unused = fields.Char('Marker 3.1 Farbe (unbenutzt)',default='#FF0000',tracking=True)
|
||||
marker_3_1_color_value = fields.Boolean('Marker 3.1 Farbe aus wert ?',tracking=True)
|
||||
marker_3_2_color_used = fields.Char('Marker 3.2 Farbe (benutzt)',default='#00FF00',tracking=True)
|
||||
marker_3_2_color_unused = fields.Char('Marker 3.2 Farbe (unbenutzt)',default='#FF0000',tracking=True)
|
||||
marker_3_2_color_value = fields.Boolean('Marker 3.2 Farbe aus wert ?',tracking=True)
|
||||
marker_4_color_used = fields.Char('Marker 4 Farbe (benutzt)',default='#00FF00',tracking=True)
|
||||
marker_4_color_unused = fields.Char ('Marker 4 Farbe (unbenutzt)',default='#FF0000',tracking=True)
|
||||
marker_4_color_value = fields.Boolean('Marker 4 Farbe aus wert ?',tracking=True)
|
||||
marker_4_1_color_used = fields.Char('Marker 4.1 Farbe (benutzt)',default='#00FF00',tracking=True)
|
||||
marker_4_1_color_unused = fields.Char('Marker 4.1 Farbe (unbenutzt)',default='#FF0000',tracking=True)
|
||||
marker_4_1_color_value = fields.Boolean('Marker 4.1 Farbe aus wert ?',tracking=True)
|
||||
marker_4_2_color_used = fields.Char('Marker 4.2 Farbe (benutzt)',default='#00FF00',tracking=True)
|
||||
marker_4_2_color_unused = fields.Char('Marker 4.2 Farbe (unbenutzt)',default='#FF0000',tracking=True)
|
||||
marker_4_2_color_value = fields.Boolean('Marker 4.2 Farbe aus wert ?',tracking=True)
|
||||
|
||||
tuya_access_id = fields.Char('Tuya Access ID',tracking=True)
|
||||
tuya_access_key = fields.Char('Tuya Access KEY',tracking=True)
|
||||
tuya_endpoint = fields.Char('Tuya Access Endpoint',tracking=True)
|
||||
|
|
@ -77,15 +100,16 @@ class dssSettings(models.Model):
|
|||
if parts[0] == '$':
|
||||
fels = parts[1:]
|
||||
if fels == 'shortwerbe_feld_selected':
|
||||
if not record.werbe_feld_selected.Field_notinCloud:
|
||||
parts = ''
|
||||
else:
|
||||
parts = record._origin.read([fels])
|
||||
part= ''
|
||||
for wf in record.werbe_feld_selected:
|
||||
if wf.Field_notinCloud: # AChtung NOtinCloud = True ist Name anzeigen
|
||||
part += wf.feldname + '_'
|
||||
part = part if parts else ''
|
||||
else:
|
||||
parts = record._origin.read([fels])
|
||||
_logger.info("Get Path - Anfrage-Teil gefunden : " + str(parts))
|
||||
part = record._origin.read([fels])[0][fels]
|
||||
_logger.info("Get Path - Anfrage-Teil gefunden : " + str(part))
|
||||
if parts:
|
||||
value = str(parts[0][fels])
|
||||
value = str(part)
|
||||
else:
|
||||
value = ''
|
||||
_logger.info("Get Path - Anfrage-Teil gefunden - setze : " + str(value))
|
||||
|
|
@ -188,6 +212,22 @@ class dssSettings(models.Model):
|
|||
_logger.info("Get Client Path - kein Client gefunden")
|
||||
return ''
|
||||
|
||||
@api.model
|
||||
def readFields(self,tablename):
|
||||
_logger.info("Project read Fields : "+str(tablename))
|
||||
model = self.env['ir.model'].search([('model', '=', tablename)])
|
||||
fields = self.env['ir.model.fields'].search([('model_id', '=', model.id)],order = 'field_description')
|
||||
_logger.info("Project read Fields - Suche nach Feldern abgeschlossen - "+str(model)+" - "+str(fields))
|
||||
records = []
|
||||
for field in fields:
|
||||
fieldrecord=[]
|
||||
fieldrecord.append(field.id)
|
||||
fieldrecord.append(field.field_description)
|
||||
fieldrecord.append(field.name)
|
||||
fieldrecord.append(str(field.field_description+' ('+field.name+')'))
|
||||
records.append(fieldrecord)
|
||||
return records
|
||||
|
||||
|
||||
class dssSettingsSave(models.Model):
|
||||
|
||||
|
|
|
|||
|
|
@ -1,6 +1,8 @@
|
|||
import uuid
|
||||
import logging
|
||||
import datetime
|
||||
from .dsslogger import OdooCustomLogger
|
||||
|
||||
|
||||
from odoo import api, fields, models, _
|
||||
from odoo import tools
|
||||
|
|
@ -8,10 +10,35 @@ from datetime import datetime
|
|||
from datetime import date
|
||||
from odoo.exceptions import ValidationError
|
||||
from dateutil.relativedelta import relativedelta
|
||||
from tuya_iot import TuyaOpenAPI, TUYA_LOGGER
|
||||
from tuya_connector import TuyaOpenAPI, TUYA_LOGGER
|
||||
import sys
|
||||
|
||||
TUYA_LOGGER.setLevel(logging.DEBUG)
|
||||
|
||||
logging.setLoggerClass(OdooCustomLogger)
|
||||
_logger = logging.getLogger(__name__)
|
||||
|
||||
##_logger = logging.getLogger(__name__)
|
||||
|
||||
|
||||
class trigger(models.Model):
|
||||
dataset = None
|
||||
|
||||
@api.model
|
||||
def GetValue(self,Table,FieldName):
|
||||
sampletable = self.env['ir.config_parameter'].sudo().get_param('dss.global.trigger_sample_table')
|
||||
sampleid = self.env['ir.config_parameter'].sudo().get_param('dss.global.trigger_sample_id')
|
||||
Dataset = self.env[sampletable].search([('id','=',sampleid)])
|
||||
_logger.info("GetValue called for "+str(Table)+" Fieldname "+str(FieldName)+' -> '+str(self)+' / '+str(Dataset))
|
||||
Field=self.env['ir.model.fields'].search([('id','=',FieldName)])
|
||||
_logger.info("GetValue called for "+str(Table)+" Fieldname "+str(Field))
|
||||
_logger.info("GetValue called for "+str(Table)+" Fieldname "+str(Field)+' -> '+str(Dataset[Field.name]))
|
||||
return Dataset[Field.name]
|
||||
|
||||
|
||||
|
||||
|
||||
class dsstriggerconditions(models.Model):
|
||||
_name = "dss.triggerconditions"
|
||||
_description = "DigitalSignage Trigger Bedingungen"
|
||||
|
|
@ -34,6 +61,8 @@ class dsstriggerconditions(models.Model):
|
|||
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())
|
||||
|
|
@ -105,6 +134,19 @@ class dsstriggerconditions(models.Model):
|
|||
dotrigger = Compare
|
||||
return dotrigger
|
||||
|
||||
@api.model
|
||||
def getconditionbyid(self,conditionid):
|
||||
_logger.info("Trigger get condition by conditionid !"+str(conditionid))
|
||||
element = self.env['dss.triggerconditions'].search([('id','=',conditionid)])
|
||||
_logger.info("Trigger get condition by conditionid !"+str(conditionid)+' - '+str(element))
|
||||
blocksyntax = {}
|
||||
if element:
|
||||
blocksyntax = element.read()[0] if element else {}
|
||||
else:
|
||||
blocksyntax = {}
|
||||
return blocksyntax
|
||||
return element
|
||||
|
||||
|
||||
class dsstriggergroups(models.Model):
|
||||
_name = "dss.triggergroups"
|
||||
|
|
@ -352,7 +394,7 @@ class dsstriggertypes(models.Model):
|
|||
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', 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_operator = fields.Selection([('NGLEICH','Feld gleich dem Wert'),('GGLEICH','Feld größer/gleich dem Wert'),('KGLEICH','Feld kleiner/gleich dem Wert'),('GROESSER','Feld grösser dem Wert'),('KLEINER','Feld kleiner 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)
|
||||
|
|
@ -364,6 +406,11 @@ class dsstriggertypes(models.Model):
|
|||
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)
|
||||
trigger_is_block_config = fields.Boolean('Blockly Trigger Design',tracking=True)
|
||||
trigger_block_config = fields.Char('Blockly Design',tracking=True)
|
||||
trigger_block_raw_config = fields.Char('Blockly command Design',tracking=True)
|
||||
trigger_block_command_uptodate = fields.Boolean('Blockly command aktuell',tracking=True)
|
||||
trigger_block_command = fields.Char('Blockly command',tracking=True)
|
||||
|
||||
@api.model
|
||||
def _default_uuid(self):
|
||||
|
|
@ -383,6 +430,104 @@ class dsstriggertypes(models.Model):
|
|||
|
||||
def _check_trigger(self,DataRecord):
|
||||
return ""
|
||||
|
||||
@api.model
|
||||
def gettriggerbyname(self,triggername):
|
||||
_logger.info("Trigger get Triggerbyname !"+str(triggername))
|
||||
return self.env['dss.triggertypes'].search([('triggername','=',triggername)])
|
||||
|
||||
@api.model
|
||||
def gettriggerblocksyntaxbyname(self,triggername):
|
||||
_logger.info("Trigger get Trigger Block Syntax by Name !"+str(triggername))
|
||||
foundtrigger = self.env['dss.triggertypes'].search([('triggername','=',triggername)])
|
||||
blocksyntax = {}
|
||||
if foundtrigger:
|
||||
blocksyntax = foundtrigger.read()[0] if foundtrigger else {}
|
||||
else:
|
||||
blocksyntax = {}
|
||||
return blocksyntax
|
||||
|
||||
@api.model
|
||||
def gettablebyid(self,tableid):
|
||||
_logger.info("Trigger get tablename by Tableid !"+str(tableid))
|
||||
return str(self.env['ir.model'].search([('id','=',tableid)]).model)
|
||||
|
||||
@api.model
|
||||
def getfieldbyid(self,fieldid):
|
||||
_logger.info("Trigger get fieldname-mix by fieldid !"+str(fieldid))
|
||||
feld = self.env['ir.model.fields'].search([('id','=',fieldid)])
|
||||
return str(str(feld.field_description+' ('+feld.name+')'))
|
||||
|
||||
@api.model
|
||||
def getbyid(self,modelid,searchfield,searchid):
|
||||
_logger.info("Trigger get modelid by searchid !"+str(searchid))
|
||||
foundtrigger = self.env[modelid].search([(searchfield,'=',searchid)])
|
||||
blocksyntax = {}
|
||||
if foundtrigger:
|
||||
blocksyntax = foundtrigger.read()[0] if foundtrigger else {}
|
||||
else:
|
||||
blocksyntax = {}
|
||||
return blocksyntax
|
||||
|
||||
@api.model
|
||||
def getall(self,modelid):
|
||||
_logger.info("Trigger get all !"+str(modelid))
|
||||
foundtrigger = self.env[modelid].search([])
|
||||
_logger.info("Trigger get all !"+str(foundtrigger))
|
||||
blocksyntax = []
|
||||
if foundtrigger:
|
||||
blocksyntax = [record.read()[0] for record in foundtrigger] if foundtrigger else []
|
||||
else:
|
||||
blocksyntax = []
|
||||
_logger.info("Trigger get all !"+str(blocksyntax))
|
||||
return blocksyntax
|
||||
|
||||
|
||||
def execute_trigger(self):
|
||||
if self.trigger_block_raw_config:
|
||||
a=1
|
||||
else:
|
||||
a=2
|
||||
|
||||
def handleNewClick(self):
|
||||
return True
|
||||
|
||||
def handleSaveClick(self):
|
||||
return True
|
||||
|
||||
def handleGenerateClick(self):
|
||||
return True
|
||||
|
||||
def handleRedrawClick(self):
|
||||
return True
|
||||
|
||||
@api.model
|
||||
def NewBlockTrigger(self,triggername,triggeraktiv):
|
||||
_logger.info("Trigger New Block Trigger !"+str(triggername))
|
||||
newtrigger = self.env['dss.triggertypes'].create({'triggername':triggername,'trigger_is_block_config':True,'trigger_active':triggeraktiv})
|
||||
return newtrigger
|
||||
|
||||
@api.model
|
||||
def UpdateBlockTrigger(self,triggername,blockcode,triggeraktiv ):
|
||||
_logger.info("Trigger Update Block Trigger !"+str(triggername))
|
||||
foundtrigger = self.env['dss.triggertypes'].search([('triggername','=',triggername)])
|
||||
if foundtrigger:
|
||||
foundtrigger.write({'trigger_block_raw_config':blockcode,'trigger_active':triggeraktiv,'trigger_block_command_uptodate':False})
|
||||
return foundtrigger
|
||||
|
||||
@api.model
|
||||
def execTriggerTest(self,sourcecode,sampletable,sampleid):
|
||||
_logger.info("Trigger Exec Trigger Test !"+str(sourcecode)+' / '+str(sampletable)+' / '+str(sampleid))
|
||||
try:
|
||||
Dataset = self.env[sampletable].search([('id','=',sampleid)])
|
||||
_logger.info("Trigger Exec Trigger Test Dataset !"+str(Dataset))
|
||||
self.env['ir.config_parameter'].sudo().set_param('dss.global.trigger_sample_table', sampletable)
|
||||
self.env['ir.config_parameter'].sudo().set_param('dss.global.trigger_sample_id', sampleid)
|
||||
exec(sourcecode)
|
||||
return "OK"
|
||||
except Exception as e:
|
||||
_logger.error("Trigger Exec Trigger Test Error !"+str(e))
|
||||
return "Error :"+str(e)
|
||||
|
||||
class dsstriggeractions(models.Model):
|
||||
_name = "dss.triggeractions"
|
||||
|
|
@ -414,6 +559,8 @@ class dsstriggeractions(models.Model):
|
|||
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)
|
||||
email_has_attachments = fields.Boolean('Email mit Anhang',tracking=True,help='Soll die Email mit Anhang versendet werden ?')
|
||||
email_contract_attachment_types = fields.Many2many('dss.mediatypes',tracking=True,help='Welche Dateitypen aus dem Vertrag sollen als Anhang versendet werden ?')
|
||||
|
||||
activity_user = fields.Many2one('res.users','Empfänger der Aufgabe',tracking=True)
|
||||
activity_type = fields.Many2one('mail.activity.type','Art der Aufgabe',tracking=True)
|
||||
|
|
@ -503,6 +650,23 @@ class dsstriggeractions(models.Model):
|
|||
_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
|
||||
if self.email_has_attachments:
|
||||
_logger.info('Trigger Aktion TRA_' + str(self)+' Sending Email - Anhang : '+str(self.email_contract_attachment_types))
|
||||
attachments = []
|
||||
for mediatype in self.email_contract_attachment_types:
|
||||
_logger.info('Trigger Aktion TRA_' + str(self)+' Sending Email - Anhang : '+str(mediatype))
|
||||
single_attachment = Dataset.get_attachments_by_mediatype(mediatype)
|
||||
if single_attachment:
|
||||
_logger.info('Trigger Aktion TRA_' + str(self)+' Sending Email - Anhang erzeugen : '+str(single_attachment))
|
||||
if single_attachment.binary_filename:
|
||||
fname = single_attachment.binary_filename
|
||||
else:
|
||||
fname = single_attachment.binary_name
|
||||
att_id = self.env['ir.attachment'].create({'name': fname,
|
||||
'datas': single_attachment.binary_binary})
|
||||
_logger.info('Trigger Aktion TRA_' + str(self)+' Sending Email - Anhang wurde erzeugen : '+str(att_id))
|
||||
self.email_template.attachment_ids = [(4, att_id.id)]
|
||||
_logger.info('Trigger Aktion TRA_' + str(self)+' Sending Email - Anhang neu : '+str(self.email_template.attachment_ids))
|
||||
if not self.email_send_confirm:
|
||||
self.email_template.send_mail(Dataset.id,force_send=True)
|
||||
else:
|
||||
|
|
@ -511,6 +675,7 @@ class dsstriggeractions(models.Model):
|
|||
title="Bestätigen",method="Email senden ",callback_params={"Email": mailto}))
|
||||
if action:
|
||||
self.email_template.send_mail(Dataset.id,force_send=True)
|
||||
self.email_template.attachment_ids = [(5,0,0)] # Clear attachments after sending
|
||||
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))
|
||||
|
|
|
|||
|
|
@ -49,4 +49,7 @@ DigitalSignage_dss_onlinestate,access.dss.onlinestate,model_dss_onlinestate,base
|
|||
DigitalSignage_dss_m2mmail,access.dss.m2mmail,model_dss_m2mmail,base.group_user,1,1,1,1
|
||||
digitalsignage_dss_display_templates_group_user,access.dss.display.templates,model_dss_display_templates,base.group_user,1,1,1,1
|
||||
digitalsignage_dss_triggeractions_groups_group_user,access.dss.triggeractions.groups,model_dss_triggeractions_groups,base.group_user,1,1,1,1
|
||||
digitalsignage_dss_screendesign_group_user,access.dss.screendesign,model_dss_screendesign,base.group_user,1,1,1,1
|
||||
digitalsignage_dss_screendesign_group_user,access.dss.screendesign,model_dss_screendesign,base.group_user,1,1,1,1
|
||||
digitalsignage_dss_binaries_group_user,access.dss.binaries,model_dss_binaries,base.group_user,1,1,1,1
|
||||
digitalsignage_dss_binaries_wizard_new_group_user,access.dss.binaries.wizard.new,model_dss_binaries_wizard_new,base.group_user,1,1,1,1
|
||||
digitalsignage_dss_linkmail_group_user,access.dss.linkmail,model_dss_linkmail,base.group_user,1,1,1,1
|
||||
|
|
|
@ -35,9 +35,6 @@ export class ScreenViewModel {
|
|||
//The keeplast protect against concurrency call
|
||||
console.log(this);
|
||||
await this.keepLast.add(this.loaddata(this)); //this.loaddata(records));
|
||||
console.log(this);
|
||||
var element=document.querySelector('.o_dark_panel')
|
||||
element.remove();;
|
||||
}
|
||||
/**
|
||||
* @protected
|
||||
|
|
|
|||
|
|
@ -129,3 +129,221 @@
|
|||
.hidden {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.trigger_condition_view_main {
|
||||
background-color:#FFFFFF;
|
||||
padding:0px;
|
||||
float:left;
|
||||
}
|
||||
|
||||
.trigger_condition_view_Header_1 {
|
||||
background-color: #FFFFFF;
|
||||
color: #202020;
|
||||
font-weight: bold;
|
||||
padding: 10px;
|
||||
margin:2px;
|
||||
text-align: center;
|
||||
border-color: #fff;
|
||||
border-width: 0px;
|
||||
border-style: solid;
|
||||
//height:100px;
|
||||
}
|
||||
|
||||
.trigger_condition_view_main_1 {
|
||||
background-color: #FFFFFF;
|
||||
color: #202020;
|
||||
font-weight: bold;
|
||||
padding: 10px;
|
||||
margin:2px;
|
||||
text-align: center;
|
||||
border-color: #fff;
|
||||
border-width: 0px;
|
||||
border-style: solid;
|
||||
//height:100px;
|
||||
}
|
||||
|
||||
.trigger_condition_view_main_1_blockly {
|
||||
background-color: #FFFFFF;
|
||||
color: #202020;
|
||||
font-weight: bold;
|
||||
margin:2px;
|
||||
text-align: center;
|
||||
border-color: #fff;
|
||||
border-width: 0px;
|
||||
border-style: solid;
|
||||
overflow-y: visible;
|
||||
height:1000px;
|
||||
}
|
||||
|
||||
.trigger_condition_view_main_1_blockly_code {
|
||||
background-color: #AFAFAF;
|
||||
color: #202020;
|
||||
font-weight: bold;
|
||||
margin:2px;
|
||||
text-align: center;
|
||||
border-color: #fff;
|
||||
border-width: 0px;
|
||||
border-style: solid;
|
||||
overflow-y: visible;
|
||||
height:750px;
|
||||
}
|
||||
|
||||
.trigger_condition_view_main_1_blockly_code_Result {
|
||||
background-color: #AFAFAF;
|
||||
color: #202020;
|
||||
font-weight: bold;
|
||||
margin:2px;
|
||||
text-align: center;
|
||||
border-color: #fff;
|
||||
border-width: 0px;
|
||||
border-style: solid;
|
||||
overflow-y: visible;
|
||||
height:150px;
|
||||
margin-top: 5px;
|
||||
margin-bottom: 5px;
|
||||
}
|
||||
|
||||
.trigger_condition_view_main_1_blockly_code_cmd {
|
||||
background-color: #AFAFAF;
|
||||
color: #202020;
|
||||
font-weight: bold;
|
||||
margin:2px;
|
||||
text-align: center;
|
||||
border-color: #fff;
|
||||
border-width: 0px;
|
||||
border-style: solid;
|
||||
overflow-y: visible;
|
||||
height:90px;
|
||||
}
|
||||
|
||||
.trigger_condition_view_content {
|
||||
background-color: #FFFFFF;
|
||||
color: #202020;
|
||||
}
|
||||
|
||||
.trigger_condition_item {
|
||||
background-color: #A0A0D0;
|
||||
color: #000;
|
||||
font-weight: normal;
|
||||
padding: 10px;
|
||||
margin:2px;
|
||||
text-align: left;
|
||||
border-color: #fff;
|
||||
border-width: 1px;
|
||||
border-style: solid;
|
||||
height: 100px;
|
||||
width: 100px;
|
||||
}
|
||||
.section-header {
|
||||
background-color: #FFFFFF;
|
||||
color: #202020;
|
||||
font-weight: bold;
|
||||
padding: 10px;
|
||||
margin:2px;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.section-text {
|
||||
background-color: #FFFFFF;
|
||||
color: #202020;
|
||||
font-weight: normal;
|
||||
padding: 0px;
|
||||
margin:0px;
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
.codetextarea {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
font-family: monospace;
|
||||
font-size: 10px;
|
||||
line-height: 1.4;
|
||||
color: #333;
|
||||
background-color: #f9f9f9;
|
||||
border: 1px solid #ccc;
|
||||
border-radius: 4px;
|
||||
padding: 10px;
|
||||
box-sizing: border-box;
|
||||
resize: vertical;
|
||||
white-space: nowrap;
|
||||
overflow: auto;
|
||||
}
|
||||
|
||||
.codeResultArea {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
font-family: monospace;
|
||||
font-size: 10px;
|
||||
line-height: 1.4;
|
||||
color: #333;
|
||||
background-color: #f9f9f9;
|
||||
border: 1px solid #ccc;
|
||||
border-radius: 4px;
|
||||
padding: 5px;
|
||||
margin-top: 5px;
|
||||
margin-bottom: 5px;
|
||||
box-sizing: border-box;
|
||||
resize: vertical;
|
||||
white-space: nowrap;
|
||||
overflow: auto;
|
||||
}
|
||||
|
||||
.myBlocklyRow_1 {
|
||||
background-color: #BFBFBF;
|
||||
color: #000000;
|
||||
}
|
||||
|
||||
.myBlocklyRow_2 {
|
||||
background-color: #BFBF3F;
|
||||
color: #000000;
|
||||
}
|
||||
|
||||
.myBlocklyRow_3 {
|
||||
background-color: #3FBFBF;
|
||||
color: #000000;
|
||||
}
|
||||
|
||||
.myBlocklyRow_4 {
|
||||
background-color: #3F3FBF;
|
||||
color: #000000;
|
||||
}
|
||||
|
||||
.myBlocklyRow_5 {
|
||||
background-color: #CF7FBF;
|
||||
color: #000000;
|
||||
}
|
||||
|
||||
.trigger_condition_view_Header_2 {
|
||||
background-color: #FFFFFF;
|
||||
color: #202020;
|
||||
font-weight: bold;
|
||||
padding: 10px;
|
||||
margin:2px;
|
||||
text-align: center;
|
||||
border-color: #fff;
|
||||
border-width: 0px;
|
||||
border-style: solid;
|
||||
//height:100px;
|
||||
text-align: right;
|
||||
}
|
||||
|
||||
.trigger_condition_view_save_button {
|
||||
margin-right: 10px;
|
||||
}
|
||||
|
||||
.trigger_condition_view_gen_button {
|
||||
margin-right: 10px;
|
||||
}
|
||||
|
||||
.trigger_condition_vieW_draw_button {
|
||||
margin-right: 10px;
|
||||
}
|
||||
|
||||
.trigger_condition_view_test_button {
|
||||
margin-right: 10px;
|
||||
}
|
||||
|
||||
.trigger_condition_view_copy_button {
|
||||
margin-right: 10px;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@
|
|||
|
||||
<t t-name="dss.screenview" owl="1">
|
||||
<Layout display="props.display" className="'h-100 overflow-auto'">
|
||||
<t t-component="props.Renderer" records="model.records" propsYouWant="'Hello world'"/>
|
||||
<t t-component="props.Renderer" records="model.records" propsYouWant="Selection"/>
|
||||
</Layout>
|
||||
<div class="" t-attf-style="height:100px;width:100%">
|
||||
<p>Scrollraum</p>
|
||||
|
|
|
|||
BIN
temp/temp.temp
BIN
temp/temp.temp
Binary file not shown.
|
Before Width: | Height: | Size: 0 B After Width: | Height: | Size: 298 KiB |
|
|
@ -218,9 +218,9 @@
|
|||
</page>
|
||||
<page name="informations" string="Interne Informationen">
|
||||
<group>
|
||||
<field name="contract" string="Vertrag" readonly="1"/>
|
||||
<field name="contract_id" string="Kunden/Vert.nummer" readonly="1"/>
|
||||
<field name="id" string="Vertrags Interne Id" readonly="1"/>
|
||||
<field name="contract" string="Vertrag"/>
|
||||
<field name="contract_id" string="Kunden/Vert.nummer"/>
|
||||
<field name="id" string="Vertrags Interne Id"/>
|
||||
<field name="uuid" string="Datensatz UUID" readonly="1"/>
|
||||
<field name="adpos" string="Reihenfolge" readonly="1"/>
|
||||
<field name="ad_is_lastpos" string="ist Letzte" readonly="1"/>
|
||||
|
|
|
|||
|
|
@ -364,6 +364,7 @@
|
|||
<field name="contract_name" string="Vertragskennung"/>
|
||||
</group>
|
||||
</div>
|
||||
|
||||
<div class="row">
|
||||
<div class="col-8">
|
||||
<group>
|
||||
|
|
@ -371,11 +372,14 @@
|
|||
</group>
|
||||
<hr></hr>
|
||||
<group>
|
||||
<field name="ads_last_work_state_info" string="Aktuelle Hinweise Kampagne" widget="text"/>
|
||||
<field name="ads_last_work_state_info" string="Hinweise Kampagne" widget="text"/>
|
||||
</group>
|
||||
<group>
|
||||
<field name="work_state_info" string="Aktuelle Hinweise Vertrag" widget="text"/>
|
||||
<field name="work_state_info" string="Hinweise Vertrag" widget="text"/>
|
||||
</group>
|
||||
<group>
|
||||
<field name="remark" string="Hinweise Allgemein" widget="text"/>
|
||||
</group>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
|
@ -549,8 +553,9 @@
|
|||
<page name="grundsettings" string="Grundeinstellungen">
|
||||
<div class="row">
|
||||
<group string="Partnerinformationen">
|
||||
<field name="contract_writer" string="Vertrags-Schreiber"/>
|
||||
<field name="contract_writer_mailcc" widget="boolean_toggle"/>
|
||||
<field name="contract_writer" string="Vertrags-Schreiber"/>
|
||||
<field name="contract_writer_mailcc" widget="boolean_toggle"/>
|
||||
<field name="techniker"/>
|
||||
<field name="grafiker" string="abw. Mitarbeiter Kunden-Grafik :"/>
|
||||
<field name="project_grafiker" attrs="{'invisible':[('grafiker','=','project_grafiker')]}"/>
|
||||
<!-- <field name="real_grafiker" string="Tatsächlicher Grafiker: "/> -->
|
||||
|
|
@ -750,6 +755,11 @@
|
|||
</page>
|
||||
</notebook>
|
||||
</page>
|
||||
<page name="remarks" string="Anmerkungen/Bemerkungen">
|
||||
<group>
|
||||
<field name="remark"/>
|
||||
</group>
|
||||
</page>
|
||||
<page name="tvmarketing" string="TV Marketing">
|
||||
<group>
|
||||
<field name="tv_reach_PLZ"/>
|
||||
|
|
@ -759,11 +769,6 @@
|
|||
<field name="ads_topics"/>
|
||||
</group>
|
||||
</page>
|
||||
<page name="remarks" string="Anmerkungen/Bemerkungen">
|
||||
<group>
|
||||
<field name="remark"/>
|
||||
</group>
|
||||
</page>
|
||||
<page name="contractaccess" string="Zugangsdaten" attrs="{'project.':[('client','!=',False)]}">
|
||||
<div class="row" >
|
||||
<div class="col-4">
|
||||
|
|
@ -837,21 +842,26 @@
|
|||
</field>
|
||||
</group>
|
||||
</page>
|
||||
<page name="contractmedia" string="letzte Medien">
|
||||
<page name="contractmedia" string="Fertige Dateien">
|
||||
<group>
|
||||
<field name="last_media" string="" readonly="1">
|
||||
<tree string="kampagnen" editable="none" create="none" >
|
||||
<field name="field" string="vom Feld"/>
|
||||
<field name="ad" string="vom Kampagne"/>
|
||||
<field name="mediatype_name" string="Nutzung"/>
|
||||
<button name="dload" string="" title="download_1" type="object" icon="fa-download"/>
|
||||
<field name="mediafile" string="Vorschau" options="{'size':[50]}" widget="image"/>
|
||||
<field name="secured_ro" string="Gesperrt" widget="boolean_toggle"/>
|
||||
<field name="used_ro" string="Genutzt" widget="boolean_toggle"/>
|
||||
</tree>
|
||||
</field>
|
||||
<field name="contract_binaries" string="">
|
||||
<tree string="Dateien zum Kunde" create="False" delete="True" editable="1" class="my_binary_class">
|
||||
<field name="binary_name" string="Bezeichnung"/>
|
||||
<field name="binary_mediatype_name" string="Vorlage"/>
|
||||
<field name="binary_binary" string="Vorschau" widget="image" readonly="False"/>
|
||||
<field name="binary_description" string="Beschreibung"/>
|
||||
<field name="binary_filename" string="Dateiname" readonly="1"/>
|
||||
<field name="binary_issaved" string="in Cloud Gespeichert" widget="boolean_toggle"/>
|
||||
<field name="binary_secured_ro" string="Gesperrt" widget="boolean_toggle"/>
|
||||
<field name="binary_used_ro" string="Genutzt" widget="boolean_toggle"/>
|
||||
<button name="dedit" string="" title="edit" type="object" icon="fa-edit"/>
|
||||
<button name="dload" string="" title="download_1" type="object" icon="fa-download"/>
|
||||
</tree>
|
||||
</field>
|
||||
</group>
|
||||
<button string="Datei hinzufügen" name="pyopen_dss_contract_add_binary_form_view" type="object" class="btn-primary o_open_tasks" data-hotkey="m"/>
|
||||
</page>
|
||||
|
||||
<!-- <page name="querprojects" string="Weitere Projekte">
|
||||
<group>
|
||||
<field name="client_other_projects" string="Weitere Projekte"/>
|
||||
|
|
@ -886,10 +896,36 @@
|
|||
</page>
|
||||
<page name="grundsettings_mark" string="Markierungen">
|
||||
<group string="Spezifische Datensatz-Marker">
|
||||
<field name="work_marker_1" string="Start Email versendet ?" widget="boolean_toggle"/>
|
||||
<field name="work_marker_2" string="Marker 2" widget="boolean_toggle"/>
|
||||
<field name="work_marker_3" string="Marker 3" widget="boolean_toggle"/>
|
||||
<field name="work_marker_4" string="Marker 4" widget="boolean_toggle"/>
|
||||
<group string="Marker 1 - Startemail versendet">
|
||||
<field name="work_marker_1" widget="boolean_toggle"/>
|
||||
</group>
|
||||
<group string="Marker 2 - Frei">
|
||||
<field name="work_marker_2" widget="boolean_toggle"/>
|
||||
</group>
|
||||
<group string="Marker 3 - Details">
|
||||
<field name="work_marker_3_full" widget="boolean_toggle"/>
|
||||
<field name="work_marker_3" widget="boolean_toggle" attrs="{'invisible': [('work_marker_3_full','=',False)]}"/>
|
||||
<field name="work_marker_3_value" attrs="{'invisible': [('work_marker_3_full','=',False)]}"/>
|
||||
<field name="work_marker_3_value" attrs="{'invisible': [('work_marker_3_full','=',False)]}" widget="color"/>
|
||||
<field name="work_marker_3_1" widget="boolean_toggle" attrs="{'invisible': [('work_marker_3_full','!=',False)]}"/>
|
||||
<field name="work_marker_3_1_value" attrs="{'invisible': [('work_marker_3_full','!=',False)]}"/>
|
||||
<field name="work_marker_3_1_value" attrs="{'invisible': [('work_marker_3_full','!=',False)]}" widget="color"/>
|
||||
<field name="work_marker_3_2" widget="boolean_toggle" attrs="{'invisible': [('work_marker_3_full','!=',False)]}"/>
|
||||
<field name="work_marker_3_2_value" attrs="{'invisible': [('work_marker_3_full','!=',False)]}"/>
|
||||
<field name="work_marker_3_2_value" attrs="{'invisible': [('work_marker_3_full','!=',False)]}" widget="color"/>
|
||||
</group>
|
||||
<group string="Marker 4 - Details - MailAutomatiken (TV)">
|
||||
<field name="work_marker_4_full" widget="boolean_toggle"/>
|
||||
<field name="work_marker_4" widget="boolean_toggle" attrs="{'invisible': [('work_marker_4_full','=',False)]}"/>
|
||||
<field name="work_marker_4_value" attrs="{'invisible': [('work_marker_4_full','=',False)]}"/>
|
||||
<field name="work_marker_4_value" attrs="{'invisible': [('work_marker_4_full','=',False)]}" widget="color"/>
|
||||
<field name="work_marker_4_1" widget="boolean_toggle" attrs="{'invisible': [('work_marker_4_full','!=',False)]}"/>
|
||||
<field name="work_marker_4_1_value" attrs="{'invisible': [('work_marker_4_full','!=',False)]}"/>
|
||||
<field name="work_marker_4_1_value" attrs="{'invisible': [('work_marker_4_full','!=',False)]}" widget="color"/>
|
||||
<field name="work_marker_4_2" widget="boolean_toggle" attrs="{'invisible': [('work_marker_4_full','!=',False)]}"/>
|
||||
<field name="work_marker_4_2_value" attrs="{'invisible': [('work_marker_4_full','!=',False)]}"/>
|
||||
<field name="work_marker_4_2_value" attrs="{'invisible': [('work_marker_4_full','!=',False)]}" widget="color"/>
|
||||
</group>
|
||||
</group>
|
||||
<group string="allgemeine Datensatz-Marker">
|
||||
<field name="marker_list" string="">
|
||||
|
|
@ -900,6 +936,22 @@
|
|||
</field>
|
||||
</group>
|
||||
</page>
|
||||
<page name="contractmedia" string="zugehörige Dateien">
|
||||
<group>
|
||||
<field name="last_media" string="" readonly="1">
|
||||
<tree string="kampagnen" editable="none" create="1" delete="1" class="my_media_class">
|
||||
<field name="field" string="vom Feld"/>
|
||||
<field name="ad" string="vom Kampagne"/>
|
||||
<field name="mediatype_name" string="Nutzung"/>
|
||||
<button name="dload" string="" title="download_1" type="object" icon="fa-download"/>
|
||||
<field name="mediafile" string="Vorschau" options="{'size':[50]}" widget="image"/>
|
||||
<field name="secured_ro" string="Gesperrt" widget="boolean_toggle"/>
|
||||
<field name="used_ro" string="Genutzt" widget="boolean_toggle"/>
|
||||
</tree>
|
||||
</field>
|
||||
</group>
|
||||
<button string="Datei hinzufügen" name="pyopen_dss_contract_add_media_form_view" type="object" class="btn-primary o_open_tasks" data-hotkey="m"/>
|
||||
</page>
|
||||
<page name="grundsettings_kd" string="Kundendaten original">
|
||||
<div class="row" string="Kundendaten Schnellanlage" name="client_short_edit" attrs="{'invisible':[('client','=',False)]}">
|
||||
<hr></hr>
|
||||
|
|
@ -976,7 +1028,9 @@
|
|||
</notebook>
|
||||
</page>
|
||||
</notebook>
|
||||
<field name="scan_vertrag" string='Vertrag PDF Ansicht' widget="pdf_viewer"/>
|
||||
<group string="Vertrag Schnellansicht">
|
||||
<field name="scan_vertrag" string='Vertrag PDF Ansicht' widget="pdf_viewer"/>
|
||||
</group>
|
||||
</sheet>
|
||||
<div class="oe_chatter">
|
||||
<field name="message_follower_ids" options="{'post_refresh':True}" help="Follow this project to automatically track the events associated to tasks and issues of this project." groups="base.group_user"/>
|
||||
|
|
@ -1004,7 +1058,7 @@
|
|||
quick_create_view="dss_contracts_view_form_simplified_footer"
|
||||
on_create="pyaction_new_contract_kanban"
|
||||
> -->
|
||||
<kanban class="o_kanban_mobile oe_background_gray o_emphasize_colors" on_create="quick_create" quick_create_view="DigitalSignage.dss_project_new_contract_kanbanform" action="pyaction_view_contract" type="object" default_group_by="contract_state" default_order="client_id desc">
|
||||
<kanban class="o_kanban_mobile oe_background_gray o_emphasize_colors" on_create="quick_create" quick_create_view="DigitalSignage.dss_project_new_contract_kanbanform" action="pyaction_view_contract" type="object" default_group_by="contract_state" default_order="contract_auto_id desc">
|
||||
<!-- <kanban class="o_kanban_mobile oe_background_gray o_emphasize_colors" action="pyaction_view_contract" type="object" default_group_by="contract_state" default_order="client_id">-->
|
||||
<field name="contract_name"/>
|
||||
<field name="contract_state"/>
|
||||
|
|
@ -1017,10 +1071,15 @@
|
|||
<field name="contract_state_minimal_kanban"/>
|
||||
<field name="ads_last_date_korrekturfreigabe_ablauf_erfolgt"/>
|
||||
<field name="korrectur_color"/>
|
||||
<field name="start_date"/>
|
||||
<field name="work_marker_1"/>
|
||||
<field name="get_marker_1_color"/>
|
||||
<field name="work_marker_2"/>
|
||||
<field name="get_marker_2_color"/>
|
||||
<field name="work_marker_3"/>
|
||||
<field name="get_marker_3_color"/>
|
||||
<field name="work_marker_4"/>
|
||||
<field name="get_marker_4_color"/>
|
||||
<field name="ads_last_date_korrekturfreigabe_ablauf_auto_cancel"/>
|
||||
<templates>
|
||||
<t t-name="kanban-box">
|
||||
|
|
@ -1060,30 +1119,25 @@
|
|||
<p style="font-size:14px;margin-bottom:0px"><strong><field name="contract_auto_id" string="Kundennummer"/></strong></p>
|
||||
</div>
|
||||
<div class="col-1" t-attf-style="background-color:#bbbbbb;height:21px;padding-left:0px !important;width:12px;border-style:none">
|
||||
<div t-attf-style="background-color:#bbbbbb;height:10px;width:11px;border-style:none;border-width:0.1px;" title="Willkommensemail / Startdatum-EMail wurde versendet (Marker 1)" attrs="{'invisible': [('work_marker_1','=',True)]}">
|
||||
<div t-attf-style="background-color:{{record.get_marker_1_color.value}};height:10px;width:11px;border-style:none;border-width:0.1px;" title="Willkommensemail / Startdatum-EMail wurde versendet (Marker 1)">
|
||||
</div>
|
||||
<div t-attf-style="background-color:#bb0b0b;height:10px;width:11px;border-style:none;border-width:0.1px;" title="Willkommensemail wurde versendet (Marker 1)" attrs="{'invisible': [('work_marker_1','!=',True)]}">
|
||||
</div>
|
||||
<div t-attf-style="background-color:#bbbbbb;height:10px;width:11px;border-style:none;border-width:0.1px;" title="Erinnerungen wurde(n) versendet (Marker 2)" attrs="{'invisible': [('work_marker_2','=',True)]}">
|
||||
</div>
|
||||
<div t-attf-style="background-color:#bb0b0b;height:10px;width:11px;border-style:none;border-width:0.1px;" title="Erinnerungen wurde(n) versendet (Marker 2)" attrs="{'invisible': [('work_marker_2','!=',True)]}">
|
||||
<div t-attf-style="background-color:{{record.get_marker_2_color.value}};height:10px;width:11px;border-style:none;border-width:0.1px;" title="Erinnerungen wurde(n) versendet (Marker 2)">
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-1" t-attf-style="background-color:#bbbbbb;height:21px;padding-left:0px !important;width:12px;border-style:none">
|
||||
<div t-attf-style="background-color:#bbbbbb;height:10px;width:11px;border-style:none;border-width:0.1px;" title="Korrekturabzug(üge) wurde(n) versendet (Marker 3)" attrs="{'invisible': [('work_marker_3','=',True)]}">
|
||||
<div t-attf-style="background-color:{{record.get_marker_3_color.value}};height:10px;width:11px;border-style:none;border-width:0.1px;" title="Korrekturabzug(üge) wurde(n) versendet (Marker 3)">
|
||||
</div>
|
||||
<div t-attf-style="background-color:#bb0b0b;height:10px;width:11px;border-style:none;border-width:0.1px;" title="Korrekturabzug(üge) wurde(n) versendet (Marker 3)" attrs="{'invisible': [('work_marker_3','!=',True)]}">
|
||||
</div>
|
||||
<div t-attf-style="background-color:#bbbbbb;height:10px;width:11px;border-style:none;border-width:0.1px;" title="Auslieferung/Aufstellung wurde(n) versendet (Marker 4)" attrs="{'invisible': [('work_marker_4','=',True)]}">
|
||||
</div>
|
||||
<div t-attf-style="background-color:#bb0b0b;height:10px;width:11px;border-style:none;border-width:0.1px;" title="Auslieferung/Aufstellung wurde(n) versendet (Marker 4)" attrs="{'invisible': [('work_marker_4','!=',True)]}">
|
||||
<div t-attf-style="background-color:{{record.get_marker_4_color.value}};height:10px;width:11px;border-style:none;border-width:0.1px;" title="Mailversendet Automatik Ablauf">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row" style="--gutter-x:10px;margin-bottom:0px" attrs="{'invisible': [('contract_state_minimal_kanban','=',True)]}">
|
||||
<div class="col-12" t-attf-style="background-color:#BfBfBf;padding-left: 1px;height:13px;border-style:solid;border-width:0px;">
|
||||
<div class="col-6" t-attf-style="background-color:#BfBfBf;padding-left: 1px;height:13px;border-style:solid;border-width:0px;">
|
||||
<p style="font-size:10px;margin-bottom:0px">Arbeitsstand letzte Kampagne</p>
|
||||
</div>
|
||||
<div class="col-6" t-attf-style="background-color:#BfBfBf;padding-left: 1px;height:13px;border-style:solid;border-width:0px;">
|
||||
<p style="font-size:10px;margin-bottom:0px;color:#000000;text-align:right;">1. Start : <field name="start_date"/></p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row" style="--gutter-x:10px;">
|
||||
<div class="col-4" t-attf-style="background-color:#BfBfBf;padding-left: 1px;height:13px;border-style:solid;border-width:0.2px;">
|
||||
|
|
@ -1214,6 +1268,14 @@
|
|||
<field name="state">code</field>
|
||||
<field name="code">action = records.buildallText()</field>
|
||||
</record>
|
||||
<record id="action_create_cloud" model="ir.actions.server">
|
||||
<field name="name">Cloudstruktur anlegen</field>
|
||||
<field name="model_id" ref="model_dss_contracts"/>
|
||||
<field name="binding_model_id" ref="model_dss_contracts"/>
|
||||
<field name="binding_view_types">form</field>
|
||||
<field name="state">code</field>
|
||||
<field name="code">action = records.pyaction_create_cloud_structure_client()</field>
|
||||
</record>
|
||||
|
||||
<record id="action_set_SaveViewState" model="ir.actions.server">
|
||||
<field name="name">Zum Cloud-Ordner springen</field>
|
||||
|
|
|
|||
|
|
@ -14,11 +14,12 @@
|
|||
<field name="description"/>
|
||||
</group>
|
||||
<group>
|
||||
<field name="maxsize_kb"/>
|
||||
<field name="maxsize_h"/>
|
||||
<field name="maxsize_w"/>
|
||||
<field name="cloudlink"/>
|
||||
<field name="filepartname"/>
|
||||
<field name="maxsize_kb"/>
|
||||
<field name="maxsize_h"/>
|
||||
<field name="maxsize_w"/>
|
||||
<field name="cloudlink"/>
|
||||
<field name="archiv_cloudlink"/>
|
||||
<field name="filepartname"/>
|
||||
</group>
|
||||
<notebook>
|
||||
<page name="informations" string="Informationen">
|
||||
|
|
|
|||
|
|
@ -27,24 +27,62 @@
|
|||
<field name="arch" type="xml">
|
||||
<form>
|
||||
<sheet>
|
||||
<group>
|
||||
<div class="col-md-12">
|
||||
<group name="basethings">
|
||||
<field name="relname" string="Relationsname"/>
|
||||
<field name="project" string="Projekt"/>
|
||||
<field name="contract" string="Vertrag"/>
|
||||
<field name="ad" string="Kampagnen-Zuordnung"/>
|
||||
<field name="field" string="Feld-Zuordnung"/>
|
||||
<field name="mediatype" string="Medium"/>
|
||||
<field name="secured_ro" widget="boolean_toggle"/>
|
||||
<field name="used_ro" widget="boolean_toggle"/>
|
||||
<field name="mediafile" string="Medium-Inhalt" widget="image"/>
|
||||
</group>
|
||||
</group>
|
||||
<field name="relname" string="Relationsname"/>
|
||||
<field name="project" string="Projekt"/>
|
||||
<field name="contract" string="Vertrag"/>
|
||||
<field name="ad" string="Kampagnen-Zuordnung"/>
|
||||
<field name="field" string="Feld-Zuordnung"/>
|
||||
<field name="mediatype" string="Medium"/>
|
||||
<field name="secured_ro" widget="boolean_toggle"/>
|
||||
<field name="used_ro" widget="boolean_toggle"/>
|
||||
<field name="mediafile" string="Medium-Inhalt" widget="image"/>
|
||||
</group>
|
||||
</div>
|
||||
</sheet>
|
||||
</form>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record id="dss_media_add_form" model="ir.ui.view">
|
||||
<field name="name">dss_media_add_form</field>
|
||||
<field name="model">dss.mediarelations</field>
|
||||
<field name="arch" type="xml">
|
||||
<form>
|
||||
<sheet>
|
||||
<group name="basethings">
|
||||
<field name="project" string="Projekt"/>
|
||||
<field name="contract" string="Vertrag"/>
|
||||
<field name="ad" string="Kampagnen-Zuordnung"/>
|
||||
<field name="mediatype" string="Medium"/>
|
||||
<field name="field" string="Feld-Zuordnung"/>
|
||||
<field name="secured_ro" widget="boolean_toggle"/>
|
||||
<field name="used_ro" widget="boolean_toggle"/>
|
||||
<field name="mediafile" string="Medium-Inhalt" widget="image"/>
|
||||
</group>
|
||||
<notebook>
|
||||
<page name="informations" string="Interne Informationen">
|
||||
<group>
|
||||
<field name="relname" string="Relationsname"/>
|
||||
<field name="id" string="Interne Id" readonly="1"/>
|
||||
<field name="uuid" string="Datensatz UUID" readonly="1"/>
|
||||
</group>
|
||||
</page>
|
||||
<page name="chatter" string="Chatter">
|
||||
<div class="oe_chatter">
|
||||
<field name="message_follower_ids" options="{'post_refresh':True}" help="Follow this project to automatically track the events associated to tasks and issues of this project." groups="base.group_user"/>
|
||||
<field name="activity_ids"/>
|
||||
<field name="message_ids"/>
|
||||
</div>
|
||||
</page>
|
||||
</notebook>
|
||||
</sheet>
|
||||
</form>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
|
||||
<record id="action_dss_mediarelations_view" model="ir.actions.act_window">
|
||||
<field name="name">DigitalSignage mediarelations</field>
|
||||
<field name="type">ir.actions.act_window</field>
|
||||
|
|
|
|||
|
|
@ -71,6 +71,7 @@
|
|||
<field name="standortpartner"/>
|
||||
<field name="vertriebspartner"/>
|
||||
<field name="project_grafiker"/>
|
||||
<field name="project_techniker"/>
|
||||
</group>
|
||||
</page>
|
||||
<page name="projektsettings" string="Projekteinstellungen">
|
||||
|
|
|
|||
|
|
@ -137,7 +137,45 @@
|
|||
</group>
|
||||
</div>
|
||||
</page>
|
||||
<page name="webvertragseing" string="Web-Vertragseingänge Abläufe">
|
||||
<page name="Markersettings" string="Markierungsfarben">
|
||||
<div class="row">
|
||||
<div class="col-8">
|
||||
<group string="Markierungsfarben 1-2">
|
||||
<field name="marker_1_color_used" widget="color"/>
|
||||
<field name="marker_1_color_unused" widget="color"/>
|
||||
<field name="marker_2_color_used" widget="color"/>
|
||||
<field name="marker_2_color_unused" widget="color"/>
|
||||
</group>
|
||||
</div>
|
||||
<div class="col-8">
|
||||
<group string="Markierungsfarben 3">
|
||||
<field name="marker_3_color_used" widget="color"/>
|
||||
<field name="marker_3_color_unused" widget="color"/>
|
||||
<field name="marker_3_color_value" widget="boolean_toggle"/>
|
||||
<field name="marker_3_1_color_used" widget="color"/>
|
||||
<field name="marker_3_1_color_unused" widget="color"/>
|
||||
<field name="marker_3_1_color_value" widget="boolean_toggle"/>
|
||||
<field name="marker_3_2_color_used" widget="color"/>
|
||||
<field name="marker_3_2_color_unused" widget="color"/>
|
||||
<field name="marker_3_2_color_value" widget="boolean_toggle"/>
|
||||
</group>
|
||||
</div>
|
||||
<div class="col-8">
|
||||
<group string="Markierungsfarben 4">
|
||||
<field name="marker_4_color_used" widget="color"/>
|
||||
<field name="marker_4_color_unused" widget="color"/>
|
||||
<field name="marker_4_color_value" widget="boolean_toggle"/>
|
||||
<field name="marker_4_1_color_used" widget="color"/>
|
||||
<field name="marker_4_1_color_unused" widget="color"/>
|
||||
<field name="marker_4_1_color_value" widget="boolean_toggle"/>
|
||||
<field name="marker_4_2_color_used" widget="color"/>
|
||||
<field name="marker_4_2_color_unused" widget="color"/>
|
||||
<field name="marker_4_2_color_value" widget="boolean_toggle"/>
|
||||
</group>
|
||||
</div>
|
||||
</div>
|
||||
</page>
|
||||
<page name="webvertragseing" string="Web-Vertragseingänge Abläufe">
|
||||
<div class="col-6">
|
||||
<group>
|
||||
<field name="tv_vertragsankuendigung_actionID"></field>
|
||||
|
|
|
|||
|
|
@ -12,7 +12,14 @@
|
|||
<field name="triggeractiongroupname"/>
|
||||
<field name="trigger_table"/>
|
||||
|
||||
<field name="trigger_list" />
|
||||
<field name="trigger_list">
|
||||
<tree string="Trigger">
|
||||
<field name="triggeractionname"/>
|
||||
<field name="triggeractiontyp"/>
|
||||
<field name="triggeractionprio"/>
|
||||
<field name="trigger_aktionen_active" widget="boolean_toogle"/>
|
||||
</tree>
|
||||
</field>
|
||||
</group>
|
||||
<notebook>
|
||||
<page name="informations" string="Informationen">
|
||||
|
|
|
|||
|
|
@ -34,6 +34,8 @@
|
|||
<field name='email_fix_email' attrs="{'invisible': [('email_getfrom','!=','FIX')]}" />
|
||||
<field name='email_data_table' attrs="{'invisible': [('email_getfrom','!=','DATA')]}" />
|
||||
<field name='email_data_field' attrs="{'invisible': [('email_getfrom','!=','DATA')]}" />
|
||||
<field name='email_has_attachments' widget="boolean_toggle" string="Email mit Anhang"/>
|
||||
<field name='email_contract_attachment_types' widget="many2many_tags" options="{'no_create': True}" string="Dateitypen aus Vertrag" attrs="{'invisible': [('email_has_attachments','!=',True)]}"/>
|
||||
</group>
|
||||
</page>
|
||||
<page name="InfoAusgaben" string="Info Ausgaben/Channel Posten ">
|
||||
|
|
|
|||
|
|
@ -51,22 +51,22 @@
|
|||
</field>
|
||||
</record>
|
||||
|
||||
<record id="dss_triggerconditions_trigger_condition_view" model="ir.ui.view">
|
||||
<!-- <record id="dss_triggerconditions_trigger_condition_view" model="ir.ui.view">
|
||||
<field name="name">dss_triggerconditions_tree</field>
|
||||
<field name="model">dss.triggerconditions</field>
|
||||
<field name="priority" eval="16"/>
|
||||
<field name="arch" type="xml">
|
||||
<trigger_condition_view string="Trigger Aktionen">
|
||||
<field name="triggerconditionname"/>
|
||||
</tree>
|
||||
</trigger_condition_view>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
-->
|
||||
<record id="action_dss_triggerconditions_view" model="ir.actions.act_window">
|
||||
<field name="name">DigitalSignage TriggerBedingungen</field>
|
||||
<field name="type">ir.actions.act_window</field>
|
||||
<field name="res_model">dss.triggerconditions</field>
|
||||
<field name="view_mode">tree,form,trigger_condition_view</field>
|
||||
<field name="view_mode">tree,form</field>
|
||||
<field name="context">{}</field>
|
||||
<field name="help" type="html">
|
||||
<p class="'o_view_nocontent_smiling_face">
|
||||
|
|
|
|||
|
|
@ -53,6 +53,7 @@
|
|||
</field>
|
||||
</record>
|
||||
|
||||
|
||||
<record id="action_dss_trigger_groups_view" model="ir.actions.act_window">
|
||||
<field name="name">DigitalSignage Trigger Gruppen</field>
|
||||
<field name="type">ir.actions.act_window</field>
|
||||
|
|
|
|||
|
|
@ -90,11 +90,21 @@
|
|||
</field>
|
||||
</record>
|
||||
|
||||
<record id="dss_trigger_trigger_condition_view" model="ir.ui.view">
|
||||
<field name="name">dss_trigger_trigger_condition_view</field>
|
||||
<field name="model">dss.triggertypes</field>
|
||||
<field name="priority" eval="16"/>
|
||||
<field name="arch" type="xml">
|
||||
<trigger_condition_view string="Trigger Aktionen">
|
||||
</trigger_condition_view>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record id="action_dss_trigger_view" model="ir.actions.act_window">
|
||||
<field name="name">DigitalSignage Trigger</field>
|
||||
<field name="type">ir.actions.act_window</field>
|
||||
<field name="res_model">dss.triggertypes</field>
|
||||
<field name="view_mode">tree,form</field>
|
||||
<field name="view_mode">trigger_condition_view,tree,form</field>
|
||||
<field name="context">{}</field>
|
||||
<field name="help" type="html">
|
||||
<p class="'o_view_nocontent_smiling_face">
|
||||
|
|
|
|||
|
|
@ -207,6 +207,14 @@
|
|||
action="action_dss_mediarelations_view"
|
||||
sequence="60"/>
|
||||
|
||||
<menuitem
|
||||
id="menu_dss_binaries_systems"
|
||||
name="Vertrag Binaries "
|
||||
parent="menu_dss_div_internsetup"
|
||||
action="action_dss_binaries_view"
|
||||
sequence="61"/>
|
||||
|
||||
|
||||
<menuitem
|
||||
id="menu_dss_hardware_configurationen"
|
||||
name="Hard.-/Software"
|
||||
|
|
@ -413,20 +421,7 @@
|
|||
action="action_dss_import_view"
|
||||
sequence="10"/>
|
||||
|
||||
<menuitem
|
||||
id="menu_dss_screendesign"
|
||||
name="Screendesigner Tool"
|
||||
parent="menu_dss_interntools"
|
||||
action="dss_screenDesigner_action_dss_screenDesigner"
|
||||
sequence="20"/>
|
||||
|
||||
<menuitem
|
||||
id="menu_dss_screendesign_view"
|
||||
name="Screendesigner View"
|
||||
parent="menu_dss_interntools"
|
||||
action="action_dss_screenDesigner_view"
|
||||
sequence="30"/>
|
||||
|
||||
|
||||
<menuitem
|
||||
id="menu_dss_Nachrichten"
|
||||
name="Mail Nachrichten"
|
||||
|
|
@ -454,6 +449,13 @@
|
|||
action="action_dss_main_m2mmail"
|
||||
sequence="50"/>
|
||||
|
||||
<menuitem
|
||||
id="menu_dss_linkmaillist"
|
||||
name="TVLink Emailnachrichten"
|
||||
parent="menu_dss_interntools"
|
||||
action="action_dss_main_linkmail"
|
||||
sequence="60"/>
|
||||
|
||||
<menuitem
|
||||
id="menu_dss_contracts_ads_topics"
|
||||
name="Werbethemen TV verwalten"
|
||||
|
|
|
|||
Loading…
Reference in New Issue