Blockly integration
This commit is contained in:
+14
-1
@@ -31,7 +31,6 @@
|
|||||||
'views/dss_onlinestate.xml',
|
'views/dss_onlinestate.xml',
|
||||||
'views/dss_texts.xml',
|
'views/dss_texts.xml',
|
||||||
'views/dss_systems.xml',
|
'views/dss_systems.xml',
|
||||||
'views/dss_screendesign.xml',
|
|
||||||
'views/dss_eventdays.xml',
|
'views/dss_eventdays.xml',
|
||||||
'views/dss_trigger_actions.xml',
|
'views/dss_trigger_actions.xml',
|
||||||
'views/dss_trigger_action_groups.xml',
|
'views/dss_trigger_action_groups.xml',
|
||||||
@@ -46,6 +45,9 @@
|
|||||||
'views/dss_web_contracts.xml',
|
'views/dss_web_contracts.xml',
|
||||||
'views/dss_invoices.xml',
|
'views/dss_invoices.xml',
|
||||||
'views/dss_m2mmail_views.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/mainsystem_view.xml',
|
||||||
'views/dss_importinvoicelist.xml',
|
'views/dss_importinvoicelist.xml',
|
||||||
'views/menu.xml',
|
'views/menu.xml',
|
||||||
@@ -53,6 +55,7 @@
|
|||||||
'views/google_map.xml',
|
'views/google_map.xml',
|
||||||
'views/dss_report_invoice.xml',
|
'views/dss_report_invoice.xml',
|
||||||
'data/ir_model_data.xml',
|
'data/ir_model_data.xml',
|
||||||
|
#'views/dss_screendesign.xml',
|
||||||
],
|
],
|
||||||
'demo': [],
|
'demo': [],
|
||||||
'installable': True,
|
'installable': True,
|
||||||
@@ -70,6 +73,15 @@
|
|||||||
'DigitalSignage/static/src/js/dss_screenview_renderer.js',
|
'DigitalSignage/static/src/js/dss_screenview_renderer.js',
|
||||||
'DigitalSignage/static/src/js/dss_screenview_register.js',
|
'DigitalSignage/static/src/js/dss_screenview_register.js',
|
||||||
'DigitalSignage/static/src/js/dss_screenview_model.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/scss/dss_nextcloudwidget.scss',
|
||||||
'DigitalSignage/static/src/xml/dss_nextcloudwidget.xml',
|
'DigitalSignage/static/src/xml/dss_nextcloudwidget.xml',
|
||||||
'DigitalSignage/static/src/js/dss_nextcloudwidget.js',
|
'DigitalSignage/static/src/js/dss_nextcloudwidget.js',
|
||||||
@@ -83,6 +95,7 @@
|
|||||||
'DigitalSignage/static/src/js/screenDesignerViewReload.js',
|
'DigitalSignage/static/src/js/screenDesignerViewReload.js',
|
||||||
'DigitalSignage/static/src/xml/form_button.xml',
|
'DigitalSignage/static/src/xml/form_button.xml',
|
||||||
'DigitalSignage/static/src/xml/form_label.xml',
|
'DigitalSignage/static/src/xml/form_label.xml',
|
||||||
|
'DigitalSignage/static/src/js/test.php',
|
||||||
],
|
],
|
||||||
'web.assets_common': [
|
'web.assets_common': [
|
||||||
'DigitalSignage/static/images/**/*',
|
'DigitalSignage/static/images/**/*',
|
||||||
|
|||||||
@@ -28,3 +28,5 @@ from . import dss_importinvoicelist
|
|||||||
from . import dss_web_contracts
|
from . import dss_web_contracts
|
||||||
from . import dss_m2mmail
|
from . import dss_m2mmail
|
||||||
from . import dsslogger
|
from . import dsslogger
|
||||||
|
from . import dss_binaries
|
||||||
|
from . import dss_linkmail
|
||||||
Executable → Regular
BIN
Binary file not shown.
Executable → Regular
BIN
Binary file not shown.
Executable → Regular
BIN
Binary file not shown.
Binary file not shown.
Executable → Regular
BIN
Binary file not shown.
Executable → Regular
BIN
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
+22
-3
@@ -24,8 +24,10 @@ from dateutil.relativedelta import relativedelta
|
|||||||
from pyffmpeg import FFmpeg
|
from pyffmpeg import FFmpeg
|
||||||
from tuya_iot import TuyaOpenAPI, TUYA_LOGGER
|
from tuya_iot import TuyaOpenAPI, TUYA_LOGGER
|
||||||
from tuya_connector import TuyaOpenAPI, TUYA_LOGGER
|
from tuya_connector import TuyaOpenAPI, TUYA_LOGGER
|
||||||
|
from . import dss_contract
|
||||||
import sys
|
import sys
|
||||||
|
|
||||||
|
|
||||||
TUYA_LOGGER.setLevel(logging.DEBUG)
|
TUYA_LOGGER.setLevel(logging.DEBUG)
|
||||||
_logger = logging.getLogger(__name__)
|
_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')])
|
mediatype = fields.Selection([('IMG_J','Bild'),('VID_4','MP4 Video'),('FIL_X','belieb. Datei')])
|
||||||
description = fields.Text('Medien Beschreibung')
|
description = fields.Text('Medien Beschreibung')
|
||||||
cloudlink = fields.Char('Cloud Verzeichnis',help='Verzeichnis für diese Datei innerhalb des Vertrags-Ordners')
|
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')
|
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_kb = fields.Integer('Maximale Größe KB')
|
||||||
maxsize_w = fields.Integer('Maximale Pixel W')
|
maxsize_w = fields.Integer('Maximale Pixel W')
|
||||||
maxsize_h = fields.Integer('Maximale Pixel H')
|
maxsize_h = fields.Integer('Maximale Pixel H')
|
||||||
standard_image = fields.Image()
|
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
|
@api.model
|
||||||
def _default_uuid(self):
|
def _default_uuid(self):
|
||||||
@@ -205,7 +209,7 @@ class dssmediarelations(models.Model):
|
|||||||
_description = "DigitalSignage Kampagne-Medien-Zuordnung"
|
_description = "DigitalSignage Kampagne-Medien-Zuordnung"
|
||||||
_inherit = []
|
_inherit = []
|
||||||
_rec_name = "relname"
|
_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(default=lambda self: self._default_uuid(), required=True, readonly=True, copy=False, string='UUID')
|
||||||
# uuid = fields.Char('UUID', required=True, translate=True)
|
# uuid = fields.Char('UUID', required=True, translate=True)
|
||||||
field = fields.Many2one('dss.advertisefields',string='Feld')
|
field = fields.Many2one('dss.advertisefields',string='Feld')
|
||||||
@@ -341,6 +345,19 @@ class dssscreendesign(models.Model):
|
|||||||
'tag': 'dss_screenDesigner_js_action'
|
'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):
|
class View(models.Model):
|
||||||
"""
|
"""
|
||||||
@@ -349,6 +366,7 @@ class View(models.Model):
|
|||||||
"""
|
"""
|
||||||
_inherit = 'ir.ui.view'
|
_inherit = 'ir.ui.view'
|
||||||
type = fields.Selection(selection_add=[('screenview', "ScreenView")])
|
type = fields.Selection(selection_add=[('screenview', "ScreenView")])
|
||||||
|
type = fields.Selection(selection_add=[('trigger_condition_view', "Trigger_Condition_View")])
|
||||||
|
|
||||||
class IrActionsActWindowView(models.Model):
|
class IrActionsActWindowView(models.Model):
|
||||||
"""
|
"""
|
||||||
@@ -356,5 +374,6 @@ class IrActionsActWindowView(models.Model):
|
|||||||
a new view mode called 'grid'.
|
a new view mode called 'grid'.
|
||||||
"""
|
"""
|
||||||
_inherit = 'ir.actions.act_window.view'
|
_inherit = 'ir.actions.act_window.view'
|
||||||
view_mode = fields.Selection(selection_add=[('screenview', "ScreenView")],
|
view_mode = fields.Selection(selection_add=[('screenview', "ScreenView")],ondelete={'screenview': 'cascade'})
|
||||||
ondelete={'screenview': 'cascade'})
|
view_mode = fields.Selection(selection_add=[('trigger_condition_view', "Trigger_Condition_View")],ondelete={'trigger_condition_view': 'cascade'})
|
||||||
|
|
||||||
|
|||||||
+1
-1
@@ -99,7 +99,7 @@ class dsscontractads(models.Model):
|
|||||||
# uuid = fields.Char('UUID', required=True, translate=True)
|
# uuid = fields.Char('UUID', required=True, translate=True)
|
||||||
adname = fields.Char('Kampagnenname', required=True, tracking=True)
|
adname = fields.Char('Kampagnenname', required=True, tracking=True)
|
||||||
adtype = fields.Selection(
|
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)
|
('SONS', 'Sonstige Änderung'),('PREA', 'Vorausplanung')], tracking=True)
|
||||||
adpos = fields.Integer('Reihenfolge', default=lambda self: self._default_adpos(),
|
adpos = fields.Integer('Reihenfolge', default=lambda self: self._default_adpos(),
|
||||||
tracking=True)
|
tracking=True)
|
||||||
|
|||||||
+154
-4
@@ -114,6 +114,7 @@ class dsscontracts(models.Model):
|
|||||||
provisionspayedpercent = fields.Float('Ausgezahlte Provision % :',compute='_compute_provisionspayedpercent')
|
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")
|
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)
|
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)
|
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)
|
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')
|
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_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_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)
|
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_changes = fields.Boolean('Benachrichtigen bei Partneränderungen',tracking=True)
|
||||||
info_partner = fields.Many2one('res.partner','Benachrichtigung an : ',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)
|
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 = 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 = 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)
|
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_text = fields.Char(related='work_state.statusname')
|
||||||
work_state_info = fields.Char('Zusatzinfo',tracking=True)
|
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 = fields.Many2one('dss.todostate',default=_default_todo_state,tracking=True)
|
||||||
# todo_state_color = fields.Char(related='todo_state.color')
|
# todo_state_color = fields.Char(related='todo_state.color')
|
||||||
# todo_state_text = fields.Char(related='todo_state.statusname')
|
# 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 = fields.Many2many('dss.contracts_ads_topics', string='Themenliste', tracking=True)
|
||||||
ads_topics_text = fields.Char('Themenliste gesamt',compute='_compute_themenliste')
|
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')
|
@api.depends('ads_topics')
|
||||||
def _compute_themenliste(self):
|
def _compute_themenliste(self):
|
||||||
# _logger.info('Contract Themenliste Berechnung : C_' + str(self.id))
|
# _logger.info('Contract Themenliste Berechnung : C_' + str(self.id))
|
||||||
@@ -1042,6 +1115,22 @@ class dsscontracts(models.Model):
|
|||||||
return True
|
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):
|
def createcontract(self,template):
|
||||||
newid = template
|
newid = template
|
||||||
newClient = self.env['dss.contracts'].search([('id','=',newid)])
|
newClient = self.env['dss.contracts'].search([('id','=',newid)])
|
||||||
@@ -1251,12 +1340,73 @@ class dsscontracts(models.Model):
|
|||||||
#raise ValidationError((all_contract_text))
|
#raise ValidationError((all_contract_text))
|
||||||
return contracts
|
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
|
@api.model
|
||||||
def newwizzard(self,id):
|
def newwizzard(self,id):
|
||||||
project = self.env['dss.projects'].search([('id', '=', id)], limit=1)
|
project = self.env['dss.projects'].search([('id', '=', id)], limit=1)
|
||||||
_logger.info("Create new Contract Wizard - Project : "+str(project))
|
_logger.info("Create new Contract Wizard - Project : "+str(project))
|
||||||
action = self.env["ir.actions.actions"]._for_xml_id("DigitalSignage.action_open_create_contract")
|
action = self.env["ir.actions.actions"]._for_xml_id("DigitalSignage.action_open_create_contract")
|
||||||
action['context'] = {'default_project': project.id}
|
action['context'] = {'default_project': project.id}
|
||||||
|
|
||||||
|
|
||||||
return action
|
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
|
||||||
|
|
||||||
|
|||||||
@@ -38,3 +38,7 @@ class dssmarker(models.Model):
|
|||||||
@api.model
|
@api.model
|
||||||
def _default_uuid(self):
|
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)
|
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)
|
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_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_on = fields.Datetime('veraltet',tracking=True)
|
||||||
zeiten_off = fields.Datetime('veraltet',tracking=True)
|
zeiten_off = fields.Datetime('veraltet',tracking=True)
|
||||||
zeitenf_on = fields.Float('Einschaltzeit',tracking=True)
|
zeitenf_on = fields.Float('Einschaltzeit',tracking=True)
|
||||||
@@ -327,6 +328,7 @@ class dssprojects(models.Model):
|
|||||||
|
|
||||||
def compute_getonlinestate_single(self,project):
|
def compute_getonlinestate_single(self,project):
|
||||||
#proj = self.env['dss.projects'].search([('id',"=",project.id)])
|
#proj = self.env['dss.projects'].search([('id',"=",project.id)])
|
||||||
|
_logger.setLevel(1)
|
||||||
proj = project
|
proj = project
|
||||||
colorOn = str(self.env['dss.settings'].search([], limit=1).systemonline_color)
|
colorOn = str(self.env['dss.settings'].search([], limit=1).systemonline_color)
|
||||||
colorOff = str(self.env['dss.settings'].search([], limit=1).systemoffline_color)
|
colorOff = str(self.env['dss.settings'].search([], limit=1).systemoffline_color)
|
||||||
|
|||||||
+47
-7
@@ -41,6 +41,29 @@ class dssSettings(models.Model):
|
|||||||
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 = fields.Char('Standard Kampagnen Pfad',tracking=True)
|
||||||
def_ad_cloudpath_sample = fields.Char('Kampagnen Beispiel :',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_id = fields.Char('Tuya Access ID',tracking=True)
|
||||||
tuya_access_key = fields.Char('Tuya Access KEY',tracking=True)
|
tuya_access_key = fields.Char('Tuya Access KEY',tracking=True)
|
||||||
tuya_endpoint = fields.Char('Tuya Access Endpoint',tracking=True)
|
tuya_endpoint = fields.Char('Tuya Access Endpoint',tracking=True)
|
||||||
@@ -77,15 +100,16 @@ class dssSettings(models.Model):
|
|||||||
if parts[0] == '$':
|
if parts[0] == '$':
|
||||||
fels = parts[1:]
|
fels = parts[1:]
|
||||||
if fels == 'shortwerbe_feld_selected':
|
if fels == 'shortwerbe_feld_selected':
|
||||||
if not record.werbe_feld_selected.Field_notinCloud:
|
part= ''
|
||||||
parts = ''
|
for wf in record.werbe_feld_selected:
|
||||||
else:
|
if wf.Field_notinCloud: # AChtung NOtinCloud = True ist Name anzeigen
|
||||||
parts = record._origin.read([fels])
|
part += wf.feldname + '_'
|
||||||
|
part = part if parts else ''
|
||||||
else:
|
else:
|
||||||
parts = record._origin.read([fels])
|
part = record._origin.read([fels])[0][fels]
|
||||||
_logger.info("Get Path - Anfrage-Teil gefunden : " + str(parts))
|
_logger.info("Get Path - Anfrage-Teil gefunden : " + str(part))
|
||||||
if parts:
|
if parts:
|
||||||
value = str(parts[0][fels])
|
value = str(part)
|
||||||
else:
|
else:
|
||||||
value = ''
|
value = ''
|
||||||
_logger.info("Get Path - Anfrage-Teil gefunden - setze : " + str(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")
|
_logger.info("Get Client Path - kein Client gefunden")
|
||||||
return ''
|
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):
|
class dssSettingsSave(models.Model):
|
||||||
|
|
||||||
|
|||||||
+166
-1
@@ -1,6 +1,8 @@
|
|||||||
import uuid
|
import uuid
|
||||||
import logging
|
import logging
|
||||||
import datetime
|
import datetime
|
||||||
|
from .dsslogger import OdooCustomLogger
|
||||||
|
|
||||||
|
|
||||||
from odoo import api, fields, models, _
|
from odoo import api, fields, models, _
|
||||||
from odoo import tools
|
from odoo import tools
|
||||||
@@ -8,10 +10,35 @@ from datetime import datetime
|
|||||||
from datetime import date
|
from datetime import date
|
||||||
from odoo.exceptions import ValidationError
|
from odoo.exceptions import ValidationError
|
||||||
from dateutil.relativedelta import relativedelta
|
from dateutil.relativedelta import relativedelta
|
||||||
|
from tuya_iot import TuyaOpenAPI, TUYA_LOGGER
|
||||||
|
from tuya_connector import TuyaOpenAPI, TUYA_LOGGER
|
||||||
import sys
|
import sys
|
||||||
|
|
||||||
|
TUYA_LOGGER.setLevel(logging.DEBUG)
|
||||||
|
|
||||||
|
logging.setLoggerClass(OdooCustomLogger)
|
||||||
_logger = logging.getLogger(__name__)
|
_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):
|
class dsstriggerconditions(models.Model):
|
||||||
_name = "dss.triggerconditions"
|
_name = "dss.triggerconditions"
|
||||||
_description = "DigitalSignage Trigger Bedingungen"
|
_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_marker_check = fields.Many2one('dss.marker','Marker',help='Welcher Marker soll eingefügt werden ?',tracking=True)
|
||||||
trigger_value = fields.Char('Fix Wert',tracking=True)
|
trigger_value = fields.Char('Fix Wert',tracking=True)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@api.model
|
@api.model
|
||||||
def _default_uuid(self):
|
def _default_uuid(self):
|
||||||
return str(uuid.uuid4())
|
return str(uuid.uuid4())
|
||||||
@@ -105,6 +134,19 @@ class dsstriggerconditions(models.Model):
|
|||||||
dotrigger = Compare
|
dotrigger = Compare
|
||||||
return dotrigger
|
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):
|
class dsstriggergroups(models.Model):
|
||||||
_name = "dss.triggergroups"
|
_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)
|
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_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_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_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_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_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 = 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_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_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
|
@api.model
|
||||||
def _default_uuid(self):
|
def _default_uuid(self):
|
||||||
@@ -384,6 +431,104 @@ class dsstriggertypes(models.Model):
|
|||||||
def _check_trigger(self,DataRecord):
|
def _check_trigger(self,DataRecord):
|
||||||
return ""
|
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):
|
class dsstriggeractions(models.Model):
|
||||||
_name = "dss.triggeractions"
|
_name = "dss.triggeractions"
|
||||||
_description = "DigitalSignage Trigger Aktionen"
|
_description = "DigitalSignage Trigger Aktionen"
|
||||||
@@ -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_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_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_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_user = fields.Many2one('res.users','Empfänger der Aufgabe',tracking=True)
|
||||||
activity_type = fields.Many2one('mail.activity.type','Art 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))
|
_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_to = mailto
|
||||||
self.email_template.email_cc = ccmailto
|
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:
|
if not self.email_send_confirm:
|
||||||
self.email_template.send_mail(Dataset.id,force_send=True)
|
self.email_template.send_mail(Dataset.id,force_send=True)
|
||||||
else:
|
else:
|
||||||
@@ -511,6 +675,7 @@ class dsstriggeractions(models.Model):
|
|||||||
title="Bestätigen",method="Email senden ",callback_params={"Email": mailto}))
|
title="Bestätigen",method="Email senden ",callback_params={"Email": mailto}))
|
||||||
if action:
|
if action:
|
||||||
self.email_template.send_mail(Dataset.id,force_send=True)
|
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
|
self.email_template.email_cc = ccmailto_org
|
||||||
elif (self.triggeractiontyp == 'DSEDIT'):
|
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))
|
_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))
|
||||||
|
|||||||
@@ -50,3 +50,6 @@ DigitalSignage_dss_m2mmail,access.dss.m2mmail,model_dss_m2mmail,base.group_user,
|
|||||||
digitalsignage_dss_display_templates_group_user,access.dss.display.templates,model_dss_display_templates,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_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
|
//The keeplast protect against concurrency call
|
||||||
console.log(this);
|
console.log(this);
|
||||||
await this.keepLast.add(this.loaddata(this)); //this.loaddata(records));
|
await this.keepLast.add(this.loaddata(this)); //this.loaddata(records));
|
||||||
console.log(this);
|
|
||||||
var element=document.querySelector('.o_dark_panel')
|
|
||||||
element.remove();;
|
|
||||||
}
|
}
|
||||||
/**
|
/**
|
||||||
* @protected
|
* @protected
|
||||||
|
|||||||
@@ -129,3 +129,221 @@
|
|||||||
.hidden {
|
.hidden {
|
||||||
display: none;
|
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">
|
<t t-name="dss.screenview" owl="1">
|
||||||
<Layout display="props.display" className="'h-100 overflow-auto'">
|
<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>
|
</Layout>
|
||||||
<div class="" t-attf-style="height:100px;width:100%">
|
<div class="" t-attf-style="height:100px;width:100%">
|
||||||
<p>Scrollraum</p>
|
<p>Scrollraum</p>
|
||||||
|
|||||||
Binary file not shown.
|
Before Width: | Height: | Size: 0 B After Width: | Height: | Size: 298 KiB |
+3
-3
@@ -218,9 +218,9 @@
|
|||||||
</page>
|
</page>
|
||||||
<page name="informations" string="Interne Informationen">
|
<page name="informations" string="Interne Informationen">
|
||||||
<group>
|
<group>
|
||||||
<field name="contract" string="Vertrag" readonly="1"/>
|
<field name="contract" string="Vertrag"/>
|
||||||
<field name="contract_id" string="Kunden/Vert.nummer" readonly="1"/>
|
<field name="contract_id" string="Kunden/Vert.nummer"/>
|
||||||
<field name="id" string="Vertrags Interne Id" readonly="1"/>
|
<field name="id" string="Vertrags Interne Id"/>
|
||||||
<field name="uuid" string="Datensatz UUID" readonly="1"/>
|
<field name="uuid" string="Datensatz UUID" readonly="1"/>
|
||||||
<field name="adpos" string="Reihenfolge" readonly="1"/>
|
<field name="adpos" string="Reihenfolge" readonly="1"/>
|
||||||
<field name="ad_is_lastpos" string="ist Letzte" readonly="1"/>
|
<field name="ad_is_lastpos" string="ist Letzte" readonly="1"/>
|
||||||
|
|||||||
+100
-38
@@ -364,6 +364,7 @@
|
|||||||
<field name="contract_name" string="Vertragskennung"/>
|
<field name="contract_name" string="Vertragskennung"/>
|
||||||
</group>
|
</group>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col-8">
|
<div class="col-8">
|
||||||
<group>
|
<group>
|
||||||
@@ -371,10 +372,13 @@
|
|||||||
</group>
|
</group>
|
||||||
<hr></hr>
|
<hr></hr>
|
||||||
<group>
|
<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>
|
||||||
<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>
|
</group>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -551,6 +555,7 @@
|
|||||||
<group string="Partnerinformationen">
|
<group string="Partnerinformationen">
|
||||||
<field name="contract_writer" string="Vertrags-Schreiber"/>
|
<field name="contract_writer" string="Vertrags-Schreiber"/>
|
||||||
<field name="contract_writer_mailcc" widget="boolean_toggle"/>
|
<field name="contract_writer_mailcc" widget="boolean_toggle"/>
|
||||||
|
<field name="techniker"/>
|
||||||
<field name="grafiker" string="abw. Mitarbeiter Kunden-Grafik :"/>
|
<field name="grafiker" string="abw. Mitarbeiter Kunden-Grafik :"/>
|
||||||
<field name="project_grafiker" attrs="{'invisible':[('grafiker','=','project_grafiker')]}"/>
|
<field name="project_grafiker" attrs="{'invisible':[('grafiker','=','project_grafiker')]}"/>
|
||||||
<!-- <field name="real_grafiker" string="Tatsächlicher Grafiker: "/> -->
|
<!-- <field name="real_grafiker" string="Tatsächlicher Grafiker: "/> -->
|
||||||
@@ -750,6 +755,11 @@
|
|||||||
</page>
|
</page>
|
||||||
</notebook>
|
</notebook>
|
||||||
</page>
|
</page>
|
||||||
|
<page name="remarks" string="Anmerkungen/Bemerkungen">
|
||||||
|
<group>
|
||||||
|
<field name="remark"/>
|
||||||
|
</group>
|
||||||
|
</page>
|
||||||
<page name="tvmarketing" string="TV Marketing">
|
<page name="tvmarketing" string="TV Marketing">
|
||||||
<group>
|
<group>
|
||||||
<field name="tv_reach_PLZ"/>
|
<field name="tv_reach_PLZ"/>
|
||||||
@@ -759,11 +769,6 @@
|
|||||||
<field name="ads_topics"/>
|
<field name="ads_topics"/>
|
||||||
</group>
|
</group>
|
||||||
</page>
|
</page>
|
||||||
<page name="remarks" string="Anmerkungen/Bemerkungen">
|
|
||||||
<group>
|
|
||||||
<field name="remark"/>
|
|
||||||
</group>
|
|
||||||
</page>
|
|
||||||
<page name="contractaccess" string="Zugangsdaten" attrs="{'project.':[('client','!=',False)]}">
|
<page name="contractaccess" string="Zugangsdaten" attrs="{'project.':[('client','!=',False)]}">
|
||||||
<div class="row" >
|
<div class="row" >
|
||||||
<div class="col-4">
|
<div class="col-4">
|
||||||
@@ -837,21 +842,26 @@
|
|||||||
</field>
|
</field>
|
||||||
</group>
|
</group>
|
||||||
</page>
|
</page>
|
||||||
<page name="contractmedia" string="letzte Medien">
|
<page name="contractmedia" string="Fertige Dateien">
|
||||||
<group>
|
<group>
|
||||||
<field name="last_media" string="" readonly="1">
|
<field name="contract_binaries" string="">
|
||||||
<tree string="kampagnen" editable="none" create="none" >
|
<tree string="Dateien zum Kunde" create="False" delete="True" editable="1" class="my_binary_class">
|
||||||
<field name="field" string="vom Feld"/>
|
<field name="binary_name" string="Bezeichnung"/>
|
||||||
<field name="ad" string="vom Kampagne"/>
|
<field name="binary_mediatype_name" string="Vorlage"/>
|
||||||
<field name="mediatype_name" string="Nutzung"/>
|
<field name="binary_binary" string="Vorschau" widget="image" readonly="False"/>
|
||||||
<button name="dload" string="" title="download_1" type="object" icon="fa-download"/>
|
<field name="binary_description" string="Beschreibung"/>
|
||||||
<field name="mediafile" string="Vorschau" options="{'size':[50]}" widget="image"/>
|
<field name="binary_filename" string="Dateiname" readonly="1"/>
|
||||||
<field name="secured_ro" string="Gesperrt" widget="boolean_toggle"/>
|
<field name="binary_issaved" string="in Cloud Gespeichert" widget="boolean_toggle"/>
|
||||||
<field name="used_ro" string="Genutzt" widget="boolean_toggle"/>
|
<field name="binary_secured_ro" string="Gesperrt" widget="boolean_toggle"/>
|
||||||
</tree>
|
<field name="binary_used_ro" string="Genutzt" widget="boolean_toggle"/>
|
||||||
</field>
|
<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>
|
</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>
|
||||||
|
|
||||||
<!-- <page name="querprojects" string="Weitere Projekte">
|
<!-- <page name="querprojects" string="Weitere Projekte">
|
||||||
<group>
|
<group>
|
||||||
<field name="client_other_projects" string="Weitere Projekte"/>
|
<field name="client_other_projects" string="Weitere Projekte"/>
|
||||||
@@ -886,10 +896,36 @@
|
|||||||
</page>
|
</page>
|
||||||
<page name="grundsettings_mark" string="Markierungen">
|
<page name="grundsettings_mark" string="Markierungen">
|
||||||
<group string="Spezifische Datensatz-Marker">
|
<group string="Spezifische Datensatz-Marker">
|
||||||
<field name="work_marker_1" string="Start Email versendet ?" widget="boolean_toggle"/>
|
<group string="Marker 1 - Startemail versendet">
|
||||||
<field name="work_marker_2" string="Marker 2" widget="boolean_toggle"/>
|
<field name="work_marker_1" widget="boolean_toggle"/>
|
||||||
<field name="work_marker_3" string="Marker 3" widget="boolean_toggle"/>
|
</group>
|
||||||
<field name="work_marker_4" string="Marker 4" widget="boolean_toggle"/>
|
<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>
|
||||||
<group string="allgemeine Datensatz-Marker">
|
<group string="allgemeine Datensatz-Marker">
|
||||||
<field name="marker_list" string="">
|
<field name="marker_list" string="">
|
||||||
@@ -900,6 +936,22 @@
|
|||||||
</field>
|
</field>
|
||||||
</group>
|
</group>
|
||||||
</page>
|
</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">
|
<page name="grundsettings_kd" string="Kundendaten original">
|
||||||
<div class="row" string="Kundendaten Schnellanlage" name="client_short_edit" attrs="{'invisible':[('client','=',False)]}">
|
<div class="row" string="Kundendaten Schnellanlage" name="client_short_edit" attrs="{'invisible':[('client','=',False)]}">
|
||||||
<hr></hr>
|
<hr></hr>
|
||||||
@@ -976,7 +1028,9 @@
|
|||||||
</notebook>
|
</notebook>
|
||||||
</page>
|
</page>
|
||||||
</notebook>
|
</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>
|
</sheet>
|
||||||
<div class="oe_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="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"
|
quick_create_view="dss_contracts_view_form_simplified_footer"
|
||||||
on_create="pyaction_new_contract_kanban"
|
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">-->
|
<!-- <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_name"/>
|
||||||
<field name="contract_state"/>
|
<field name="contract_state"/>
|
||||||
@@ -1017,10 +1071,15 @@
|
|||||||
<field name="contract_state_minimal_kanban"/>
|
<field name="contract_state_minimal_kanban"/>
|
||||||
<field name="ads_last_date_korrekturfreigabe_ablauf_erfolgt"/>
|
<field name="ads_last_date_korrekturfreigabe_ablauf_erfolgt"/>
|
||||||
<field name="korrectur_color"/>
|
<field name="korrectur_color"/>
|
||||||
|
<field name="start_date"/>
|
||||||
<field name="work_marker_1"/>
|
<field name="work_marker_1"/>
|
||||||
|
<field name="get_marker_1_color"/>
|
||||||
<field name="work_marker_2"/>
|
<field name="work_marker_2"/>
|
||||||
|
<field name="get_marker_2_color"/>
|
||||||
<field name="work_marker_3"/>
|
<field name="work_marker_3"/>
|
||||||
|
<field name="get_marker_3_color"/>
|
||||||
<field name="work_marker_4"/>
|
<field name="work_marker_4"/>
|
||||||
|
<field name="get_marker_4_color"/>
|
||||||
<field name="ads_last_date_korrekturfreigabe_ablauf_auto_cancel"/>
|
<field name="ads_last_date_korrekturfreigabe_ablauf_auto_cancel"/>
|
||||||
<templates>
|
<templates>
|
||||||
<t t-name="kanban-box">
|
<t t-name="kanban-box">
|
||||||
@@ -1060,29 +1119,24 @@
|
|||||||
<p style="font-size:14px;margin-bottom:0px"><strong><field name="contract_auto_id" string="Kundennummer"/></strong></p>
|
<p style="font-size:14px;margin-bottom:0px"><strong><field name="contract_auto_id" string="Kundennummer"/></strong></p>
|
||||||
</div>
|
</div>
|
||||||
<div class="col-1" t-attf-style="background-color:#bbbbbb;height:21px;padding-left:0px !important;width:12px;border-style:none">
|
<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>
|
||||||
<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 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 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>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="col-1" t-attf-style="background-color:#bbbbbb;height:21px;padding-left:0px !important;width:12px;border-style:none">
|
<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>
|
||||||
<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 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 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>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="row" style="--gutter-x:10px;margin-bottom:0px" attrs="{'invisible': [('contract_state_minimal_kanban','=',True)]}">
|
<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>
|
<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>
|
</div>
|
||||||
<div class="row" style="--gutter-x:10px;">
|
<div class="row" style="--gutter-x:10px;">
|
||||||
@@ -1214,6 +1268,14 @@
|
|||||||
<field name="state">code</field>
|
<field name="state">code</field>
|
||||||
<field name="code">action = records.buildallText()</field>
|
<field name="code">action = records.buildallText()</field>
|
||||||
</record>
|
</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">
|
<record id="action_set_SaveViewState" model="ir.actions.server">
|
||||||
<field name="name">Zum Cloud-Ordner springen</field>
|
<field name="name">Zum Cloud-Ordner springen</field>
|
||||||
|
|||||||
@@ -14,11 +14,12 @@
|
|||||||
<field name="description"/>
|
<field name="description"/>
|
||||||
</group>
|
</group>
|
||||||
<group>
|
<group>
|
||||||
<field name="maxsize_kb"/>
|
<field name="maxsize_kb"/>
|
||||||
<field name="maxsize_h"/>
|
<field name="maxsize_h"/>
|
||||||
<field name="maxsize_w"/>
|
<field name="maxsize_w"/>
|
||||||
<field name="cloudlink"/>
|
<field name="cloudlink"/>
|
||||||
<field name="filepartname"/>
|
<field name="archiv_cloudlink"/>
|
||||||
|
<field name="filepartname"/>
|
||||||
</group>
|
</group>
|
||||||
<notebook>
|
<notebook>
|
||||||
<page name="informations" string="Informationen">
|
<page name="informations" string="Informationen">
|
||||||
|
|||||||
@@ -27,24 +27,62 @@
|
|||||||
<field name="arch" type="xml">
|
<field name="arch" type="xml">
|
||||||
<form>
|
<form>
|
||||||
<sheet>
|
<sheet>
|
||||||
<group>
|
<div class="col-md-12">
|
||||||
<group name="basethings">
|
<group name="basethings">
|
||||||
<field name="relname" string="Relationsname"/>
|
<field name="relname" string="Relationsname"/>
|
||||||
<field name="project" string="Projekt"/>
|
<field name="project" string="Projekt"/>
|
||||||
<field name="contract" string="Vertrag"/>
|
<field name="contract" string="Vertrag"/>
|
||||||
<field name="ad" string="Kampagnen-Zuordnung"/>
|
<field name="ad" string="Kampagnen-Zuordnung"/>
|
||||||
<field name="field" string="Feld-Zuordnung"/>
|
<field name="field" string="Feld-Zuordnung"/>
|
||||||
<field name="mediatype" string="Medium"/>
|
<field name="mediatype" string="Medium"/>
|
||||||
<field name="secured_ro" widget="boolean_toggle"/>
|
<field name="secured_ro" widget="boolean_toggle"/>
|
||||||
<field name="used_ro" widget="boolean_toggle"/>
|
<field name="used_ro" widget="boolean_toggle"/>
|
||||||
<field name="mediafile" string="Medium-Inhalt" widget="image"/>
|
<field name="mediafile" string="Medium-Inhalt" widget="image"/>
|
||||||
</group>
|
</group>
|
||||||
</group>
|
</div>
|
||||||
</sheet>
|
</sheet>
|
||||||
</form>
|
</form>
|
||||||
</field>
|
</field>
|
||||||
</record>
|
</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">
|
<record id="action_dss_mediarelations_view" model="ir.actions.act_window">
|
||||||
<field name="name">DigitalSignage mediarelations</field>
|
<field name="name">DigitalSignage mediarelations</field>
|
||||||
<field name="type">ir.actions.act_window</field>
|
<field name="type">ir.actions.act_window</field>
|
||||||
|
|||||||
@@ -71,6 +71,7 @@
|
|||||||
<field name="standortpartner"/>
|
<field name="standortpartner"/>
|
||||||
<field name="vertriebspartner"/>
|
<field name="vertriebspartner"/>
|
||||||
<field name="project_grafiker"/>
|
<field name="project_grafiker"/>
|
||||||
|
<field name="project_techniker"/>
|
||||||
</group>
|
</group>
|
||||||
</page>
|
</page>
|
||||||
<page name="projektsettings" string="Projekteinstellungen">
|
<page name="projektsettings" string="Projekteinstellungen">
|
||||||
|
|||||||
+39
-1
@@ -137,7 +137,45 @@
|
|||||||
</group>
|
</group>
|
||||||
</div>
|
</div>
|
||||||
</page>
|
</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">
|
<div class="col-6">
|
||||||
<group>
|
<group>
|
||||||
<field name="tv_vertragsankuendigung_actionID"></field>
|
<field name="tv_vertragsankuendigung_actionID"></field>
|
||||||
|
|||||||
@@ -12,7 +12,14 @@
|
|||||||
<field name="triggeractiongroupname"/>
|
<field name="triggeractiongroupname"/>
|
||||||
<field name="trigger_table"/>
|
<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>
|
</group>
|
||||||
<notebook>
|
<notebook>
|
||||||
<page name="informations" string="Informationen">
|
<page name="informations" string="Informationen">
|
||||||
|
|||||||
@@ -34,6 +34,8 @@
|
|||||||
<field name='email_fix_email' attrs="{'invisible': [('email_getfrom','!=','FIX')]}" />
|
<field name='email_fix_email' attrs="{'invisible': [('email_getfrom','!=','FIX')]}" />
|
||||||
<field name='email_data_table' attrs="{'invisible': [('email_getfrom','!=','DATA')]}" />
|
<field name='email_data_table' attrs="{'invisible': [('email_getfrom','!=','DATA')]}" />
|
||||||
<field name='email_data_field' 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>
|
</group>
|
||||||
</page>
|
</page>
|
||||||
<page name="InfoAusgaben" string="Info Ausgaben/Channel Posten ">
|
<page name="InfoAusgaben" string="Info Ausgaben/Channel Posten ">
|
||||||
|
|||||||
@@ -51,22 +51,22 @@
|
|||||||
</field>
|
</field>
|
||||||
</record>
|
</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="name">dss_triggerconditions_tree</field>
|
||||||
<field name="model">dss.triggerconditions</field>
|
<field name="model">dss.triggerconditions</field>
|
||||||
<field name="priority" eval="16"/>
|
<field name="priority" eval="16"/>
|
||||||
<field name="arch" type="xml">
|
<field name="arch" type="xml">
|
||||||
<trigger_condition_view string="Trigger Aktionen">
|
<trigger_condition_view string="Trigger Aktionen">
|
||||||
<field name="triggerconditionname"/>
|
<field name="triggerconditionname"/>
|
||||||
</tree>
|
</trigger_condition_view>
|
||||||
</field>
|
</field>
|
||||||
</record>
|
</record>
|
||||||
|
-->
|
||||||
<record id="action_dss_triggerconditions_view" model="ir.actions.act_window">
|
<record id="action_dss_triggerconditions_view" model="ir.actions.act_window">
|
||||||
<field name="name">DigitalSignage TriggerBedingungen</field>
|
<field name="name">DigitalSignage TriggerBedingungen</field>
|
||||||
<field name="type">ir.actions.act_window</field>
|
<field name="type">ir.actions.act_window</field>
|
||||||
<field name="res_model">dss.triggerconditions</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="context">{}</field>
|
||||||
<field name="help" type="html">
|
<field name="help" type="html">
|
||||||
<p class="'o_view_nocontent_smiling_face">
|
<p class="'o_view_nocontent_smiling_face">
|
||||||
|
|||||||
@@ -53,6 +53,7 @@
|
|||||||
</field>
|
</field>
|
||||||
</record>
|
</record>
|
||||||
|
|
||||||
|
|
||||||
<record id="action_dss_trigger_groups_view" model="ir.actions.act_window">
|
<record id="action_dss_trigger_groups_view" model="ir.actions.act_window">
|
||||||
<field name="name">DigitalSignage Trigger Gruppen</field>
|
<field name="name">DigitalSignage Trigger Gruppen</field>
|
||||||
<field name="type">ir.actions.act_window</field>
|
<field name="type">ir.actions.act_window</field>
|
||||||
|
|||||||
@@ -90,11 +90,21 @@
|
|||||||
</field>
|
</field>
|
||||||
</record>
|
</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">
|
<record id="action_dss_trigger_view" model="ir.actions.act_window">
|
||||||
<field name="name">DigitalSignage Trigger</field>
|
<field name="name">DigitalSignage Trigger</field>
|
||||||
<field name="type">ir.actions.act_window</field>
|
<field name="type">ir.actions.act_window</field>
|
||||||
<field name="res_model">dss.triggertypes</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="context">{}</field>
|
||||||
<field name="help" type="html">
|
<field name="help" type="html">
|
||||||
<p class="'o_view_nocontent_smiling_face">
|
<p class="'o_view_nocontent_smiling_face">
|
||||||
|
|||||||
+15
-13
@@ -207,6 +207,14 @@
|
|||||||
action="action_dss_mediarelations_view"
|
action="action_dss_mediarelations_view"
|
||||||
sequence="60"/>
|
sequence="60"/>
|
||||||
|
|
||||||
|
<menuitem
|
||||||
|
id="menu_dss_binaries_systems"
|
||||||
|
name="Vertrag Binaries "
|
||||||
|
parent="menu_dss_div_internsetup"
|
||||||
|
action="action_dss_binaries_view"
|
||||||
|
sequence="61"/>
|
||||||
|
|
||||||
|
|
||||||
<menuitem
|
<menuitem
|
||||||
id="menu_dss_hardware_configurationen"
|
id="menu_dss_hardware_configurationen"
|
||||||
name="Hard.-/Software"
|
name="Hard.-/Software"
|
||||||
@@ -413,19 +421,6 @@
|
|||||||
action="action_dss_import_view"
|
action="action_dss_import_view"
|
||||||
sequence="10"/>
|
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
|
<menuitem
|
||||||
id="menu_dss_Nachrichten"
|
id="menu_dss_Nachrichten"
|
||||||
@@ -454,6 +449,13 @@
|
|||||||
action="action_dss_main_m2mmail"
|
action="action_dss_main_m2mmail"
|
||||||
sequence="50"/>
|
sequence="50"/>
|
||||||
|
|
||||||
|
<menuitem
|
||||||
|
id="menu_dss_linkmaillist"
|
||||||
|
name="TVLink Emailnachrichten"
|
||||||
|
parent="menu_dss_interntools"
|
||||||
|
action="action_dss_main_linkmail"
|
||||||
|
sequence="60"/>
|
||||||
|
|
||||||
<menuitem
|
<menuitem
|
||||||
id="menu_dss_contracts_ads_topics"
|
id="menu_dss_contracts_ads_topics"
|
||||||
name="Werbethemen TV verwalten"
|
name="Werbethemen TV verwalten"
|
||||||
|
|||||||
Reference in New Issue
Block a user