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