kleine Änderungen - vor Screendesigner
This commit is contained in:
parent
16b4c248d4
commit
285777451a
|
|
@ -18,6 +18,8 @@
|
||||||
'views/dss_projectstate.xml',
|
'views/dss_projectstate.xml',
|
||||||
'views/dss_systemtypen.xml',
|
'views/dss_systemtypen.xml',
|
||||||
'views/dss_mediarelations.xml',
|
'views/dss_mediarelations.xml',
|
||||||
|
'views/dss_display_templates.xml',
|
||||||
|
'views/dss_advertisementfields_templates.xml',
|
||||||
'views/dss_advertisementfields.xml',
|
'views/dss_advertisementfields.xml',
|
||||||
'views/dss_projects.xml',
|
'views/dss_projects.xml',
|
||||||
'views/dss_import.xml',
|
'views/dss_import.xml',
|
||||||
|
|
@ -26,6 +28,7 @@
|
||||||
'views/dss_mediafiles.xml',
|
'views/dss_mediafiles.xml',
|
||||||
'views/dss_addstructures.xml',
|
'views/dss_addstructures.xml',
|
||||||
'views/dss_geraetetypen.xml',
|
'views/dss_geraetetypen.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_screendesign.xml',
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,6 @@
|
||||||
from . import dss_activity_mixin
|
from . import dss_activity_mixin
|
||||||
from . import dss_marker
|
from . import dss_marker
|
||||||
|
from . import dss_onlinestate
|
||||||
from . import dss_settings
|
from . import dss_settings
|
||||||
from . import dss_trigger
|
from . import dss_trigger
|
||||||
from . import dss_ads
|
from . import dss_ads
|
||||||
|
|
@ -10,6 +11,8 @@ from . import dss_systemtypen
|
||||||
from . import dss_software
|
from . import dss_software
|
||||||
from . import dss_systems
|
from . import dss_systems
|
||||||
from . import dss_eventdays
|
from . import dss_eventdays
|
||||||
|
from . import dss_display_templates
|
||||||
|
from . import dss_advertisefields_templates
|
||||||
from . import dss_advertisefields
|
from . import dss_advertisefields
|
||||||
from . import dss_trigger
|
from . import dss_trigger
|
||||||
from . import dss_triggerexecute
|
from . import dss_triggerexecute
|
||||||
|
|
@ -24,4 +27,3 @@ from . import dss_invoices
|
||||||
from . import dss_importinvoicelist
|
from . import dss_importinvoicelist
|
||||||
from . import dss_web_contracts
|
from . import dss_web_contracts
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
|
@ -50,18 +50,74 @@ class dssadvertisefields(models.Model):
|
||||||
|
|
||||||
# uuid = fields.Char('UUID', required=True, translate=True)
|
# uuid = fields.Char('UUID', required=True, translate=True)
|
||||||
auto_feldname = fields.Char('Projekt_Feldname', default=lambda self: self._default_projektfeld(), required=True)
|
auto_feldname = fields.Char('Projekt_Feldname', default=lambda self: self._default_projektfeld(), required=True)
|
||||||
display = fields.Char('Designname')
|
display = fields.Char('Designname',tracking=True)
|
||||||
feldname = fields.Char('Feldname', required=True)
|
feldname = fields.Char('Feldname', required=True,tracking=True)
|
||||||
project = fields.Many2one('dss.projects' , string='Project', store=True)
|
project = fields.Many2one('dss.projects' , string='Project', store=True,tracking=True)
|
||||||
project_id = fields.Integer(related='project.projectid', string='Project ID')
|
project_id = fields.Integer(related='project.projectid', string='Project ID',tracking=True)
|
||||||
contract = fields.Many2many('dss.contracts' , string='Vertrag', store=True)
|
contract = fields.Many2many('dss.contracts' , string='Vertrag', store=True,tracking=True)
|
||||||
contract_save = fields.Many2one('dss.contracts' , string='Vertrag', store=True)
|
contract_save = fields.Many2one('dss.contracts' , string='Vertrag', store=True,tracking=True)
|
||||||
contract_project_id = fields.Integer(related='contract.project_id', string='Project ID')
|
contract_project_id = fields.Integer(related='contract.project_id', string='Project ID',tracking=True)
|
||||||
color_used = fields.Char(string='Color Index')
|
color_used = fields.Char(string='Color Index',tracking=True)
|
||||||
color_unused = fields.Char(string='Color Index')
|
color_unused = fields.Char(string='Color Index',tracking=True)
|
||||||
mediastructure = fields.Many2one('dss.adstructures',string='Feldaufbau',tracking=True)
|
mediastructure = fields.Many2one('dss.adstructures',string='Feldaufbau',tracking=True)
|
||||||
mediastructure_medias = fields.Many2many(related='mediastructure.medias',string='Inhalt')
|
mediastructure_medias = fields.Many2many(related='mediastructure.medias',string='Inhalt')
|
||||||
mediarelations = fields.One2many('dss.mediarelations','relname',tracking=True)
|
mediarelations = fields.One2many('dss.mediarelations','relname',tracking=True)
|
||||||
|
is_btn = fields.Boolean('Feld ist Button',help="Feld hat einen Button auf eineen TSS System ?",tracking=True, default=True)
|
||||||
|
|
||||||
|
|
||||||
|
btn_fromtemplate = fields.Many2one('dss.advertisefields.templates',tracking=True)
|
||||||
|
btn_pos_x = fields.Integer('Position im Display X (px)', tracking=True)
|
||||||
|
btn_pos_y = fields.Integer('Position im Display Y (px)', tracking=True)
|
||||||
|
btn_pos_w = fields.Integer('Breite des Feldes (px)', tracking=True)
|
||||||
|
btn_pos_h = fields.Integer('Höhe des Feldes (px)', tracking=True)
|
||||||
|
btn_name = fields.Char('Button name',tracking=True)
|
||||||
|
btn_fieldname = fields.Char('Feldname',tracking=True)
|
||||||
|
btn_visible = fields.Boolean('Feld wird angezeigt',tracking=True, default=True)
|
||||||
|
btn_active = fields.Boolean('Feld ist bedienbar/aktiv',tracking=True, default=True)
|
||||||
|
btn_action_inactive = fields.Integer('Inaktiv Klickaktion',help='Aktion die ausgeführt wird bei click auf inaktiven Button - >0 und nicht activ = Baustellenbild bringen', tracking=True)
|
||||||
|
btn_action_active = fields.Selection([('9','Spezialfenster'),('16','Internetfenster'),('3','Storry ausführen'),('2','Gallerie anzeigen'),('5','normales Verhalten'),('12','im Specialfenster das Fenster schliessen'),('14','im Specialfenster ein Bild anzeigen')],string='Aktive Klickaktion',help='Aktion die ausgeführt wird bei click auf Aktiven Button', tracking=True)
|
||||||
|
btn_playlist_filename = fields.Char('Playlistendatei',help='Bei Aktion-Story = Storrydatei', tracking=True)
|
||||||
|
btn_playlist_zuordnung = fields.Selection([('1','Standard Zuordnung - Pfad+SchemaID+File'),('20','Kunden Zuordnung - Pfad+KundenID+File'),('50','Gallerie Zuordnung - Pfad+GallerieID+File')], tracking=True)
|
||||||
|
btn_gallery_filename = fields.Char('Galleriedatei',help="Gallerie Datei - Ohne Pfad, und Ohne .GAL",tracking=True)
|
||||||
|
btn_gallery_id = fields.Char('Gallerie ID', tracking=True)
|
||||||
|
btn_gallery_rows = fields.Integer('Zeilen der Gallery', tracking=True)
|
||||||
|
btn_gallery_cols = fields.Integer('Spalten der Gallery', tracking=True)
|
||||||
|
btn_gallery_prv_w = fields.Integer('Gallery Bildpreview Breite', tracking=True)
|
||||||
|
btn_gallery_pev_h = fields.Integer('Gallery Bildpreview Höhe', tracking=True)
|
||||||
|
btn_has_timer = fields.Boolean('Button Timeout',tracking=True, default=True)
|
||||||
|
btn_has_timer_time = fields.Integer('Button Timer-Zeit', tracking=True)
|
||||||
|
btn_editable = fields.Boolean('Button Editierbar',tracking=True, default=True)
|
||||||
|
btn_special_actionimage = fields.Char('Anzeigebild Spezialform ', tracking=True)
|
||||||
|
btn_special_actionimage_x = fields.Integer('X-Position Anzeigebild', tracking=True)
|
||||||
|
btn_special_actionimage_y = fields.Integer('Y-Position Anzeigebild', tracking=True)
|
||||||
|
btn_special_actionimage_w = fields.Integer('Breite Anzeigebild', tracking=True)
|
||||||
|
btn_special_actionimage_h = fields.Integer('Hoehe Anzeigebild', tracking=True)
|
||||||
|
btn_special_actionimage_time = fields.Integer('Anzeigezeit Anzeigebild', tracking=True)
|
||||||
|
btn_center_video_1 = fields.Char('Zentralvideo 1', tracking=True)
|
||||||
|
btn_center_video_2 = fields.Char('Zentralvideo 1', tracking=True)
|
||||||
|
btn_center_video_3 = fields.Char('Zentralvideo 1', tracking=True)
|
||||||
|
btn_center_video_4 = fields.Char('Zentralvideo 1', tracking=True)
|
||||||
|
btn_text_1 = fields.Char('Textzeile 1', tracking=True)
|
||||||
|
btn_text_2 = fields.Char('Textzeile 2', tracking=True)
|
||||||
|
btn_text_3 = fields.Char('Textzeile 3', tracking=True)
|
||||||
|
btn_text_4 = fields.Char('Textzeile 4', tracking=True)
|
||||||
|
btn_text_1_visible = fields.Boolean('Textzeile 1 anzeigen',tracking=True, default=False)
|
||||||
|
btn_text_2_visible = fields.Boolean('Textzeile 1 anzeigen',tracking=True, default=False)
|
||||||
|
btn_text_3_visible = fields.Boolean('Textzeile 1 anzeigen',tracking=True, default=False)
|
||||||
|
btn_text_4_visible = fields.Boolean('Textzeile 1 anzeigen',tracking=True, default=False)
|
||||||
|
btn_text_1_pos_x = fields.Integer('Textzeile 1 X-Pos',help="xxxx direkter Zahlenwert , +/-xxxx relativ zu Button",tracking=True)
|
||||||
|
btn_text_1_pos_y = fields.Integer('Textzeile 1 Y-Pos',help="xxxx direkter Zahlenwert , +/-xxxx relativ zu Button",tracking=True)
|
||||||
|
btn_text_2_pos_x = fields.Integer('Textzeile 2 X-Pos',help="xxxx direkter Zahlenwert , +/-xxxx relativ zu Button",tracking=True)
|
||||||
|
btn_text_2_pos_y = fields.Integer('Textzeile 2 Y-Pos',help="xxxx direkter Zahlenwert , +/-xxxx relativ zu Button",tracking=True)
|
||||||
|
btn_text_3_pos_x = fields.Integer('Textzeile 3 X-Pos',help="xxxx direkter Zahlenwert , +/-xxxx relativ zu Button",tracking=True)
|
||||||
|
btn_text_3_pos_y = fields.Integer('Textzeile 3 Y-Pos',help="xxxx direkter Zahlenwert , +/-xxxx relativ zu Button",tracking=True)
|
||||||
|
btn_text_4_pos_x = fields.Integer('Textzeile 4 X-Pos',help="xxxx direkter Zahlenwert , +/-xxxx relativ zu Button",tracking=True)
|
||||||
|
btn_text_4_pos_y = fields.Integer('Textzeile 4 Y-Pos',help="xxxx direkter Zahlenwert , +/-xxxx relativ zu Button",tracking=True)
|
||||||
|
btn_text_1_font = fields.Char('Textzeile 1 Schriftart', tracking=True)
|
||||||
|
btn_text_2_font = fields.Char('Textzeile 2 Schriftart', tracking=True)
|
||||||
|
btn_text_3_font = fields.Char('Textzeile 3 Schriftart', tracking=True)
|
||||||
|
btn_text_4_font = fields.Char('Textzeile 4 Schriftart', tracking=True)
|
||||||
|
|
||||||
|
|
||||||
def _default_projektfeld(self):
|
def _default_projektfeld(self):
|
||||||
return "000_unbekannt"
|
return "000_unbekannt"
|
||||||
|
|
@ -78,7 +134,7 @@ class dssadvertisefields(models.Model):
|
||||||
def _onchange_project(self):
|
def _onchange_project(self):
|
||||||
autoid = ""
|
autoid = ""
|
||||||
autoid = str(self.project_id)+"_"+str(self.feldname)
|
autoid = str(self.project_id)+"_"+str(self.feldname)
|
||||||
self.auto_feldname =autoid
|
self.auto_feldname = autoid
|
||||||
|
|
||||||
@api.onchange('contract')
|
@api.onchange('contract')
|
||||||
def _onchange_contract(self):
|
def _onchange_contract(self):
|
||||||
|
|
@ -116,3 +172,51 @@ class dssadvertisefields(models.Model):
|
||||||
for record in self:
|
for record in self:
|
||||||
if not record.contract:
|
if not record.contract:
|
||||||
record.contract = record.contract_save
|
record.contract = record.contract_save
|
||||||
|
|
||||||
|
def pyactiontaketemplate(self):
|
||||||
|
action = (self.env["confirmation.wizard"].confirm_message(_("Das Template wirklich übernehmen ?"),title="Bitte bestätigen",method="taketemplate",records=self,callback_params={"template":self.id})
|
||||||
|
)
|
||||||
|
if action:
|
||||||
|
return action
|
||||||
|
|
||||||
|
def taketemplate(self,template):
|
||||||
|
self.btn_pos_x = self.btn_fromtemplate.btn_pos_x
|
||||||
|
self.btn_pos_y = self.btn_fromtemplate.btn_pos_y
|
||||||
|
self.btn_pos_w = self.btn_fromtemplate.btn_pos_w
|
||||||
|
self.btn_pos_h = self.btn_fromtemplate.btn_pos_h
|
||||||
|
self.btn_name = self.btn_fromtemplate.btn_name
|
||||||
|
self.btn_fieldname = self.btn_fromtemplate.btn_fieldname
|
||||||
|
self.btn_visible = self.btn_fromtemplate.btn_visible
|
||||||
|
self.btn_active = self.btn_fromtemplate.btn_active
|
||||||
|
self.btn_action_inactive = self.btn_fromtemplate.btn_action_inactive
|
||||||
|
self.btn_action_active = self.btn_fromtemplate.btn_action_active
|
||||||
|
self.btn_playlist_zuordnung = self.btn_fromtemplate.btn_playlist_zuordnung
|
||||||
|
self.btn_gallery_rows = self.btn_fromtemplate.btn_gallery_rows
|
||||||
|
self.btn_gallery_cols = self.btn_fromtemplate.btn_gallery_cols
|
||||||
|
self.btn_gallery_prv_w = self.btn_fromtemplate.btn_gallery_pev_w
|
||||||
|
self.btn_gallery_pev_h = self.btn_fromtemplate.btn_gallery_pev_h
|
||||||
|
self.btn_has_timer = self.btn_fromtemplate.btn_has_timer
|
||||||
|
self.btn_has_timer_time = self.btn_fromtemplate.btn_has_timer_time
|
||||||
|
self.btn_editable = self.btn_fromtemplate.btn_editable
|
||||||
|
self.btn_special_actionimage = self.btn_fromtemplate.btn_special_actionimage
|
||||||
|
self.btn_special_actionimage_x = self.btn_fromtemplate.btn_special_actionimage_x
|
||||||
|
self.btn_special_actionimage_y = self.btn_fromtemplate.btn_special_actionimage_y
|
||||||
|
self.btn_special_actionimage_w = self.btn_fromtemplate.btn_special_actionimage_w
|
||||||
|
self.btn_special_actionimage_h = self.btn_fromtemplate.btn_special_actionimage_h
|
||||||
|
self.btn_special_actionimage_time = self.btn_fromtemplate.btn_special_actionimage_time
|
||||||
|
self.btn_text_1_visible = self.btn_fromtemplate.btn_text_1_visible
|
||||||
|
self.btn_text_2_visible = self.btn_fromtemplate.btn_text_2_visible
|
||||||
|
self.btn_text_3_visible = self.btn_fromtemplate.btn_text_3_visible
|
||||||
|
self.btn_text_4_visible = self.btn_fromtemplate.btn_text_4_visible
|
||||||
|
self.btn_text_1_pos_x = self.btn_fromtemplate.self.btn_text_1_pos_x
|
||||||
|
self.btn_text_1_pos_y = self.btn_fromtemplate.self.btn_text_1_pos_y
|
||||||
|
self.btn_text_2_pos_x = self.btn_fromtemplate.self.btn_text_2_pos_x
|
||||||
|
self.btn_text_2_pos_y = self.btn_fromtemplate.self.btn_text_2_pos_y
|
||||||
|
self.btn_text_3_pos_x = self.btn_fromtemplate.self.btn_text_3_pos_x
|
||||||
|
self.btn_text_3_pos_y = self.btn_fromtemplate.self.btn_text_3_pos_y
|
||||||
|
self.btn_text_4_pos_x = self.btn_fromtemplate.self.btn_text_4_pos_x
|
||||||
|
self.btn_text_4_pos_y = self.btn_fromtemplate.self.btn_text_4_pos_y
|
||||||
|
self.btn_text_1_font = self.btn_fromtemplate.btn_text_1_font
|
||||||
|
self.btn_text_2_font = self.btn_fromtemplate.btn_text_2_font
|
||||||
|
self.btn_text_3_font = self.btn_fromtemplate.btn_text_3_font
|
||||||
|
self.btn_text_4_font = self.btn_fromtemplate.btn_text_4_font
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,108 @@
|
||||||
|
import ast
|
||||||
|
import datetime
|
||||||
|
import json
|
||||||
|
import re
|
||||||
|
import uuid
|
||||||
|
import logging
|
||||||
|
import base64
|
||||||
|
import subprocess
|
||||||
|
import tempfile
|
||||||
|
import easywebdav
|
||||||
|
import os
|
||||||
|
import os.path
|
||||||
|
|
||||||
|
|
||||||
|
from odoo import api, fields, models, _
|
||||||
|
from odoo import tools
|
||||||
|
from odoo.exceptions import ValidationError
|
||||||
|
from datetime import date
|
||||||
|
from datetime import datetime
|
||||||
|
from dateutil.relativedelta import relativedelta
|
||||||
|
from pyffmpeg import FFmpeg
|
||||||
|
from tuya_iot import TuyaOpenAPI, TUYA_LOGGER
|
||||||
|
from tuya_connector import TuyaOpenAPI, TUYA_LOGGER
|
||||||
|
import sys
|
||||||
|
|
||||||
|
TUYA_LOGGER.setLevel(logging.DEBUG)
|
||||||
|
_logger = logging.getLogger(__name__)
|
||||||
|
|
||||||
|
|
||||||
|
class dssadvertisefields(models.Model):
|
||||||
|
|
||||||
|
@api.model
|
||||||
|
def create(self,vals):
|
||||||
|
result = super().create(vals)
|
||||||
|
return result
|
||||||
|
|
||||||
|
_name = "dss.advertisefields.templates"
|
||||||
|
_description = "DigitalSignage Werbefeldvorlage"
|
||||||
|
_inherit = ['mail.thread','mail.activity.mixin']
|
||||||
|
_rec_name = "templatefeldname"
|
||||||
|
# _inherit = ['mail.thread', 'mail.activity.mixin']
|
||||||
|
uuid = fields.Char(default=lambda self: self._default_uuid(), required=True, readonly=True, copy=False, string='UUID')
|
||||||
|
date_create = fields.Date('Erstellungsdatum',default=lambda self: self._default_create_date())
|
||||||
|
date_lastedit = fields.Date('Änderungsdatum')
|
||||||
|
user_create = fields.Char('Erstellungsuser',default=lambda self: self._default_create_user())
|
||||||
|
user_lastedit = fields.Char('Änderungsuser')
|
||||||
|
|
||||||
|
# uuid = fields.Char('UUID', required=True, translate=True)
|
||||||
|
templatefeldname = fields.Char('Template Feldname', required=True,tracking=True)
|
||||||
|
display = fields.Char('Ziel Feldname',tracking=True)
|
||||||
|
displaytemplate = fields.Many2one('dss.display.templates',String="Display Vorlage",tracking=True)
|
||||||
|
feldname = fields.Char('Ziel Feldname', required=True,tracking=True)
|
||||||
|
color_used = fields.Char(string='Color Index',tracking=True)
|
||||||
|
color_unused = fields.Char(string='Color Index',tracking=True)
|
||||||
|
mediastructure = fields.Many2one('dss.adstructures',string='Feldaufbau',tracking=True)
|
||||||
|
|
||||||
|
|
||||||
|
btn_pos_x = fields.Integer('Position im Display X (px)', tracking=True)
|
||||||
|
btn_pos_y = fields.Integer('Position im Display Y (px)', tracking=True)
|
||||||
|
btn_pos_w = fields.Integer('Breite des Feldes (px)', tracking=True)
|
||||||
|
btn_pos_h = fields.Integer('Höhe des Feldes (px)', tracking=True)
|
||||||
|
btn_name = fields.Char('Button name',tracking=True)
|
||||||
|
btn_fieldname = fields.Char('Feldname am Display',tracking=True)
|
||||||
|
btn_visible = fields.Boolean('Feld wird angezeigt',tracking=True, default=True)
|
||||||
|
btn_active = fields.Boolean('Feld ist bedienbar/aktiv',tracking=True, default=True)
|
||||||
|
btn_action_inactive = fields.Integer('Inaktiv Klickaktion',help='Aktion die ausgeführt wird bei click auf inaktiven Button - >0 und nicht activ = Baustellenbild bringen', tracking=True)
|
||||||
|
btn_action_active = fields.Selection([('9','Spezialfenster'),('16','Internetfenster'),('3','Storry ausführen'),('2','Gallerie anzeigen'),('5','normales Verhalten'),('12','im Specialfenster das Fenster schliessen'),('14','im Specialfenster ein Bild anzeigen')],string='Aktive Klickaktion',help='Aktion die ausgeführt wird bei click auf Aktiven Button', tracking=True)
|
||||||
|
btn_playlist_zuordnung = fields.Selection([('','Standard Zuordnung - Pfad+SchemaID+File'),('20','Kunden Zuordnung - Pfad+KundenID+File'),('50','Gallerie Zuordnung - Pfad+GallerieID+File')], tracking=True)
|
||||||
|
btn_gallery_rows = fields.Integer('Zeilen der Gallery', tracking=True)
|
||||||
|
btn_gallery_cols = fields.Integer('Spalten der Gallery', tracking=True)
|
||||||
|
btn_gallery_prv_w = fields.Integer('Gallery Bildpreview Breite', tracking=True)
|
||||||
|
btn_gallery_pev_h = fields.Integer('Gallery Bildpreview Höhe', tracking=True)
|
||||||
|
btn_has_timer = fields.Boolean('Button Timeout',tracking=True, default=False)
|
||||||
|
btn_has_timer_time = fields.Integer('Button Timer-Zeit', tracking=True)
|
||||||
|
btn_editable = fields.Boolean('Button Editierbar',tracking=True, default=True)
|
||||||
|
btn_special_actionimage = fields.Char('Anzeigebild Spezialform ', tracking=True)
|
||||||
|
btn_special_actionimage_x = fields.Integer('X-Position Anzeigebild', tracking=True)
|
||||||
|
btn_special_actionimage_y = fields.Integer('Y-Position Anzeigebild', tracking=True)
|
||||||
|
btn_special_actionimage_w = fields.Integer('Breite Anzeigebild', tracking=True)
|
||||||
|
btn_special_actionimage_h = fields.Integer('Hoehe Anzeigebild', tracking=True)
|
||||||
|
btn_special_actionimage_time = fields.Integer('Anzeigezeit Anzeigebild', tracking=True)
|
||||||
|
btn_text_1_visible = fields.Boolean('Textzeile 1 anzeigen',tracking=True, default=False)
|
||||||
|
btn_text_2_visible = fields.Boolean('Textzeile 1 anzeigen',tracking=True, default=False)
|
||||||
|
btn_text_3_visible = fields.Boolean('Textzeile 1 anzeigen',tracking=True, default=False)
|
||||||
|
btn_text_4_visible = fields.Boolean('Textzeile 1 anzeigen',tracking=True, default=False)
|
||||||
|
btn_text_1_pos_x = fields.Integer('Textzeile 1 X-Pos',help="xxxx direkter Zahlenwert , +/-xxxx relativ zu Button",tracking=True)
|
||||||
|
btn_text_1_pos_y = fields.Integer('Textzeile 1 Y-Pos',help="xxxx direkter Zahlenwert , +/-xxxx relativ zu Button", tracking=True)
|
||||||
|
btn_text_2_pos_x = fields.Integer('Textzeile 2 X-Pos',help="xxxx direkter Zahlenwert , +/-xxxx relativ zu Button", tracking=True)
|
||||||
|
btn_text_2_pos_y = fields.Integer('Textzeile 2 Y-Pos',help="xxxx direkter Zahlenwert , +/-xxxx relativ zu Button", tracking=True)
|
||||||
|
btn_text_3_pos_x = fields.Integer('Textzeile 3 X-Pos',help="xxxx direkter Zahlenwert , +/-xxxx relativ zu Button", tracking=True)
|
||||||
|
btn_text_3_pos_y = fields.Integer('Textzeile 3 Y-Pos',help="xxxx direkter Zahlenwert , +/-xxxx relativ zu Button", tracking=True)
|
||||||
|
btn_text_4_pos_x = fields.Integer('Textzeile 4 X-Pos',help="xxxx direkter Zahlenwert , +/-xxxx relativ zu Button", tracking=True)
|
||||||
|
btn_text_4_pos_y = fields.Integer('Textzeile 4 Y-Pos',help="xxxx direkter Zahlenwert , +/-xxxx relativ zu Button", tracking=True)
|
||||||
|
btn_text_1_font = fields.Char('Textzeile 1 Schriftart', tracking=True)
|
||||||
|
btn_text_2_font = fields.Char('Textzeile 2 Schriftart', tracking=True)
|
||||||
|
btn_text_3_font = fields.Char('Textzeile 3 Schriftart', tracking=True)
|
||||||
|
btn_text_4_font = fields.Char('Textzeile 4 Schriftart', tracking=True)
|
||||||
|
|
||||||
|
|
||||||
|
def _default_create_date(self):
|
||||||
|
return str(date.today())
|
||||||
|
|
||||||
|
def _default_create_user(self):
|
||||||
|
return str(self.env.user.name)
|
||||||
|
|
||||||
|
@api.model
|
||||||
|
def _default_uuid(self):
|
||||||
|
return str(uuid.uuid4())
|
||||||
|
|
@ -0,0 +1,61 @@
|
||||||
|
import ast
|
||||||
|
import datetime
|
||||||
|
import json
|
||||||
|
import re
|
||||||
|
import uuid
|
||||||
|
import logging
|
||||||
|
import base64
|
||||||
|
import subprocess
|
||||||
|
import tempfile
|
||||||
|
import easywebdav
|
||||||
|
import os
|
||||||
|
import os.path
|
||||||
|
|
||||||
|
|
||||||
|
from odoo import api, fields, models, _
|
||||||
|
from odoo import tools
|
||||||
|
from odoo.exceptions import ValidationError
|
||||||
|
from datetime import date
|
||||||
|
from datetime import datetime
|
||||||
|
from dateutil.relativedelta import relativedelta
|
||||||
|
from pyffmpeg import FFmpeg
|
||||||
|
from tuya_iot import TuyaOpenAPI, TUYA_LOGGER
|
||||||
|
from tuya_connector import TuyaOpenAPI, TUYA_LOGGER
|
||||||
|
import sys
|
||||||
|
|
||||||
|
TUYA_LOGGER.setLevel(logging.DEBUG)
|
||||||
|
_logger = logging.getLogger(__name__)
|
||||||
|
|
||||||
|
|
||||||
|
class dssadvertisefields(models.Model):
|
||||||
|
|
||||||
|
@api.model
|
||||||
|
def create(self,vals):
|
||||||
|
result = super().create(vals)
|
||||||
|
return result
|
||||||
|
|
||||||
|
_name = "dss.display.templates"
|
||||||
|
_description = "DigitalSignage Displayvorlage"
|
||||||
|
_inherit = ['mail.thread','mail.activity.mixin']
|
||||||
|
_rec_name = "displayname"
|
||||||
|
# _inherit = ['mail.thread', 'mail.activity.mixin']
|
||||||
|
uuid = fields.Char(default=lambda self: self._default_uuid(), required=True, readonly=True, copy=False, string='UUID')
|
||||||
|
date_create = fields.Date('Erstellungsdatum',default=lambda self: self._default_create_date())
|
||||||
|
date_lastedit = fields.Date('Änderungsdatum')
|
||||||
|
user_create = fields.Char('Erstellungsuser',default=lambda self: self._default_create_user())
|
||||||
|
user_lastedit = fields.Char('Änderungsuser')
|
||||||
|
|
||||||
|
# uuid = fields.Char('UUID', required=True, translate=True)
|
||||||
|
displayname = fields.Char('Template Feldname', required=True,tracking=True)
|
||||||
|
feldtemplates = fields.Many2many('dss.advertisefields.templates' , string='Vertrag', store=True,tracking=True)
|
||||||
|
|
||||||
|
|
||||||
|
def _default_create_date(self):
|
||||||
|
return str(date.today())
|
||||||
|
|
||||||
|
def _default_create_user(self):
|
||||||
|
return str(self.env.user.name)
|
||||||
|
|
||||||
|
@api.model
|
||||||
|
def _default_uuid(self):
|
||||||
|
return str(uuid.uuid4())
|
||||||
|
|
@ -0,0 +1,38 @@
|
||||||
|
import uuid
|
||||||
|
import logging
|
||||||
|
import datetime
|
||||||
|
|
||||||
|
from odoo import api, fields, models, _
|
||||||
|
from odoo import tools
|
||||||
|
from odoo.exceptions import ValidationError
|
||||||
|
from dateutil.relativedelta import relativedelta
|
||||||
|
import sys
|
||||||
|
|
||||||
|
_logger = logging.getLogger(__name__)
|
||||||
|
|
||||||
|
class dssonlinestate(models.Model):
|
||||||
|
_name = "dss.onlinestate"
|
||||||
|
_description = "DigitalSignage Onlinestati"
|
||||||
|
_inherit = ['mail.thread','mail.activity.mixin']
|
||||||
|
_rec_name = "uuid"
|
||||||
|
uuid = fields.Char(default=lambda self: self._default_uuid(), required=True, readonly=True, copy=False, string='UUID')
|
||||||
|
date_create = fields.Datetime('Erstellungsdatum',default=lambda self: self._default_create_date())
|
||||||
|
date_lastedit = fields.Datetime('Änderungsdatum')
|
||||||
|
user_create = fields.Char('Erstellungsuser',default=lambda self: self._default_create_user())
|
||||||
|
user_lastedit = fields.Char('Änderungsuser')
|
||||||
|
project = fields.Many2one('dss.projects',string='Projekt des Systems',tracking=True)
|
||||||
|
number = fields.Integer('Player/System Nr',tracking=True)
|
||||||
|
online = fields.Boolean('Online',tracking=True)
|
||||||
|
datavolume = fields.Boolean('Leeres Datenvolumen',tracking=True)
|
||||||
|
|
||||||
|
@api.model
|
||||||
|
def _default_uuid(self):
|
||||||
|
return str(uuid.uuid4())
|
||||||
|
|
||||||
|
def _default_create_date(self):
|
||||||
|
return datetime.datetime.now()
|
||||||
|
|
||||||
|
def _default_create_user(self):
|
||||||
|
return str(self.env.user.name)
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -12,6 +12,7 @@ import requests
|
||||||
import json
|
import json
|
||||||
from types import SimpleNamespace
|
from types import SimpleNamespace
|
||||||
|
|
||||||
|
|
||||||
import easywebdav
|
import easywebdav
|
||||||
import os
|
import os
|
||||||
import os.path
|
import os.path
|
||||||
|
|
@ -112,8 +113,31 @@ class dssprojects(models.Model):
|
||||||
|
|
||||||
marker_list = fields.Many2many('dss.marker', string='vorhandene Marker', tracking=True)
|
marker_list = fields.Many2many('dss.marker', string='vorhandene Marker', tracking=True)
|
||||||
|
|
||||||
onlinestate = fields.Char('OnlineColor',compute='_compute_getonlinestate')
|
onlinestate_1 = fields.Char('OnlineColor_1')
|
||||||
playername = fields.Char('Name des Players', tracking=True)
|
playername_1 = fields.Char('Name des Players_1', tracking=True)
|
||||||
|
onlinestate_2 = fields.Char('OnlineColor_2')
|
||||||
|
playername_2 = fields.Char('Name des Players_2', tracking=True)
|
||||||
|
onlinestate_3 = fields.Char('OnlineColor_3')
|
||||||
|
playername_3 = fields.Char('Name des Players_3', tracking=True)
|
||||||
|
|
||||||
|
Rportid_1 = fields.Char('RPort ID 1', tracking=True)
|
||||||
|
Rportid_2 = fields.Char('RPort ID 2', tracking=True)
|
||||||
|
Rportid_3 = fields.Char('RPort ID 3', tracking=True)
|
||||||
|
|
||||||
|
issim = fields.Boolean('Sim Karte genutzt ?', tracking=True)
|
||||||
|
|
||||||
|
simid_1 = fields.Char('Simkarte Nr 1', tracking=True)
|
||||||
|
simstart_1 = fields.Char('Simkarte 1 Vertr.start', tracking=True)
|
||||||
|
simstart_DVEmpty_1 = fields.Boolean('Simkarte 1 DV leer', tracking=True)
|
||||||
|
simstart_DVEmpty_1_lastdate = fields.Date('Simkarte 1 Leerdatum', tracking=True)
|
||||||
|
simid_2 = fields.Char('Simkarte Nr 2', tracking=True)
|
||||||
|
simstart_2 = fields.Char('Simkarte 2 Vertr.start', tracking=True)
|
||||||
|
simstart_DVEmpty_2 = fields.Boolean('Simkarte 2 DV leer', tracking=True)
|
||||||
|
simstart_DVEmpty_2_lastdate = fields.Date('Simkarte 2 Leerdatum', tracking=True)
|
||||||
|
simid_3 = fields.Char('Simkarte Nr 3', tracking=True)
|
||||||
|
simstart_3 = fields.Char('Simkarte 3 Vertr.start', tracking=True)
|
||||||
|
simstart_DVEmpty_3 = fields.Boolean('Simkarte 3 DV leer', tracking=True)
|
||||||
|
simstart_DVEmpty_3_lastdate = fields.Date('Simkarte 3 Leerdatum', tracking=True)
|
||||||
|
|
||||||
@api.model
|
@api.model
|
||||||
def _read_group_system_ids(self, stages, domain, order):
|
def _read_group_system_ids(self, stages, domain, order):
|
||||||
|
|
@ -236,38 +260,114 @@ class dssprojects(models.Model):
|
||||||
|
|
||||||
@api.model
|
@api.model
|
||||||
def compute_getonlinestate2(self,project):
|
def compute_getonlinestate2(self,project):
|
||||||
proj = self.env['dss.projects'].search([('id',"=",project)])
|
projekte = self.env['dss.projects'].search([('grundsystem_showonlinestate','=',True)])
|
||||||
|
for pro in projekte:
|
||||||
|
self.compute_getonlinestate_single(pro)
|
||||||
|
|
||||||
|
def compute_getonlinestate_single(self,project):
|
||||||
|
#proj = self.env['dss.projects'].search([('id',"=",project.id)])
|
||||||
|
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)
|
||||||
_logger.info("Projekt Online Settings Check "+str(proj.grundsystem_showonlinestate_type)+' '+str(self)+' '+str(project))
|
_logger.info("Projekt Online Settings Check "+str(proj.grundsystem_showonlinestate_type)+' '+str(self)+' '+str(project))
|
||||||
if (proj.grundsystem_showonlinestate_type == 'RPORT'):
|
if (proj.grundsystem_showonlinestate_type == 'RPORT'):
|
||||||
_logger.info("Projekt RPORT Settings ")
|
playername = proj["Rportid_1"]
|
||||||
colorval = colorOff
|
_logger.info("Projekt RPORT Settings "+str(playername) )
|
||||||
|
if playername!=False:
|
||||||
|
rporturl = str(self.env['dss.settings'].search([], limit=1).rporturl)+'/api/v1/clients/'
|
||||||
|
rportusername = str(self.env['dss.settings'].search([], limit=1).rportusername)
|
||||||
|
rporttoken = str(self.env['dss.settings'].search([], limit=1).rporttoken)
|
||||||
|
auth = (rportusername, rporttoken)
|
||||||
|
for plnr in range(1,4):
|
||||||
|
playername = proj["Rportid_"+str(plnr)]
|
||||||
|
if playername:
|
||||||
|
_logger.info("RPORT request :"+str(rporturl)+str(playername))
|
||||||
|
r = requests.get(str(rporturl)+str(playername), auth=auth, verify=False)
|
||||||
|
_logger.info("RPORT answere :"+str(r.status_code)+' - '+str(r.content))
|
||||||
|
if (str(r.status_code) == "200"):
|
||||||
|
content = str(r.json())
|
||||||
|
index = content.find("connection_state")
|
||||||
|
content = content[index+20:]
|
||||||
|
index = content.find("',")
|
||||||
|
token = content[:index]
|
||||||
|
if (self.env['dss.onlinestate'].search([("project","=",proj.id),("number","=",plnr)], order="date_create desc", limit=1) == False):
|
||||||
|
self.env['dss.onlinestate'].create({'project':proj.id,'number':plnr,'online':False})
|
||||||
|
laststate = self.env['dss.onlinestate'].search([("project","=",proj.id),("number","=",plnr)], order="date_create desc", limit=1).online
|
||||||
|
_logger.info("RPORT answere :"+str(token)+"/"+str(laststate))
|
||||||
|
if token == 'connected':
|
||||||
|
colorval = colorOn
|
||||||
|
if not laststate:
|
||||||
|
self.env['dss.onlinestate'].create({'project':proj.id,'number':plnr,'online':True})
|
||||||
|
else:
|
||||||
|
colorval = colorOff
|
||||||
|
if laststate:
|
||||||
|
self.env['dss.onlinestate'].create({'project':proj.id,'number':plnr,'online':False})
|
||||||
|
else:
|
||||||
|
colorval = colorOff
|
||||||
|
else:
|
||||||
|
colorval = 0
|
||||||
|
proj['onlinestate_'+str(plnr)]=colorval
|
||||||
|
else:
|
||||||
|
colorval = 0
|
||||||
|
proj['onlinestate_1']=colorval
|
||||||
elif (proj.grundsystem_showonlinestate_type == 'VNNOX'):
|
elif (proj.grundsystem_showonlinestate_type == 'VNNOX'):
|
||||||
vnurl = str(self.env['dss.settings'].search([], limit=1).vnnoxurl)+'/Rest/Logon'
|
vnurl = str(self.env['dss.settings'].search([], limit=1).vnnoxurl)+'/Rest/Logon'
|
||||||
vnusername = str(self.env['dss.settings'].search([], limit=1).vnnoxusername)
|
vnusername = str(self.env['dss.settings'].search([], limit=1).vnnoxusername)
|
||||||
vnpassword = str(self.env['dss.settings'].search([], limit=1).vnnoxpassword)
|
vnpassword = str(self.env['dss.settings'].search([], limit=1).vnnoxpassword)
|
||||||
_logger.info("Projekt VNNOX Settings " + str(vnurl))
|
# _logger.info("Projekt VNNOX Settings " + str(vnurl))
|
||||||
r = requests.post(vnurl, json={"password": vnpassword,"username": vnusername})
|
r = requests.post(vnurl, json={"password": vnpassword,"username": vnusername})
|
||||||
_logger.info("Projekt VNNOX Settings Result " + str(r.status_code))
|
|
||||||
if (str(r.status_code) == "200"):
|
if (str(r.status_code) == "200"):
|
||||||
content = str(r.json())
|
content = str(r.json())
|
||||||
index = content.find("token")
|
index = content.find("token")
|
||||||
content = content[index+9:]
|
content = content[index+9:]
|
||||||
index = content.find("',")
|
index = content.find("',")
|
||||||
token = content[:index]
|
token = content[:index]
|
||||||
_logger.info("Projekt VNNOX Settings Token : /" + str(token)+"/")
|
for plnr in range(1,4):
|
||||||
vnurl_getPlayer = str(self.env['dss.settings'].search([], limit=1).vnnoxurl)+'/Rest/Player?offset=0&limit=10&sort=name&sortType=asc&search='+str(proj.playername)
|
playername = proj["playername_"+str(plnr)]
|
||||||
headers = {'token': token}
|
if playername!=False:
|
||||||
r = requests.get(vnurl_getPlayer, headers=headers)
|
# _logger.info("Projekt VNNOX Settings Token : /" + str(token)+"/")
|
||||||
if (str(r.status_code) == "200"):
|
vnurl_getPlayer = str(self.env['dss.settings'].search([], limit=1).vnnoxurl)+'/Rest/Player?offset=0&limit=10&sort=name&sortType=asc&search='+str(playername)
|
||||||
content = str(r.json())
|
headers = {'token': token}
|
||||||
_logger.info("Projekt VNNOX Settings Data : /" + str(content)+"/")
|
r = requests.get(vnurl_getPlayer, headers=headers)
|
||||||
else:
|
if (str(r.status_code) == "200"):
|
||||||
colorval = "#a0a0a0"
|
_logger.info("Projekt VNNOX Settings Data : /" + str(r.content)+"/")
|
||||||
colorval = colorOff
|
resj = json.loads(r.content)
|
||||||
|
if resj["data"]["count"] == "1":
|
||||||
|
if (self.env['dss.onlinestate'].search([("project","=",proj.id),("number","=",plnr)], order="date_create desc", limit=1) == False):
|
||||||
|
self.env['dss.onlinestate'].create({'project':proj.id,'number':plnr,'online':False})
|
||||||
|
laststate = self.env['dss.onlinestate'].search([("project","=",proj.id),("number","=",plnr)], order="date_create desc", limit=1).online
|
||||||
|
_logger.info("Projekt VNNOX Settings Data : /" + str(resj["data"]["playerInfo"][0]["online"])+"/"+str(laststate))
|
||||||
|
if resj["data"]["playerInfo"][0]["online"] == "1":
|
||||||
|
colorval = colorOn
|
||||||
|
if not laststate:
|
||||||
|
self.env['dss.onlinestate'].create({'project':proj.id,'number':plnr,'online':True})
|
||||||
|
else:
|
||||||
|
colorval = colorOff
|
||||||
|
if laststate:
|
||||||
|
self.env['dss.onlinestate'].create({'project':proj.id,'number':plnr,'online':False})
|
||||||
|
else:
|
||||||
|
colorval = "#a0a0a0"
|
||||||
|
else:
|
||||||
|
colorval = "#a0a0a0"
|
||||||
|
proj['onlinestate_'+str(plnr)]=colorval
|
||||||
|
else:
|
||||||
|
colorval = "0"
|
||||||
|
proj['onlinestate_'+str(plnr)]=colorval
|
||||||
else:
|
else:
|
||||||
colorval = "#a0a0a0"
|
colorval = "#a0a0a0"
|
||||||
|
proj['onlinestate_1']=colorval
|
||||||
else:
|
else:
|
||||||
colorval = "#a0a0a0"
|
colorval = "#a0a0a0"
|
||||||
proj.onlinestate = colorval
|
proj['onlinestate_1']=colorval
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
def method(self):
|
||||||
|
return (
|
||||||
|
self.env["confirmation.wizard"]
|
||||||
|
.with_context(hide_cancel=True)
|
||||||
|
.confirm_no_action_message(
|
||||||
|
message="Message",
|
||||||
|
title="Notification"
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
@ -60,7 +60,7 @@ class dssSettings(models.Model):
|
||||||
vnnoxpassword = fields.Char('VNNox Password',tracking=True)
|
vnnoxpassword = fields.Char('VNNox Password',tracking=True)
|
||||||
rporturl = fields.Char('RPort URL',tracking=True)
|
rporturl = fields.Char('RPort URL',tracking=True)
|
||||||
rportusername = fields.Char('RPort Username',tracking=True)
|
rportusername = fields.Char('RPort Username',tracking=True)
|
||||||
rportpassword = fields.Char('RPort Password',tracking=True)
|
rporttoken = fields.Char('RPort API Token',tracking=True)
|
||||||
|
|
||||||
|
|
||||||
def _get_settingvalue(self,valuename):
|
def _get_settingvalue(self,valuename):
|
||||||
|
|
|
||||||
|
|
@ -407,6 +407,7 @@ class dsstriggeractions(models.Model):
|
||||||
triggeractionname = fields.Char('Triggeraktionname',tracking=True)
|
triggeractionname = fields.Char('Triggeraktionname',tracking=True)
|
||||||
triggeractiontyp = fields.Selection([('EMAIL','EMail an senden'),('NOTIZ','Notitz erstellen'),('MESSA','Message an Follower senden'),('CHANNEL','Message an Channel senden'),('ACTIV','Aufgabe erzeugen'),('MARKER','Marker eintragen'),('DSEDIT','Akt. Datensatz ändern'),('TUYA','Tuya Aktion auslössen'),('PRUEF','Wert prüfen')],'Aktionstyp',tracking=True)
|
triggeractiontyp = fields.Selection([('EMAIL','EMail an senden'),('NOTIZ','Notitz erstellen'),('MESSA','Message an Follower senden'),('CHANNEL','Message an Channel senden'),('ACTIV','Aufgabe erzeugen'),('MARKER','Marker eintragen'),('DSEDIT','Akt. Datensatz ändern'),('TUYA','Tuya Aktion auslössen'),('PRUEF','Wert prüfen')],'Aktionstyp',tracking=True)
|
||||||
email_getfrom = fields.Selection([('FIX','Email fest hinterlegt'),('DATA','Email in Feld hinterlegt')],'Emailadresse von',tracking=True)
|
email_getfrom = fields.Selection([('FIX','Email fest hinterlegt'),('DATA','Email in Feld hinterlegt')],'Emailadresse von',tracking=True)
|
||||||
|
email_send_confirm = fields.Boolean('Email Bestätigen vor senden',tracking=True)
|
||||||
email_fix_email_sender = fields.Many2one('res.partner','Absender',help='Email Sender Adresse der Aktion',tracking=True)
|
email_fix_email_sender = fields.Many2one('res.partner','Absender',help='Email Sender Adresse der Aktion',tracking=True)
|
||||||
email_fix_email = fields.Many2one('res.partner','Empfänger fix',help='Email Emüfänger Adresse für Benachrichtigung/Triggeraktion',tracking=True)
|
email_fix_email = fields.Many2one('res.partner','Empfänger fix',help='Email Emüfänger Adresse für Benachrichtigung/Triggeraktion',tracking=True)
|
||||||
email_data_table = fields.Many2one('ir.model','EmailDaten in',help='Für welche Daten ist diese Aktion gültig ?',tracking=True)
|
email_data_table = fields.Many2one('ir.model','EmailDaten in',help='Für welche Daten ist diese Aktion gültig ?',tracking=True)
|
||||||
|
|
@ -501,7 +502,14 @@ 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
|
||||||
self.email_template.send_mail(Dataset.id,force_send=True)
|
if not self.email_send_confirm:
|
||||||
|
self.email_template.send_mail(Dataset.id,force_send=True)
|
||||||
|
else:
|
||||||
|
action = (self.env["confirmation.wizard"].confirm_message(
|
||||||
|
_("Möchten Sie die EMail versenden ?"),self.email_template, # One or more records
|
||||||
|
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.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))
|
||||||
|
|
|
||||||
|
|
@ -140,6 +140,8 @@ class dsscontracts(models.Model):
|
||||||
_logger.info("create new partner...")
|
_logger.info("create new partner...")
|
||||||
fullname = str(self.client_short_vorname) + ' ' +str(self.client_short_name)
|
fullname = str(self.client_short_vorname) + ' ' +str(self.client_short_name)
|
||||||
newcontact = self.env['res.partner'].create({'name': fullname,
|
newcontact = self.env['res.partner'].create({'name': fullname,
|
||||||
|
'dsspartner_vorname': self.client_short_vorname,
|
||||||
|
'dsspartner_name': self.client_short_name,
|
||||||
'email': self.client_short_email,
|
'email': self.client_short_email,
|
||||||
'phone': self.client_short_telefon,
|
'phone': self.client_short_telefon,
|
||||||
'mobile': self.client_short_mobil,
|
'mobile': self.client_short_mobil,
|
||||||
|
|
@ -149,7 +151,7 @@ class dsscontracts(models.Model):
|
||||||
'country_id': self.env['res.country'].search([('code', '=', 'DE')], limit=1).id,
|
'country_id': self.env['res.country'].search([('code', '=', 'DE')], limit=1).id,
|
||||||
'company_type': 'person', # 'company' oder 'person',
|
'company_type': 'person', # 'company' oder 'person',
|
||||||
'website': self.client_short_website,
|
'website': self.client_short_website,
|
||||||
'commercial_company_name': self.client_short_company,
|
'company_name': self.client_short_company,
|
||||||
'dsspartner': True,
|
'dsspartner': True,
|
||||||
'dsspartner_werbung': True
|
'dsspartner_werbung': True
|
||||||
})
|
})
|
||||||
|
|
@ -188,6 +190,7 @@ class dsscontracts(models.Model):
|
||||||
'ads_topics': self.ads_topics,
|
'ads_topics': self.ads_topics,
|
||||||
'contract_auto_extend': self.contract_auto_extend,
|
'contract_auto_extend': self.contract_auto_extend,
|
||||||
'contract_date': self.contract_date,
|
'contract_date': self.contract_date,
|
||||||
|
'work_state_info': self.remark,
|
||||||
'scan_vertrag': self.scan_vertrag
|
'scan_vertrag': self.scan_vertrag
|
||||||
})
|
})
|
||||||
_logger.info("create new Werbekampagne...")
|
_logger.info("create new Werbekampagne...")
|
||||||
|
|
@ -198,7 +201,7 @@ class dsscontracts(models.Model):
|
||||||
'date_start_planed': self.date_start_planed,
|
'date_start_planed': self.date_start_planed,
|
||||||
'date_remove_planed': self.date_remove_planed,
|
'date_remove_planed': self.date_remove_planed,
|
||||||
#'work_state_info': 'ZA bis: '+str(self.grafik_zuarbeitBis)+' / '+self.remark
|
#'work_state_info': 'ZA bis: '+str(self.grafik_zuarbeitBis)+' / '+self.remark
|
||||||
'work_state_info': 'ZA bis: '+format_date(self.grafik_zuarbeitBis,format='dd.MM.yy',locale='de_DE')+' / '+self.remark
|
'work_state_info': 'ZA bis: '+format_date(self.grafik_zuarbeitBis,format='dd.MM.yy',locale='de_DE')
|
||||||
})
|
})
|
||||||
self.erfasst_in_odoo = True
|
self.erfasst_in_odoo = True
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -19,6 +19,8 @@ digitalsignage_dss_mediatypes_group_user,access.dss.mediatypes,model_dss_mediaty
|
||||||
digitalsignage_dss_texts_group_user,access.dss.texts,model_dss_texts,base.group_user,1,1,1,1
|
digitalsignage_dss_texts_group_user,access.dss.texts,model_dss_texts,base.group_user,1,1,1,1
|
||||||
digitalsignage_dss_mediarelations_group_user,access.dss.mediarelations,model_dss_mediarelations,base.group_user,1,1,1,1
|
digitalsignage_dss_mediarelations_group_user,access.dss.mediarelations,model_dss_mediarelations,base.group_user,1,1,1,1
|
||||||
digitalsignage_dss_advertisefields_group_user,access.dss.advertisefields,model_dss_advertisefields,base.group_user,1,1,1,1
|
digitalsignage_dss_advertisefields_group_user,access.dss.advertisefields,model_dss_advertisefields,base.group_user,1,1,1,1
|
||||||
|
digitalsignage_dss_advertisefields_templates_group_user,access.dss.advertisefields.templates,model_dss_advertisefields_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_import_group_user,access.dss.import,model_dss_import,base.group_user,1,1,1,1
|
digitalsignage_dss_import_group_user,access.dss.import,model_dss_import,base.group_user,1,1,1,1
|
||||||
digitalsignage_dss_settings_group_user,access.dss.settings,model_dss_settings,base.group_user,1,1,1,1
|
digitalsignage_dss_settings_group_user,access.dss.settings,model_dss_settings,base.group_user,1,1,1,1
|
||||||
digitalsignage_dss_viewsettings_group_user,access.dss.viewsettings,model_dss_viewsettings,base.group_user,1,1,1,1
|
digitalsignage_dss_viewsettings_group_user,access.dss.viewsettings,model_dss_viewsettings,base.group_user,1,1,1,1
|
||||||
|
|
@ -42,3 +44,4 @@ DigitalSignage_dss_statesave,access.dss.statesave,DigitalSignage.model_dss_state
|
||||||
DigitalSignage_dss_activity_mixin,access.dss.activity_mixin,DigitalSignage.model_dss_activity_mixin,base.group_user,1,0,0,0
|
DigitalSignage_dss_activity_mixin,access.dss.activity_mixin,DigitalSignage.model_dss_activity_mixin,base.group_user,1,0,0,0
|
||||||
DigitalSignage_dss_triggermodel,access.dss.triggermodel,DigitalSignage.model_dss_triggermodel,base.group_user,1,0,0,0
|
DigitalSignage_dss_triggermodel,access.dss.triggermodel,DigitalSignage.model_dss_triggermodel,base.group_user,1,0,0,0
|
||||||
DigitalSignage_dss_invoices,access.dss.invoices,DigitalSignage.model_dss_invoices,base.group_user,1,1,1,1
|
DigitalSignage_dss_invoices,access.dss.invoices,DigitalSignage.model_dss_invoices,base.group_user,1,1,1,1
|
||||||
|
DigitalSignage_dss_onlinestate,access.dss.onlinestate,DigitalSignage.model_dss_onlinestate,base.group_user,1,1,1,1
|
||||||
|
|
|
||||||
|
|
|
@ -40,6 +40,25 @@ export class configKanbanController extends KanbanController {
|
||||||
});
|
});
|
||||||
alert("Einstellungen gespeichert !")
|
alert("Einstellungen gespeichert !")
|
||||||
}
|
}
|
||||||
|
Getonlinestate() {
|
||||||
|
const queryString = window.location.hash;
|
||||||
|
const urlParams = new URLSearchParams(queryString);
|
||||||
|
var TableInfo = [urlParams.get('id'),urlParams.get('model'),urlParams.get('view_type')];
|
||||||
|
var Fields = [];
|
||||||
|
TableInfo.push(Fields);
|
||||||
|
rpc.query({
|
||||||
|
model: 'dss.projects',
|
||||||
|
method: 'compute_getonlinestate2',
|
||||||
|
args: [TableInfo],
|
||||||
|
});
|
||||||
|
}
|
||||||
|
Getmethod() {
|
||||||
|
rpc.query({
|
||||||
|
model: 'dss.projects',
|
||||||
|
method: 'method',
|
||||||
|
args: [],
|
||||||
|
});
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
registry.category("views").add("button_in_kanban", {
|
registry.category("views").add("button_in_kanban", {
|
||||||
|
|
|
||||||
|
|
@ -11,6 +11,8 @@
|
||||||
<xpath expr="//*[@class='btn btn-primary o-kanban-button-new']" position="after">
|
<xpath expr="//*[@class='btn btn-primary o-kanban-button-new']" position="after">
|
||||||
<button type="button" class="btn btn-secondary fa fa-save" id="history_btn" t-on-click="SaveButtonClicked" t-att-data-model-name="props.modelName" data-tooltip="Ansichteinstellungen speichern" />
|
<button type="button" class="btn btn-secondary fa fa-save" id="history_btn" t-on-click="SaveButtonClicked" t-att-data-model-name="props.modelName" data-tooltip="Ansichteinstellungen speichern" />
|
||||||
<button type="button" class="btn btn-secondary fa fa-mail-reply" id="history_btn" t-on-click="ResetButtonClicked" t-att-data-model-name="props.modelName" data-tooltip="Ansichteinstellungen zurücksetzen" />
|
<button type="button" class="btn btn-secondary fa fa-mail-reply" id="history_btn" t-on-click="ResetButtonClicked" t-att-data-model-name="props.modelName" data-tooltip="Ansichteinstellungen zurücksetzen" />
|
||||||
|
<button name="Onlinestatus" title="OnlineStatus" type="button" class="btn btn-primary o_open_tasks" id="history_btn" t-on-click="Getonlinestate" t-att-data-model-name="props.modelName" data-tooltip="Status abfragen" />
|
||||||
|
<button name="Onlinestatus" title="OnlineStatus" type="button" class="btn btn-primary o_open_tasks" id="method" t-on-click="Getmethod" t-att-data-model-name="props.modelName" data-tooltip="Status abfragen" />
|
||||||
</xpath>
|
</xpath>
|
||||||
</t>
|
</t>
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -4,7 +4,7 @@
|
||||||
<t t-inherit="web.FormLabel" t-name="dss.webFormLabel" owl="1" t-inherit-mode="extension">
|
<t t-inherit="web.FormLabel" t-name="dss.webFormLabel" owl="1" t-inherit-mode="extension">
|
||||||
<xpath expr="//sup[hasclass('text-info')]" positio="after">
|
<xpath expr="//sup[hasclass('text-info')]" positio="after">
|
||||||
<t t-name="DigitalSignage.dssFormLabel" owl="1">
|
<t t-name="DigitalSignage.dssFormLabel" owl="1">
|
||||||
<t t-if="hasTooltip" t-esc="props.string2">!</t>
|
<t t-if="hasTooltip" t-esc="props.string2"></t>
|
||||||
<t t-esc="this.status"/>
|
<t t-esc="this.status"/>
|
||||||
</t>
|
</t>
|
||||||
</xpath>
|
</xpath>
|
||||||
|
|
|
||||||
|
|
@ -41,31 +41,106 @@
|
||||||
<field name="color_used" widget="color"/>
|
<field name="color_used" widget="color"/>
|
||||||
<field name="color_unused" widget="color"/>
|
<field name="color_unused" widget="color"/>
|
||||||
<field name="isblocked" widget="boolean_toggle"/>
|
<field name="isblocked" widget="boolean_toggle"/>
|
||||||
</group>
|
<field name="is_btn"/>
|
||||||
|
</group>
|
||||||
</group>
|
</group>
|
||||||
<notebook>
|
<notebook>
|
||||||
<page name="informations" string="Aufbau">
|
<page name="informations" string="Aufbau der Dateien">
|
||||||
<group>
|
<group>
|
||||||
<field name="mediastructure"/>
|
<field name="mediastructure"/>
|
||||||
<field name="mediastructure_medias">
|
<field name="mediastructure_medias">
|
||||||
<tree string="Struktur" editable="False" create="False">
|
<tree string="Struktur" editable="False" create="False">
|
||||||
<field name="medianame"/>
|
<field name="medianame"/>
|
||||||
<field name="mediatype"/>
|
<field name="mediatype"/>
|
||||||
<field name="description"/>
|
<field name="description"/>
|
||||||
</tree>
|
</tree>
|
||||||
</field>
|
</field>
|
||||||
</group>
|
</group>
|
||||||
</page>
|
</page>
|
||||||
<page name="informations" string="Aufbau">
|
<page name="button" string="Button Informationen" attrs="{'invisible': [('is_btn','!=',True)]}">
|
||||||
<group>
|
<field name="btn_fromtemplate" string="Button Template"/>
|
||||||
<field name="issaved" string="gespeichert"/>
|
<button string="Template übernehmen" name="pyactiontaketemplate" type="object" class="btn-primary o_open_tasks" data-hotkey="t"/>
|
||||||
<field name="date_create" string="Erstellt am"/>
|
<notebook>
|
||||||
<field name="user_create" string="Erstellt am"/>
|
<page name="basesettings" string="Grundeinstellungen">
|
||||||
<field name="auto_feldname"/>
|
<group>
|
||||||
<field name="display"/>
|
<field name="btn_name"/>
|
||||||
|
<field name="btn_fieldname"/>
|
||||||
|
<field name="btn_visible" widget="boolean_toggle"/>
|
||||||
|
<field name="btn_active" widget="boolean_toggle"/>
|
||||||
|
</group>
|
||||||
|
</page>
|
||||||
|
<page name="basepositions" string="Buttonpositionen">
|
||||||
|
<group>
|
||||||
|
<field name="btn_pos_x"/>
|
||||||
|
<field name="btn_pos_y"/>
|
||||||
|
<field name="btn_pos_w"/>
|
||||||
|
<field name="btn_pos_h"/>
|
||||||
|
</group>
|
||||||
|
</page>
|
||||||
|
<page name="baseactions" string="Aktionen">
|
||||||
|
<group>
|
||||||
|
<field name="btn_action_inactive"/>
|
||||||
|
<field name="btn_action_active"/>
|
||||||
|
<field name="btn_playlist_zuordnung"/>
|
||||||
|
</group>
|
||||||
|
<group name="gallery" attrs="{'invisible': [('btn_action_active', '!=', '2')]}">
|
||||||
|
<field name="btn_gallery_rows"/>
|
||||||
|
<field name="btn_gallery_cols"/>
|
||||||
|
<field name="btn_gallery_prv_w"/>
|
||||||
|
<field name="btn_gallery_pev_h"/>
|
||||||
|
<field name="btn_gallery_cols"/>
|
||||||
|
</group>
|
||||||
|
<group name="specialcontent" attrs="{'invisible': [('btn_action_active', '!=', '14'),('btn_action_active', '!=', '9'),('btn_action_active', '!=', '12')]}">
|
||||||
|
<field name="btn_has_timer" widget="boolean_toggle"/>
|
||||||
|
<field name="btn_has_timer_time"/>
|
||||||
|
<field name="btn_special_actionimage"/>
|
||||||
|
<field name="btn_special_actionimage_x"/>
|
||||||
|
<field name="btn_special_actionimage_y"/>
|
||||||
|
<field name="btn_special_actionimage_w"/>
|
||||||
|
<field name="btn_special_actionimage_h"/>
|
||||||
|
<field name="btn_special_actionimage_time"/>
|
||||||
|
</group>
|
||||||
|
</page>
|
||||||
|
<page name="basetextsettings" string="Texteinstellungen">
|
||||||
|
<group>
|
||||||
|
<field name="btn_text_1_visible" widget="boolean_toggle"/>
|
||||||
|
<field name="btn_text_2_visible" widget="boolean_toggle"/>
|
||||||
|
<field name="btn_text_3_visible" widget="boolean_toggle"/>
|
||||||
|
<field name="btn_text_4_visible" widget="boolean_toggle"/>
|
||||||
|
<field name="btn_text_1_pos_x" attrs="{'invisible': [('btn_text_1_visible', '!=', True)]}"/>
|
||||||
|
<field name="btn_text_1_pos_y" attrs="{'invisible': [('btn_text_1_visible', '!=', True)]}"/>
|
||||||
|
<field name="btn_text_2_pos_x" attrs="{'invisible': [('btn_text_2_visible', '!=', True)]}"/>
|
||||||
|
<field name="btn_text_2_pos_y" attrs="{'invisible': [('btn_text_2_visible', '!=', True)]}"/>
|
||||||
|
<field name="btn_text_3_pos_x" attrs="{'invisible': [('btn_text_3_visible', '!=', True)]}"/>
|
||||||
|
<field name="btn_text_3_pos_y" attrs="{'invisible': [('btn_text_3_visible', '!=', True)]}"/>
|
||||||
|
<field name="btn_text_4_pos_x" attrs="{'invisible': [('btn_text_4_visible', '!=', True)]}"/>
|
||||||
|
<field name="btn_text_4_pos_y" attrs="{'invisible': [('btn_text_4_visible', '!=', True)]}"/>
|
||||||
|
<field name="btn_text_1_font" attrs="{'invisible': [('btn_text_1_visible', '!=', True)]}"/>
|
||||||
|
<field name="btn_text_2_font" attrs="{'invisible': [('btn_text_2_visible', '!=', True)]}"/>
|
||||||
|
<field name="btn_text_3_font" attrs="{'invisible': [('btn_text_3_visible', '!=', True)]}"/>
|
||||||
|
<field name="btn_text_4_font" attrs="{'invisible': [('btn_text_4_visible', '!=', True)]}"/>
|
||||||
|
</group>
|
||||||
|
</page>
|
||||||
|
<page name="content" string="Inhalte">
|
||||||
|
<group>
|
||||||
|
<field name="btn_center_video_1"/>
|
||||||
|
<field name="btn_center_video_2"/>
|
||||||
|
<field name="btn_center_video_3"/>
|
||||||
|
<field name="btn_center_video_4"/>
|
||||||
|
</group>
|
||||||
|
</page>
|
||||||
|
</notebook>
|
||||||
|
</page>
|
||||||
|
<page name="informations" string="Interne Informationen">
|
||||||
|
<group>
|
||||||
|
<field name="issaved" string="gespeichert"/>
|
||||||
|
<field name="date_create" string="Erstellt am"/>
|
||||||
|
<field name="user_create" string="Erstellt am"/>
|
||||||
|
<field name="auto_feldname"/>
|
||||||
|
<field name="display"/>
|
||||||
</group>
|
</group>
|
||||||
</page>
|
</page>
|
||||||
</notebook>
|
</notebook>
|
||||||
</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"/>
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,120 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<odoo>
|
||||||
|
|
||||||
|
<record id="dss_advertisefields_templates_view_tree" model="ir.ui.view">
|
||||||
|
<field name="name">dss_advertisefields_templates_tree</field>
|
||||||
|
<field name="model">dss.advertisefields.templates</field>
|
||||||
|
<field name="priority" eval="16"/>
|
||||||
|
<field name="arch" type="xml">
|
||||||
|
<tree string="Werbefeld Templates" multi_edit="1" edit="1">
|
||||||
|
<field name="templatefeldname"/>
|
||||||
|
<field name="displaytemplate"/>
|
||||||
|
<field name="feldname"/>
|
||||||
|
</tree>
|
||||||
|
</field>
|
||||||
|
</record>
|
||||||
|
|
||||||
|
<record id="dss_advertisefields_templates_view_form" model="ir.ui.view">
|
||||||
|
<field name="name">dss_advertisefields_templates_form</field>
|
||||||
|
<field name="model">dss.advertisefields.templates</field>
|
||||||
|
<field name="arch" type="xml">
|
||||||
|
<form>
|
||||||
|
<sheet>
|
||||||
|
<group name="basethings">
|
||||||
|
<field name="templatefeldname"/>
|
||||||
|
<field name="displaytemplate"/>
|
||||||
|
<field name="feldname" />
|
||||||
|
</group>
|
||||||
|
<notebook>
|
||||||
|
<page name="basesettings" string="Grundeinstellungen">
|
||||||
|
<group>
|
||||||
|
<field name="btn_name"/>
|
||||||
|
<field name="btn_fieldname"/>
|
||||||
|
<field name="btn_visible" widget="boolean_toggle"/>
|
||||||
|
<field name="btn_active" widget="boolean_toggle"/>
|
||||||
|
</group>
|
||||||
|
</page>
|
||||||
|
<page name="basepositions" string="Buttonpositionen">
|
||||||
|
<group>
|
||||||
|
<field name="btn_pos_x"/>
|
||||||
|
<field name="btn_pos_y"/>
|
||||||
|
<field name="btn_pos_w"/>
|
||||||
|
<field name="btn_pos_h"/>
|
||||||
|
</group>
|
||||||
|
</page>
|
||||||
|
<page name="baseactions" string="Aktionen">
|
||||||
|
<group>
|
||||||
|
<field name="btn_action_inactive"/>
|
||||||
|
<field name="btn_action_active"/>
|
||||||
|
<field name="btn_playlist_zuordnung"/>
|
||||||
|
</group>
|
||||||
|
<group name="gallery" attrs="{'invisible': [('btn_action_active', '!=', '2')]}">
|
||||||
|
<field name="btn_gallery_rows"/>
|
||||||
|
<field name="btn_gallery_cols"/>
|
||||||
|
<field name="btn_gallery_prv_w"/>
|
||||||
|
<field name="btn_gallery_pev_h"/>
|
||||||
|
<field name="btn_gallery_cols"/>
|
||||||
|
</group>
|
||||||
|
<group name="specialcontent" attrs="{'invisible': [('btn_action_active', '!=', '14'),('btn_action_active', '!=', '9'),('btn_action_active', '!=', '12')]}">
|
||||||
|
<field name="btn_has_timer" widget="boolean_toggle"/>
|
||||||
|
<field name="btn_has_timer_time"/>
|
||||||
|
<field name="btn_special_actionimage"/>
|
||||||
|
<field name="btn_special_actionimage_x"/>
|
||||||
|
<field name="btn_special_actionimage_y"/>
|
||||||
|
<field name="btn_special_actionimage_w"/>
|
||||||
|
<field name="btn_special_actionimage_h"/>
|
||||||
|
<field name="btn_special_actionimage_time"/>
|
||||||
|
</group>
|
||||||
|
</page>
|
||||||
|
<page name="basetextsettings" string="Texteinstellungen">
|
||||||
|
<group>
|
||||||
|
<field name="btn_text_1_visible" widget="boolean_toggle"/>
|
||||||
|
<field name="btn_text_2_visible" widget="boolean_toggle"/>
|
||||||
|
<field name="btn_text_3_visible" widget="boolean_toggle"/>
|
||||||
|
<field name="btn_text_4_visible" widget="boolean_toggle"/>
|
||||||
|
<field name="btn_text_1_pos_x" attrs="{'invisible': [('btn_text_1_visible', '!=', True)]}"/>
|
||||||
|
<field name="btn_text_1_pos_y" attrs="{'invisible': [('btn_text_1_visible', '!=', True)]}"/>
|
||||||
|
<field name="btn_text_2_pos_x" attrs="{'invisible': [('btn_text_2_visible', '!=', True)]}"/>
|
||||||
|
<field name="btn_text_2_pos_y" attrs="{'invisible': [('btn_text_2_visible', '!=', True)]}"/>
|
||||||
|
<field name="btn_text_3_pos_x" attrs="{'invisible': [('btn_text_3_visible', '!=', True)]}"/>
|
||||||
|
<field name="btn_text_3_pos_y" attrs="{'invisible': [('btn_text_3_visible', '!=', True)]}"/>
|
||||||
|
<field name="btn_text_4_pos_x" attrs="{'invisible': [('btn_text_4_visible', '!=', True)]}"/>
|
||||||
|
<field name="btn_text_4_pos_y" attrs="{'invisible': [('btn_text_4_visible', '!=', True)]}"/>
|
||||||
|
<field name="btn_text_1_font" attrs="{'invisible': [('btn_text_1_visible', '!=', True)]}"/>
|
||||||
|
<field name="btn_text_2_font" attrs="{'invisible': [('btn_text_2_visible', '!=', True)]}"/>
|
||||||
|
<field name="btn_text_3_font" attrs="{'invisible': [('btn_text_3_visible', '!=', True)]}"/>
|
||||||
|
<field name="btn_text_4_font" attrs="{'invisible': [('btn_text_4_visible', '!=', True)]}"/>
|
||||||
|
</group>
|
||||||
|
</page>
|
||||||
|
<page name="informations" string="Interne Informationen">
|
||||||
|
<group>
|
||||||
|
<field name="uuid"/>
|
||||||
|
<field name="date_create" string="Erstellt am"/>
|
||||||
|
<field name="user_create" string="Erstellt am"/>
|
||||||
|
</group>
|
||||||
|
</page>
|
||||||
|
</notebook>
|
||||||
|
</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"/>
|
||||||
|
<field name="activity_ids"/>
|
||||||
|
<field name="message_ids"/>
|
||||||
|
</div>
|
||||||
|
</form>
|
||||||
|
</field>
|
||||||
|
</record>
|
||||||
|
|
||||||
|
<record id="action_dss_advertisefields_templates_view" model="ir.actions.act_window">
|
||||||
|
<field name="name">DigitalSignage Werbefelder</field>
|
||||||
|
<field name="type">ir.actions.act_window</field>
|
||||||
|
<field name="res_model">dss.advertisefields.templates</field>
|
||||||
|
<field name="view_mode">tree,form</field>
|
||||||
|
<field name="context">{}</field>
|
||||||
|
<field name="help" type="html">
|
||||||
|
<p class="'o_view_nocontent_smiling_face">
|
||||||
|
Neues Werbefeld erstellen
|
||||||
|
</p>
|
||||||
|
</field>
|
||||||
|
</record>
|
||||||
|
|
||||||
|
</odoo>
|
||||||
|
|
@ -320,9 +320,12 @@
|
||||||
<group>
|
<group>
|
||||||
<field name="werbe_feld_selected" string="Werbefeld" widget="many2many_tags" option="{'not_delete': True}" domain="[('project','=',project),'|',('contract','=',False),('isblocked','=',False)]"/>
|
<field name="werbe_feld_selected" string="Werbefeld" widget="many2many_tags" option="{'not_delete': True}" domain="[('project','=',project),'|',('contract','=',False),('isblocked','=',False)]"/>
|
||||||
</group>
|
</group>
|
||||||
<hl/>
|
<hr></hr>
|
||||||
<group>
|
<group>
|
||||||
<field name="work_state_info" string="Aktuelle Hinweise" widget="text"/>
|
<field name="ads_last_work_state_info" string="Aktuelle Hinweise Kampagne" widget="text"/>
|
||||||
|
</group>
|
||||||
|
<group>
|
||||||
|
<field name="work_state_info" string="Aktuelle Hinweise Vertrag" widget="text"/>
|
||||||
</group>
|
</group>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
@ -644,14 +647,16 @@
|
||||||
</page>
|
</page>
|
||||||
<page name="contractviewpdf" string="Vertrag PDF">
|
<page name="contractviewpdf" string="Vertrag PDF">
|
||||||
<field name="scan_vertrag" widget="pdf_view"/>
|
<field name="scan_vertrag" widget="pdf_view"/>
|
||||||
|
<!--
|
||||||
<field name="scan_vertrag" widget="binary" filename="pdf_filename"/>
|
<field name="scan_vertrag" widget="binary" filename="pdf_filename"/>
|
||||||
<xpath expr="//form" position="inside">
|
<xpath expr="//form" position="inside">
|
||||||
<a t-if="record.scan_vertrag.raw_value"
|
<a t-if="record.scan_vertrag.raw_value"
|
||||||
t-att-href="'/web/content/%s/%s/scan_vertrag?download=true' % (record.id, record.scan_vertrag_filename.raw_value)"
|
t-att-href="'/web/content/%s/%s/scan_vertrag?download=true' % (record.id, record.scan_vertrag_filename.raw_value)"
|
||||||
target="_blank">
|
target="_blank">
|
||||||
📄 PDF anzeigen
|
PDF anzeigen
|
||||||
</a>
|
</a>
|
||||||
</xpath>
|
</xpath>
|
||||||
|
-->
|
||||||
<field name="scan_vertrag" string='Vertrag PDF Ansicht' widget="pdf_viewer"/>
|
<field name="scan_vertrag" string='Vertrag PDF Ansicht' widget="pdf_viewer"/>
|
||||||
</page>
|
</page>
|
||||||
<page name="invoiceview" string="Rechnungsübersicht">
|
<page name="invoiceview" string="Rechnungsübersicht">
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,47 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<odoo>
|
||||||
|
|
||||||
|
<record id="dss_display_templates_view_tree" model="ir.ui.view">
|
||||||
|
<field name="name">dss_display_templates_tree</field>
|
||||||
|
<field name="model">dss.display.templates</field>
|
||||||
|
<field name="priority" eval="16"/>
|
||||||
|
<field name="arch" type="xml">
|
||||||
|
<tree string="Werbefeld Templates" multi_edit="1" edit="1">
|
||||||
|
<field name="displayname"/>
|
||||||
|
</tree>
|
||||||
|
</field>
|
||||||
|
</record>
|
||||||
|
|
||||||
|
<record id="dss_display_templates_view_form" model="ir.ui.view">
|
||||||
|
<field name="name">dss_display_templates_form</field>
|
||||||
|
<field name="model">dss.display.templates</field>
|
||||||
|
<field name="arch" type="xml">
|
||||||
|
<form>
|
||||||
|
<sheet>
|
||||||
|
<group name="basethings">
|
||||||
|
<field name="displayname"/>
|
||||||
|
</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"/>
|
||||||
|
<field name="activity_ids"/>
|
||||||
|
<field name="message_ids"/>
|
||||||
|
</div>
|
||||||
|
</form>
|
||||||
|
</field>
|
||||||
|
</record>
|
||||||
|
|
||||||
|
<record id="action_dss_display_templates_view" model="ir.actions.act_window">
|
||||||
|
<field name="name">DigitalSignage Display vorlagen</field>
|
||||||
|
<field name="type">ir.actions.act_window</field>
|
||||||
|
<field name="res_model">dss.display.templates</field>
|
||||||
|
<field name="view_mode">tree,form</field>
|
||||||
|
<field name="context">{}</field>
|
||||||
|
<field name="help" type="html">
|
||||||
|
<p class="'o_view_nocontent_smiling_face">
|
||||||
|
Neues Werbefeld erstellen
|
||||||
|
</p>
|
||||||
|
</field>
|
||||||
|
</record>
|
||||||
|
|
||||||
|
</odoo>
|
||||||
|
|
@ -0,0 +1,70 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<odoo>
|
||||||
|
|
||||||
|
<record id="dss_onlinestate_form" model="ir.ui.view">
|
||||||
|
<field name="name">dss_onlinestate_form</field>
|
||||||
|
<field name="model">dss.onlinestate</field>
|
||||||
|
<field eval="2" name="priority"/>
|
||||||
|
<field name="arch" type="xml">
|
||||||
|
<form>
|
||||||
|
<sheet>
|
||||||
|
<group>
|
||||||
|
<field name="uuid"/>
|
||||||
|
<field name="date_create"/>
|
||||||
|
<field name="project"/>
|
||||||
|
<field name="number"/>
|
||||||
|
<field name="online"/>
|
||||||
|
</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"/>
|
||||||
|
<field name="activity_ids"/>
|
||||||
|
<field name="message_ids"/>
|
||||||
|
</div>
|
||||||
|
</form>
|
||||||
|
</field>
|
||||||
|
</record>
|
||||||
|
|
||||||
|
<record id="dss_onlinestate_tree" model="ir.ui.view">
|
||||||
|
<field name="name">dss_onlinestate_tree</field>
|
||||||
|
<field name="model">dss.onlinestate</field>
|
||||||
|
<field name="priority" eval="16"/>
|
||||||
|
<field name="arch" type="xml">
|
||||||
|
<tree string="Trigger Aktionen">
|
||||||
|
<field name="uuid"/>
|
||||||
|
<field name="date_create"/>
|
||||||
|
<field name="project"/>
|
||||||
|
<field name="number"/>
|
||||||
|
<field name="online"/>
|
||||||
|
</tree>
|
||||||
|
</field>
|
||||||
|
</record>
|
||||||
|
|
||||||
|
<record id="dss_onlinestate_graph" model="ir.ui.view">
|
||||||
|
<field name="name">dss_onlinestate_graph</field>
|
||||||
|
<field name="model">dss.onlinestate</field>
|
||||||
|
<field name="type">graph</field>
|
||||||
|
<field name="arch" type="xml">
|
||||||
|
<graph string="Example" type="line">
|
||||||
|
<field name="online"/>
|
||||||
|
<!-- type="measure" operator="+"-->
|
||||||
|
<field name="date_create" type="col"/>
|
||||||
|
</graph>
|
||||||
|
</field>
|
||||||
|
</record>
|
||||||
|
|
||||||
|
<record id="action_dss_onlinestate_view" model="ir.actions.act_window">
|
||||||
|
<field name="name">DigitalSignage Onlinestate History</field>
|
||||||
|
<field name="type">ir.actions.act_window</field>
|
||||||
|
<field name="res_model">dss.onlinestate</field>
|
||||||
|
<field name="view_mode">tree,form,graph</field>
|
||||||
|
<field name="context">{}</field>
|
||||||
|
<field name="help" type="html">
|
||||||
|
<p class="'o_view_nocontent_smiling_face">
|
||||||
|
Neuen Standardtext erstellen
|
||||||
|
</p>
|
||||||
|
</field>
|
||||||
|
</record>
|
||||||
|
|
||||||
|
|
||||||
|
</odoo>
|
||||||
|
|
@ -32,13 +32,12 @@
|
||||||
<field name="model">dss.projects</field>
|
<field name="model">dss.projects</field>
|
||||||
<field name="arch" type="xml">
|
<field name="arch" type="xml">
|
||||||
<form>
|
<form>
|
||||||
<header>
|
<field name="grundsystem_showonlinestate_type"/>
|
||||||
<button name="compute_getonlinestate2" string="Test nicht klicken" type="object" class="oe_hightlight"/>
|
|
||||||
</header>
|
|
||||||
<sheet>
|
<sheet>
|
||||||
<group>
|
<group>
|
||||||
<field name="invisible" widget="boolean_toggle"/>
|
<field name="invisible" widget="boolean_toggle"/>
|
||||||
<field name="active" widget="boolean_toggle"/>
|
<field name="active" widget="boolean_toggle"/>
|
||||||
|
<field name="issim" widget="boolean_toggle"/>
|
||||||
<field name="aktstatus"/>
|
<field name="aktstatus"/>
|
||||||
<field name="projektname"/>
|
<field name="projektname"/>
|
||||||
<field name="projectid"/>
|
<field name="projectid"/>
|
||||||
|
|
@ -180,6 +179,22 @@
|
||||||
</tree>
|
</tree>
|
||||||
</field>
|
</field>
|
||||||
</page>
|
</page>
|
||||||
|
<page name="simsettings" string="Sim Verwaltung" attrs="{'invisible': [('issim', '!=', True)]}">
|
||||||
|
<group>
|
||||||
|
<field name="simid_1"/>
|
||||||
|
<field name="simstart_1"/>
|
||||||
|
<field name="simstart_DVEmpty_1" widget="boolean_toggle"/>
|
||||||
|
<field name="simstart_DVEmpty_1_lastdate"/>
|
||||||
|
<field name="simid_2"/>
|
||||||
|
<field name="simstart_2"/>
|
||||||
|
<field name="simstart_DVEmpty_2" widget="boolean_toggle"/>
|
||||||
|
<field name="simstart_DVEmpty_2_lastdate"/>
|
||||||
|
<field name="simid_3"/>
|
||||||
|
<field name="simstart_3"/>
|
||||||
|
<field name="simstart_DVEmpty_3" widget="boolean_toggle"/>
|
||||||
|
<field name="simstart_DVEmpty_3_lastdate"/>
|
||||||
|
</group>
|
||||||
|
</page>
|
||||||
<page name="trigger" string="Aktionen/Trigger">
|
<page name="trigger" string="Aktionen/Trigger">
|
||||||
<group>
|
<group>
|
||||||
<field name="run_trigger" string="Trigger aktiv ?" widget="Boolean_toggle"/>
|
<field name="run_trigger" string="Trigger aktiv ?" widget="Boolean_toggle"/>
|
||||||
|
|
@ -192,8 +207,18 @@
|
||||||
<group>
|
<group>
|
||||||
<field name="id" string="Iid" readonly="1"/>
|
<field name="id" string="Iid" readonly="1"/>
|
||||||
<field name="uuid" string="UUID" readonly="1"/>
|
<field name="uuid" string="UUID" readonly="1"/>
|
||||||
<field name="onlinestate" string="Onlinecolor aus Settings" widget="color"/>
|
<field name="onlinestate_1" string="Onlinecolor aus Settings" widget="color"/>
|
||||||
<field name="playername"/>
|
<field name="playername_1" string="Player 1 Name" attrs="{'invisible': [('grundsystem_showonlinestate_type', '!=', 'VNNOX')]}"/>
|
||||||
|
<field name="Rportid_1" string="RPort 1 ID" attrs="{'invisible': [('grundsystem_showonlinestate_type', '!=', 'RPORT')]}"/>
|
||||||
|
<field name="playername_1" string="Bezeichung 1" attrs="{'invisible': [('grundsystem_showonlinestate_type', '!=', 'RPORT')]}"/>
|
||||||
|
<field name="onlinestate_1" string="Onlinecolor aus Settings" widget="color"/>
|
||||||
|
<field name="playername_2" string="Player 2 Name" attrs="{'invisible': [('grundsystem_showonlinestate_type', '!=', 'VNNOX')]}"/>
|
||||||
|
<field name="Rportid_2" string="RPort 2 ID" attrs="{'invisible': [('grundsystem_showonlinestate_type', '!=', 'RPORT')]}"/>
|
||||||
|
<field name="playername_2" string="Bezeichung 2" attrs="{'invisible': [('grundsystem_showonlinestate_type', '!=', 'RPORT')]}"/>
|
||||||
|
<field name="onlinestate_3" string="Onlinecolor aus Settings" widget="color"/>
|
||||||
|
<field name="playername_3" string="Player 3 Name" attrs="{'invisible': [('grundsystem_showonlinestate_type', '!=', 'VNNOX')]}"/>
|
||||||
|
<field name="Rportid_3" string="RPort 3 ID" attrs="{'invisible': [('grundsystem_showonlinestate_type', '!=', 'RPORT')]}"/>
|
||||||
|
<field name="playername_3" string="Bezeichung 3" attrs="{'invisible': [('grundsystem_showonlinestate_type', '!=', 'RPORT')]}"/>
|
||||||
</group>
|
</group>
|
||||||
</page>
|
</page>
|
||||||
</notebook>
|
</notebook>
|
||||||
|
|
@ -217,7 +242,12 @@
|
||||||
<field name="projektname"/>
|
<field name="projektname"/>
|
||||||
<field name="aktstatus_color"/>
|
<field name="aktstatus_color"/>
|
||||||
<field name="grundsystem_showonlinestate"/>
|
<field name="grundsystem_showonlinestate"/>
|
||||||
<field name="onlinestate"/>
|
<field name="onlinestate_1"/>
|
||||||
|
<field name="onlinestate_2"/>
|
||||||
|
<field name="onlinestate_3"/>
|
||||||
|
<field name="playername_1"/>
|
||||||
|
<field name="playername_2"/>
|
||||||
|
<field name="playername_3"/>
|
||||||
<templates>
|
<templates>
|
||||||
<t t-name="kanban-box">
|
<t t-name="kanban-box">
|
||||||
<t t-set="colonr" t-value="aktstatus_color"/>
|
<t t-set="colonr" t-value="aktstatus_color"/>
|
||||||
|
|
@ -277,7 +307,19 @@
|
||||||
<div class="col-10" style="padding-left: 20px">
|
<div class="col-10" style="padding-left: 20px">
|
||||||
<span style="font-size:9px"><field name="projectid"/> <field name="systemname" string="Project Name"/></span>
|
<span style="font-size:9px"><field name="projectid"/> <field name="systemname" string="Project Name"/></span>
|
||||||
</div>
|
</div>
|
||||||
<div class="col-1" t-attf-style="background-color:{{record.onlinestate.value}};margin-left:10pxpadding-left:10px;width: 10px;padding-left: 0px;margin-left: 25px;margin-top: 10px;height: 10px;padding-bottom: -5;padding-bottom: -5;padding-right: 0px;" attrs="{'invisible': [('grundsystem_showonlinestate','!=',True)]}">
|
</div>
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-7" style="padding-left: 20px">
|
||||||
|
</div>
|
||||||
|
<div class="text-info col-1" t-attf-style="background-color:{{record.onlinestate_3.value}};margin-left:10pxpadding-left:10px;width: 10px;padding-left: 0px;margin-left: 25px;margin-top: 10px;height: 10px;padding-bottom: -5;padding-bottom: -5;padding-right: 0px;width: 3.33333333%" t-attf-data-tooltip="{{record.playername_3.value}}" data-tooltip-touch-tap-to-show="true" attrs="{'invisible': ['|',('grundsystem_showonlinestate','!=',True),('onlinestate_3','=','0'),('playername_3','=',False)]}">
|
||||||
|
</div>
|
||||||
|
<div class="text-info col-1" t-attf-style="background-color:#ffffff;margin-left:10pxpadding-left:10px;width: 10px;padding-left: 0px;margin-left: 25px;margin-top: 10px;height: 10px;padding-bottom: -5;padding-bottom: -5;padding-right: 0px;width: 3.33333333%" attrs="{'invisible': ['|',('grundsystem_showonlinestate','!=',True),('onlinestate_3','!=','0')]}">
|
||||||
|
</div>
|
||||||
|
<div class="text-info col-1" t-attf-style="background-color:{{record.onlinestate_2.value}};margin-left:10pxpadding-left:10px;width: 10px;padding-left: 0px;margin-left: 25px;margin-top: 10px;height: 10px;padding-bottom: -5;padding-bottom: -5;padding-right: 0px;width: 3.33333333%" t-attf-data-tooltip="{{record.playername_2.value}}" data-tooltip-touch-tap-to-show="true" attrs="{'invisible': ['|',('grundsystem_showonlinestate','!=',True),('onlinestate_2','=','0'),('playername_2','=',False)]}">
|
||||||
|
</div>
|
||||||
|
<div class="text-info col-1" t-attf-style="background-color:#ffffff;margin-left:10pxpadding-left:10px;width: 10px;padding-left: 0px;margin-left: 25px;margin-top: 10px;height: 10px;padding-bottom: -5;padding-bottom: -5;padding-right: 0px;width: 3.33333333%" attrs="{'invisible': ['|',('grundsystem_showonlinestate','!=',True),('onlinestate_2','!=','0')]}">
|
||||||
|
</div>
|
||||||
|
<div class="text-info col-1" t-attf-style="background-color:{{record.onlinestate_1.value}};margin-left:10pxpadding-left:10px;width: 10px;padding-left: 0px;margin-left: 25px;margin-top: 10px;height: 10px;padding-bottom: -5;padding-bottom: -5;padding-right: 0px;width: 3.33333333%" t-attf-data-tooltip="{{record.playername_1.value}}" data-tooltip-touch-tap-to-show="true" attrs="{'invisible': ['|',('grundsystem_showonlinestate','!=',True),('onlinestate_1','=','0'),('playername_1','=',False)]}">
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
||||||
|
|
@ -120,6 +120,11 @@
|
||||||
<field name="vnnoxusername"/>
|
<field name="vnnoxusername"/>
|
||||||
<field name="vnnoxpassword"/>
|
<field name="vnnoxpassword"/>
|
||||||
</group>
|
</group>
|
||||||
|
<group string="RPort Zugangsdaten">
|
||||||
|
<field name="rporturl"/>
|
||||||
|
<field name="rportusername"/>
|
||||||
|
<field name="rporttoken"/>
|
||||||
|
</group>
|
||||||
</div>
|
</div>
|
||||||
</page>
|
</page>
|
||||||
<page name="webvertragseing" string="Web-Vertragseingänge Abläufe">
|
<page name="webvertragseing" string="Web-Vertragseingänge Abläufe">
|
||||||
|
|
|
||||||
|
|
@ -29,6 +29,7 @@
|
||||||
<group>
|
<group>
|
||||||
<field name="email_getfrom"/>
|
<field name="email_getfrom"/>
|
||||||
<field name='email_template'/>
|
<field name='email_template'/>
|
||||||
|
<field name="email_send_confirm" widget="boolean_toogle"/>
|
||||||
<field name='email_fix_email_sender'/>
|
<field name='email_fix_email_sender'/>
|
||||||
<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')]}" />
|
||||||
|
|
|
||||||
|
|
@ -186,6 +186,12 @@
|
||||||
action="action_dss_invoice"
|
action="action_dss_invoice"
|
||||||
sequence="42"/>
|
sequence="42"/>
|
||||||
|
|
||||||
|
<menuitem id="menu_dss_onlinestate_view"
|
||||||
|
name="Alle Displays/LED On/Offline Info anzeigen"
|
||||||
|
parent="menu_dss_intern_contracts_seperator"
|
||||||
|
action="action_dss_onlinestate_view"
|
||||||
|
sequence="43"/>
|
||||||
|
|
||||||
<menuitem
|
<menuitem
|
||||||
id="menu_dss_mediafiles"
|
id="menu_dss_mediafiles"
|
||||||
name="Medientypen managen"
|
name="Medientypen managen"
|
||||||
|
|
@ -290,6 +296,13 @@
|
||||||
action="action_dss_advertisefields_view"
|
action="action_dss_advertisefields_view"
|
||||||
sequence="90"/>
|
sequence="90"/>
|
||||||
|
|
||||||
|
<menuitem
|
||||||
|
id="menu_dss_configuration_advertisefields_templates"
|
||||||
|
name="Werbefelder Vorlagen verwalten"
|
||||||
|
parent="menu_dss_configurationen"
|
||||||
|
action="action_dss_advertisefields_templates_view"
|
||||||
|
sequence="91"/>
|
||||||
|
|
||||||
<menuitem
|
<menuitem
|
||||||
id="menu_dss_configuration_eventdays"
|
id="menu_dss_configuration_eventdays"
|
||||||
name="Eventtage verwalten"
|
name="Eventtage verwalten"
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue