diff --git a/.idea/.gitignore b/.idea/.gitignore old mode 100644 new mode 100755 diff --git a/.idea/DigitalSignage.iml b/.idea/DigitalSignage.iml old mode 100644 new mode 100755 index 2c80e12..1acad03 --- a/.idea/DigitalSignage.iml +++ b/.idea/DigitalSignage.iml @@ -3,8 +3,9 @@ + - + \ No newline at end of file diff --git a/.idea/inspectionProfiles/profiles_settings.xml b/.idea/inspectionProfiles/profiles_settings.xml old mode 100644 new mode 100755 index 105ce2d..dd4c951 --- a/.idea/inspectionProfiles/profiles_settings.xml +++ b/.idea/inspectionProfiles/profiles_settings.xml @@ -1,5 +1,6 @@ + diff --git a/.idea/misc.xml b/.idea/misc.xml old mode 100644 new mode 100755 index 9d33be8..bc5319b --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -1,4 +1,7 @@ + + \ No newline at end of file diff --git a/.idea/modules.xml b/.idea/modules.xml old mode 100644 new mode 100755 diff --git a/.idea/vcs.xml b/.idea/vcs.xml old mode 100644 new mode 100755 diff --git a/Odoo/.idea/Odoo.iml b/Odoo/.idea/Odoo.iml old mode 100644 new mode 100755 diff --git a/Odoo/.idea/inspectionProfiles/profiles_settings.xml b/Odoo/.idea/inspectionProfiles/profiles_settings.xml old mode 100644 new mode 100755 diff --git a/Odoo/.idea/misc.xml b/Odoo/.idea/misc.xml old mode 100644 new mode 100755 diff --git a/Odoo/.idea/modules.xml b/Odoo/.idea/modules.xml old mode 100644 new mode 100755 diff --git a/Odoo/.idea/vcs.xml b/Odoo/.idea/vcs.xml old mode 100644 new mode 100755 diff --git a/Odoo/.idea/workspace.xml b/Odoo/.idea/workspace.xml old mode 100644 new mode 100755 diff --git a/__manifest__.py b/__manifest__.py index 05a87f1..8d68d8b 100755 --- a/__manifest__.py +++ b/__manifest__.py @@ -18,8 +18,8 @@ 'views/dss_systemtypen.xml', 'views/dss_mediarelations.xml', 'views/dss_advertisementfields.xml', - 'views/dss_projects.xml', - 'views/dss_ads.xml', + 'views/dss_projects.xml','views/dss_import.xml', + 'views/dss_ads.xml','views/dss_settings.xml', 'views/dss_mediafiles.xml', 'views/dss_addstructures.xml', 'views/dss_texts.xml', diff --git a/digi_001.tar.gz b/digi_001.tar.gz old mode 100644 new mode 100755 diff --git a/models/delete b/models/delete old mode 100644 new mode 100755 diff --git a/models/dss.py b/models/dss.py index 93ca490..0173955 100755 --- a/models/dss.py +++ b/models/dss.py @@ -39,12 +39,92 @@ def _generate_preview_from_binary_2(self, videofile_file): return base64.b64encode(out) +class dssimport(models.Model): + _name = "dss.import" + _description = "DigitalSignage Import" + uuid = fields.Char(default=lambda self: self._default_uuid(), required=True, readonly=True, copy=False, string='UUID') + importfilename = fields.Binary('Import Dateiname') + importtext = fields.Text('Import Verlauf') + + def _default_uuid(self): + return str(uuid.uuid4()) + + def pyimport(self): + + return action + +class dssSettings(models.Model): + _name = "dss.settings" + _description = "DigitalSignage Einstellungen" + uuid = fields.Char(default=lambda self: self._default_uuid(), required=True, readonly=True, copy=False, string='UUID') + def_project_cloudpath = fields.Char('Standard Projekt Pfad') + def_project_cloudpath_sample = fields.Char('Projekt Beispiel :',store=True) + def_contract_cloudpath = fields.Char('Standard Kunden Pfad') + def_contract_cloudpath_sample = fields.Char('Projekt Beispiel :') + def_ad_cloudpath = fields.Char('Standard Kampagnen Pfad') + def_ad_cloudpath_sample = fields.Char('Kampagnen Beispiel :') + + def _get_path_converted(self,path,record): + alls = '' + _logger.info("GetPath with " + str(path)+ " and Record : "+str(record.id)) + if path: + for parts in path.split(','): + if parts[0] == '$': + fels = parts[1:] + parts = record._origin.read([fels]) + _logger.info("Default Cloudpath Setzen - MusterProjekt gefunden " + str(parts)) + if parts: + value = str(parts[0][fels]) + else: + value = '' + _logger.info("Default Cloudpath Setzen - MusterProjekt gefunden " + str(value)) + alls = alls + value + else: + alls = alls + str(parts) + return alls + + @api.onchange('def_project_cloudpath') + def _onchange_def_project_cloudpath(self): + _logger.info("Default Project Cloudpath Setzen") + project_1 = self.env['dss.projects'].search([('uuid','=ilike','%')],limit=1) + if not project_1: + _logger.info("Default Cloudpath Setzen - kein MusterProjekt gefunden") + else: + _logger.info("Default Cloudpath Setzen - MusterProjekt gefunden "+str(project_1.id)) + alls = self._get_path_converted(self.def_project_cloudpath,project_1) + self.def_project_cloudpath_sample = alls + + @api.onchange('def_contract_cloudpath') + def _onchange_def_contract_cloudpath(self): + _logger.info("Default Contract Cloudpath Setzen") + contract_1 = self.env['dss.contracts'].search([('uuid','=ilike','%')],limit=1) + if not contract_1: + _logger.info("Default Cloudpath Setzen - kein MusterProjekt gefunden") + else: + _logger.info("Default Cloudpath Setzen - MusterProjekt gefunden "+str(contract_1.id)) + alls = self._get_path_converted(self.def_contract_cloudpath,contract_1) + self.def_contract_cloudpath_sample = alls + + @api.onchange('def_ad_cloudpath') + def _onchange_def_ad_cloudpath(self): + _logger.info("Default ad Cloudpath Setzen") + ad_1 = self.env['dss.ads'].search([('uuid','=ilike','%')],limit=1) + if not ad_1: + _logger.info("Default Cloudpath Setzen - kein MusterProjekt gefunden") + else: + _logger.info("Default Cloudpath Setzen - MusterProjekt gefunden "+str(ad_1.id)) + alls = self._get_path_converted(self.def_ad_cloudpath,ad_1) + self.def_ad_cloudpath_sample = alls + + def _default_uuid(self): + return str(uuid.uuid4()) + class dsscontracts(models.Model): @api.model def _get_default_project(self): _logger.debug("Ermittelte Id aus Context : %s" % (self.env.context.get('active_id'))) - ds = self.env('dss.projects').search([('id','=',self.env.context.get('active_id'))],limit=1) + ds = self.env['dss.projects'].search([('id','=',self.env.context.get('active_id'))],limit=1) return ds def _default_work_state(self): @@ -185,7 +265,7 @@ class dsscontracts(models.Model): # todo_state_info = fields.Char('Zusatzinfo',tracking=True) # todo_state_until = fields.Date('Abarbeiten bis',tracking=True) - cloudlink = fields.Char('Cloud Verzeichnis',help='Verzeichnis für das Project innerhalb des Projekt Ordners') + cloudlink = fields.Char('Cloud Verzeichnis',help='Verzeichnis für den Kunde innerhalb des Projekt Ordners') @api.constrains('client_id') def _check_client_id(self) : @@ -298,69 +378,121 @@ class dsscontracts(models.Model): _logger.info('Click auf Werbekampagne : C_'+str(self.id)+'A_'+str(ds.id)+' - Keine Medien gefunden ') # Medien erzeugen wenn nicht vorhanden + _logger.info('Click auf Werbekampagne : C_'+str(self.id)+' Suche Kampagne allgemein ') kampagne=self.env['dss.ads'].search([('contract','=',self.id)],limit=1) - _logger.info('Click auf Werbekampagne : '+str(self.id)+' 3') if not kampagne: - _logger.info('Click auf Werbekampagne : '+str(self.id)+' kein kampagne') + _logger.info('Click auf Werbekampagne : C_'+str(self.id)+' kein kampagne') defadstate = self.env['dss.adstate'].search([('func','=','STD')],limit=1) if not defadstate : - _logger.info('Click auf Werbekampagne : '+str(self.id)+' kein defstate') + _logger.info('Click auf Werbekampagne : C_'+str(self.id)+' kein defstate') defadstateid = 1 else: defadstateid = defadstate.id kampagne = self.env['dss.ads'].create({'contract': self.id, 'project': self.project.id, 'adname': 'WK '+self.contract_auto_name,'adtype':'MAIN','ad_state':defadstateid}) self.ads_last_ad = kampagne.id - _logger.info('Click auf Werbekampagne : '+str(self.id)+' Kampagne erstellt '+str(kampagne.id)) + _logger.info('Click auf Werbekampagne : C_'+str(self.id)+' Kampagne erstellt A_'+str(kampagne.id)) kampagne.parent_ad = kampagne.id mediaids = [] - for feld in self.werbe_feld_selected: - for media in feld.mediastructure.medias: - if not media: - _logger.info('Prüfe Medien : C_'+str(self.id)+'K_'+str(kampagne.id)+' Kein Medium in MedienStructur von F_'+str(feld.id)+'M_'+str(media.id)) - else: - newmedia=self.env['dss.mediarelations'].create({ - newmedi=media.copy({'contract':self.id,'ad':kampagne.id}) - _logger.info('Prüfe Medien : C_'+str(self.id)+'K_'+str(kampagne.id)+' setze Vertrag für Medium : '+str(newmedi.contract)+'/'+str(newmedi.ad)) - mediaids.append(newmedi.id) - kampagne.write({'need_media': [(6,0,mediaids)]}) - _logger.info('Click auf Werbekampagne : '+str(self.id)+'/'+str(kampagne.id)+' setze Media '+str(kampagne.need_media)) + if not self.werbe_feld_selected: + _logger.info('Prüfe Medien : C_' + str(self.id) + 'A_' + str( + kamp.id) + ' Keine Felder im Vertrag') + raise ValidationError(_("Vertrag hat keine Felder ! Kampagnen benötigen Felder - auch virtuelle")) + else: + for feld in self.werbe_feld_selected: + if not feld: + _logger.info('Prüfe Medien : C_' + str(self.id) + 'A_' + str( + kamp.id) + ' Keine Felder im Vertrag') + raise ValidationError(_("Vertrag hat keine Felder ! Kampagnen benötigen Felder - auch virtuelle")) + else: + for media in feld.mediastructure.medias: + if not media: + _logger.info('Prüfe Medien : C_'+str(self.id)+'K_'+str(kampagne.id)+' Kein Medium in MedienStructur von F_'+str(feld.id)+'M_'+str(media.id)) + else: + newmedia=self.env['dss.mediarelations'].create({'field':feld.id,'contract':self.id,'project':self.project.id,'field_uuid':feld.uuid,'ad':kampagne.id, 'relname': media.medianame, + 'mediatype': media.id}) + _logger.info('Prüfe Medien : C_'+str(self.id)+'K_'+str(kampagne.id)+' setze Vertrag für Medium : '+str(newmedia.contract)+'/'+str(newmedia.ad)) + mediaids.append(newmedia.id) + kampagne.write({'need_media': [(6,0,mediaids)]}) + _logger.info('Click auf Werbekampagne : C_'+str(self.id)+'/'+str(kampagne.id)+' setze Media '+str(kampagne.need_media)) else: - _logger.info('Click auf Werbekampagne : '+str(self.id)+' mind. 1 Kampagne vorhanden '+str(kampagne.id)) - _logger.info('Prüfe Medien : C_'+str(self.id)) + _logger.info('Click auf Werbekampagne : C_'+str(self.id)+' mind. 1 Kampagne vorhanden A_'+str(kampagne.id)) kampagnen=self.env['dss.ads'].search([('contract','=',self.id)]) _logger.info('Prüfe Medien : C_'+str(self.id)+' alle Kamp : '+str(kampagnen)) for kamp in kampagnen: - _logger.info('Prüfe Medien : C_'+str(self.id)+'K_'+str(kamp.id)) + _logger.info('Prüfe Medien : C_'+str(self.id)+'A_'+str(kamp.id)) if kamp: mediaids = [] medias = self.env['dss.mediarelations'].search([('ad','=',kamp.id)]) if not medias: - _logger.info('Prüfe Medien : C_'+str(self.id)+'K_'+str(kamp.id)+' keine Medien gefunden !') - for singlemedi in self.need_media: - if not singlemedi: - _logger.info('Prüfe Medien : C_'+str(self.id)+'K_'+str(kamp.id)+' Kein Medium in NEED_MEDIA') - else: - newmedi=singlemedi.copy({'ad':kamp.id}) - _logger.info('Prüfe Medien : C_'+str(self.id)+'K_'+str(kamp.id)+' Kopiere Medium : '+str(singlemedi)+' -> '+str(newmedi)) - _logger.info('Prüfe Medien : C_'+str(self.id)+'K_'+str(kamp.id)+' Medien evtl erstellt !') - medias = self.env['dss.mediarelations'].search([('ad','=',kamp.id)]) - _logger.info('Click auf Werbekampagne : C_'+str(self.id)+'K_'+str(kamp.id)+' neue Media '+str(mediaids)) - kamp.write({'need_media': [(6,0,medias.ids)]}) -# self.write({'need_media': [(5,0,0)]}) -# _logger.info('Click auf Werbekampagne : C_'+str(self.id)+'K_'+str(kamp.id)+' setze Media '+str(kamp.need_media)) - else: - _logger.info('Prüfe Medien : C_'+str(self.id)+'K_'+str(kamp.id)+' Medien gefunden !') - medias = self.env['dss.mediarelations'].search([('ad','=',kamp.id)]) -# mediaids.append(medias.ids) - _logger.info('Click auf Werbekampagne : C_'+str(self.id)+'K_'+str(kamp.id)+' gefundene Media '+str(mediaids)) - kampagne=self.env['dss.ads'].browse(kamp.id) - _logger.info('Click auf Werbekampagne : C_'+str(self.id)+'K_'+str(kamp.id)+' gefundene Media '+str(mediaids)+' Kampagne '+str(kampagne)) - if kampagne.need_media != medias: - _logger.info('Click auf Werbekampagne : C_'+str(self.id)+'K_'+str(kamp.id)+' Media unterschiede - setze Media '+str(mediaids)+'/'+str(kampagne.need_media)) + _logger.info('Prüfe Medien : C_'+str(self.id)+'A_'+str(kamp.id)+' keine Medien gefunden !') + if not self.werbe_feld_selected: + _logger.info('Prüfe Medien : C_' + str(self.id) + 'A_' + str( + kamp.id) + ' Keine Felder im Vertrag') + raise ValidationError( + _("Vertrag hat keine Felder ! Kampagnen benötigen Felder - auch virtuelle")) else: - _logger.info('Click auf Werbekampagne : C_'+str(self.id)+'K_'+str(kamp.id)+' Media gleich '+str(kampagne.need_media)) + for feld in self.werbe_feld_selected: + if not feld: + _logger.info('Prüfe Medien : C_' + str(self.id) + 'A_' + str( + kamp.id) + ' Keine Felder im Vertrag') + raise ValidationError(_("Vertrag hat keine Felder ! Kampagnen benötigen Felder - auch virtuelle")) + else: + for media in feld.mediastructure.medias: + if not media: + _logger.info('Prüfe Medien : C_'+str(self.id)+'A_'+str(kamp.id)+' Kein Medium in der Struktur F_'+str(feld.id)+'M_'+str(feld.mediastructure.id)) + else: + newmedi = self.env['dss.mediarelations'].create( + { 'field': feld.id, 'contract': self.id, 'project': self.project.id, + 'field_uuid': feld.uuid, 'ad': kamp.id, 'relname':media.medianame,'mediatype':media.id}) + _logger.info('Prüfe Medien : C_'+str(self.id)+'A_'+str(kamp.id)+' Erstelle Medium : M_'+str(media.id)+' -> '+str(newmedi.id)) + _logger.info('Prüfe Medien : C_'+str(self.id)+'A_'+str(kamp.id)+' Medien evtl erstellt ! NM_'+str(newmedi.id)) + medias = self.env['dss.mediarelations'].search([('ad','=',kamp.id)]) + _logger.info('Click auf Werbekampagne : C_'+str(self.id)+'A_'+str(kamp.id)+' neue Media '+str(mediaids)) + kamp.write({'need_media': [(6,0,medias.ids)]}) +# self.write({'need_media': [(5,0,0)]}) +# _logger.info('Click auf Werbekampagne : C_'+str(self.id)+'K_'+str(kamp.id)+' setze Media '+str(kamp.need_media)) + else: + _logger.info('Prüfe Medien : C_'+str(self.id)+'A_'+str(kamp.id)+' Medien gefunden !') + if not self.werbe_feld_selected: + _logger.info('Prüfe Medien : C_' + str(self.id) + 'A_' + str( + kamp.id) + ' Keine Felder im Vertrag') + raise ValidationError( + _("Vertrag hat keine Felder ! Kampagnen benötigen Felder - auch virtuelle")) + else: + for feld in self.werbe_feld_selected: + _logger.info('Prüfe Medien : C_' + str(self.id) + 'A_' + str(kamp.id)+'F_'+str(feld.id)) + if not feld: + _logger.info('Prüfe Medien : C_' + str(self.id) + 'A_' + str( + kamp.id) + ' Keine Felder im Vertrag') + raise ValidationError(_("Vertrag hat keine Felder ! Kampagnen benötigen Felder - auch virtuelle")) + else: + for media in feld.mediastructure.medias: + if not media: + _logger.info('Prüfe Medien : C_' + str(self.id) + 'A_' + str( + kamp.id) + ' Kein Medium in der Struktur F_' + str(feld.id) + 'M_' + str( + feld.mediastructure.id)) + else: + _logger.info('Prüfe Medien : C_' + str(self.id) + 'A_' + str(kamp.id) + 'F_' + str( + feld.id) + 'M_' + str(media.id)) + existmedia = self.env['dss.mediarelations'].search(['&',('ad','=',kamp.id),('mediatype','=',media.id),('field','=',feld.id)]) + if not existmedia: + newmedi = self.env['dss.mediarelations'].create( + {'field': feld.id, 'contract': self.id, 'project': self.project.id, + 'field_uuid': feld.uuid, 'ad': kamp.id, 'relname': media.medianame, + 'mediatype': media.id}) + _logger.info('Prüfe Medien : C_' + str(self.id) + 'A_' + str( + kamp.id) + ' Erstelle Medium : M_' + str(media.id) + ' -> ' + str( + newmedi.id)) + # mediaids.append(medias.ids) + _logger.info('Click auf Werbekampagne : C_'+str(self.id)+'A_'+str(kamp.id)+' gefundene Media '+str(mediaids)) + kampagne=self.env['dss.ads'].browse(kamp.id) + _logger.info('Click auf Werbekampagne : C_'+str(self.id)+'A_'+str(kamp.id)+' gefundene Media '+str(mediaids)+' Kampagne '+str(kampagne)) + if kampagne.need_media != medias: + _logger.info('Click auf Werbekampagne : C_'+str(self.id)+'A_'+str(kamp.id)+' Media unterschiede - setze Media '+str(mediaids)+'/'+str(kampagne.need_media)) + else: + _logger.info('Click auf Werbekampagne : C_'+str(self.id)+'A_'+str(kamp.id)+' Media gleich '+str(kampagne.need_media)) else: - _logger.info('Prüfe Medien : C_'+str(self.id)+'K_'+str(kamp.id)+' Keine Kampagne gefunden !') + _logger.info('Prüfe Medien : C_'+str(self.id)+'A_'+str(kamp.id)+' Keine Kampagne gefunden !') # _logger.info('Click auf Werbekampagne : '+str(self.id)+' 4 '+str(kampagne.id)) return { 'type': 'ir.actions.act_window', @@ -431,6 +563,8 @@ class dssmain(models.Model): grundsystemicon = fields.Image(related='grundsystemname.icon',tracking=True) grundsystem_default_adstructure = fields.Many2one(related='grundsystemname.default_adstructure',tracking=True) grundsystemicon5050 = fields.Image(related='grundsystemname.icon_5050') + grundsystem_ordner = fields.Char(related='grundsystemname.default_cloud_path') + standort = fields.Char('Hauptstandort des Projektes',tracking=True) vertragsschreiber = fields.Many2one('res.partner',domain="['&',('dsspartner','=',True),('dsspartner_vertrieb','=',True)]",tracking=True) standortpartner = fields.Many2one('res.partner',domain="['&',('dsspartner','=',True),('dsspartner_standort','=',True)]",tracking=True) vertriebspartner = fields.Many2many('res.partner',domain="['&',('dsspartner','=',True),('dsspartner_vertrieb','=',True)]",tracking=True) @@ -470,9 +604,13 @@ class dssmain(models.Model): # action['context'] = context # action['domain'] = domain # return action - - - + @api.onchange('cloudlink') + def _onchange_cloudlink(self): + _logger.info("Project "+str(self.id)+" Cloudpath changed") + if (self.cloudlink == ''): + if (self._origin.cloudlink != ''): + _logger.info("Project " + str(self.id) + " deleted - using standard path") + self.cloudlink = dssSettings._get_path_converted(self,self.env['dss.settings'].search([],limit=1).def_project_cloudpath,self) class dssgeraetetypen(models.Model): @@ -483,9 +621,12 @@ class dssgeraetetypen(models.Model): geraetename = fields.Char('Geraetename', required=True) uuid = fields.Char(default=lambda self: self._default_uuid(), required=True, readonly=True, copy=False, string='UUID') geraetetyp = fields.Selection([('SYS','Systemgerät'), ('STE','Steuergerät'), ('DIV','Anderes'), ('ANZ','Anzeigegerät'), ('PLY','Abspielgerät')],tracking=True) - grundsystem = fields.Many2one('dss.systemtypen', string="Gerät ist nutzbar für",tracking=True) +# grundsystem = fields.Many2one('dss.systemtypen', string="Gerät ist nutzbar für",tracking=True) + grundsystem = fields.Many2many('dss.systemtypen', string="Gerät ist nutzbar für",tracking=True) grundsystem_kennung = fields.Char(string='Kennung', related='grundsystem.kennung',tracking=True) + standort = fields.Char('Hauptstandort des Gerätes',tracking=True) + farbe = fields.Char('Grundfarbe',tracking=True) has_heizung = fields.Boolean('Mit Heizsystem',tracking=True) @@ -538,6 +679,8 @@ class dssgeraetetypen(models.Model): hw_umwelt = fields.Many2one('dss.geraetetypen',domain="['|',('geraetetyp','=','SYS'),('geraetetyp','=','DIV')]",tracking=True) zusatz_integrationen = fields.Many2one('dss.geraetetypen',tracking=True) + zusatz_zubehoer = fields.Char('Sonstiges Zubehör',tracking=True) + @api.model def _default_uuid(self): @@ -563,6 +706,7 @@ class dsssystemtypen(models.Model): icon = fields.Image() icon_5050 = fields.Image("Icon 50",compute='_compute_icon_5050') default_adstructure = fields.Many2one('dss.adstructures',String='Standard-Werbeaufbau') + default_cloud_path = fields.Char('Standard Cloud Path') @api.model def _default_uuid(self): return str(uuid.uuid4()) @@ -613,6 +757,7 @@ class dsssystems(models.Model): grundsystem = fields.Many2one('dss.systemtypen', string="Gerät ist nutzbar für") grundsystem_kennung = fields.Char(string='Kennung', related='grundsystem.kennung') + farbe = fields.Integer('Grundfarbe') has_heizung = fields.Boolean('Mit Heizsystem') @@ -1091,7 +1236,7 @@ class dsscontractads(models.Model): order = fields.Integer('Reihenfolge') # need_media = fields.Many2many('dss.mediarelations','ad',string='Medien') - need_media = fields.Many2many('dss.mediarelations','mediarelations_ad_relations','ad_id','mediarelations_id',string='Medien') + need_media = fields.One2many('dss.mediarelations','ad',string='Medien') work_state = fields.Many2one('dss.workstate',default=_default_work_state,tracking=True) work_state_color = fields.Char(related='work_state.color') @@ -1222,27 +1367,25 @@ class dsscontractads(models.Model): newkampagne = self.env['dss.ads'].create({'contract': self.contract.id, 'project': self.project.id, 'adname': 'AD_'+self.contract.contract_auto_name+' '+str(date.today()),'parent_ad':parent_id, 'adtype':'KCHN','ad_state':defadstate }) _logger.info('C_'+str(self.id)+' Kampagne erzeugt : '+str(newkampagne)) _logger.info('Prüfe Medien : C_'+str(self.id)+'K_'+str(newkampagne.id)) + mediaids = [] - medias = self.env['dss.mediarelations'].search([('ad','=',newkampagne.id)]) - if not medias: - _logger.info('Prüfe Medien : C_'+str(self.id)+'K_'+str(newkampagne.id)+' keine Medien gefunden !') - medias = self.env['dss.mediarelations'].search(['&',('contract','=',self.contract.id),('ad','=',False)]) - if not medias: - _logger.info('Prüfe Medien : C_'+str(self.id)+'K_'+str(newkampagne.id)+' keine Medien im vertrag gefunden !') - else: - for singlemedi in medias: - if not singlemedi: - _logger.info('Prüfe Medien : C_'+str(self.id)+'K_'+str(newkampagne.id)+' Kein Medium') - else: - newmedi=singlemedi.copy({'ad':newkampagne.id}) - mediaids.append(newmedi.id) - _logger.info('Prüfe Medien : C_'+str(self.id)+'K_'+str(newkampagne.id)+' Kopiere Medium : '+str(singlemedi)+' -> '+str(newmedi)) - medias = self.env['dss.mediarelations'].search([('ad','=',newkampagne.id)]) - _logger.info('Click auf Werbekampagne : C_'+str(self.id)+'K_'+str(newkampagne.id)+' neue Media '+str(mediaids)) - newkampagne.write({'need_media': [(6,0,medias.ids)]}) -# self.write({'need_media': [(5,0,0)]}) -# _logger.info('Click auf Werbekampagne : C_'+str(self.id)+'K_'+str(kamp.id)+' setze Media '+str(kamp.need_media)) -# _logger.info('Click auf Werbekampagne : '+str(self.id)+' 4 '+str(kampagne.id)) + for feld in self.contract.werbe_feld_selected: + for media in feld.mediastructure.medias: + if not media: + _logger.info('Prüfe Medien : C_' + str(self.contract.id) + 'K_' + str( + newkampagne.id) + ' Kein Medium in MedienStructur von F_' + str(feld.id) + 'M_' + str( + media.id)) + else: + newmedia = self.env['dss.mediarelations'].create( + {'field': feld.id, 'contract': self.contract.id, 'project': self.project.id, + 'field_uuid': feld.uuid, 'ad': newkampagne.id,'relname':media.medianame,'mediatype':media.id}) + _logger.info('Prüfe Medien : C_' + str(self.contract.id) + 'K_' + str( + newkampagne.id) + ' setze Vertrag für Medium : ' + str(newmedia.contract) + '/' + str( + newmedia.ad)) + mediaids.append(newmedia.id) + newkampagne.write({'need_media': [(6, 0, mediaids)]}) + _logger.info('Click auf Werbekampagne : C_' + str(self.contract.id) + 'A_' + str(newkampagne.id) + ' setze Media ') + return { 'type': 'ir.actions.act_window', 'view_type':'form', diff --git a/security/ir.model.access.csv b/security/ir.model.access.csv index e0cf7c4..d642c2f 100755 --- a/security/ir.model.access.csv +++ b/security/ir.model.access.csv @@ -18,4 +18,6 @@ digitalsignage_dss_adstructures_group_user,access.dss.adstructures,model_dss_ads digitalsignage_dss_mediatypes_group_user,access.dss.mediatypes,model_dss_mediatypes,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_advertisefields_group_user,access.dss.advertisefields,model_dss_advertisefields,base.group_user,1,1,1,1 \ No newline at end of file +digitalsignage_dss_advertisefields_group_user,access.dss.advertisefields,model_dss_advertisefields,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 diff --git a/static/images/LCD.jpg b/static/images/LCD.jpg old mode 100644 new mode 100755 diff --git a/static/images/LED.jpg b/static/images/LED.jpg old mode 100644 new mode 100755 diff --git a/static/images/tree_r.png b/static/images/tree_r.png old mode 100644 new mode 100755 diff --git a/static/images/tree_ud.png b/static/images/tree_ud.png old mode 100644 new mode 100755 diff --git a/static/src/css/color_widget.scss b/static/src/css/color_widget.scss old mode 100644 new mode 100755 diff --git a/static/src/img/app_store.png b/static/src/img/app_store.png old mode 100644 new mode 100755 diff --git a/static/src/img/bird.jpg b/static/src/img/bird.jpg old mode 100644 new mode 100755 diff --git a/static/src/img/chrome_store.png b/static/src/img/chrome_store.png old mode 100644 new mode 100755 diff --git a/static/src/img/planner_icon.png b/static/src/img/planner_icon.png old mode 100644 new mode 100755 diff --git a/static/src/img/play_store.png b/static/src/img/play_store.png old mode 100644 new mode 100755 diff --git a/static/src/img/project-custom-tasks.gif b/static/src/img/project-custom-tasks.gif old mode 100644 new mode 100755 diff --git a/static/src/img/tasks_icon.png b/static/src/img/tasks_icon.png old mode 100644 new mode 100755 diff --git a/static/src/img/top_left_arrow.png b/static/src/img/top_left_arrow.png old mode 100644 new mode 100755 diff --git a/static/src/img/web_planner_email.png b/static/src/img/web_planner_email.png old mode 100644 new mode 100755 diff --git a/static/src/img/web_planner_project.png b/static/src/img/web_planner_project.png old mode 100644 new mode 100755 diff --git a/static/src/img/web_planner_subtype.png b/static/src/img/web_planner_subtype.png old mode 100644 new mode 100755 diff --git a/views/.mc.menu b/views/.mc.menu old mode 100644 new mode 100755 diff --git a/views/1 b/views/1 old mode 100644 new mode 100755 diff --git a/views/2 b/views/2 old mode 100644 new mode 100755 diff --git a/views/dss_contracts.xml b/views/dss_contracts.xml index 5058b4e..359ca45 100755 --- a/views/dss_contracts.xml +++ b/views/dss_contracts.xml @@ -338,88 +338,79 @@ -
-
+
+
> - - + + > - - + + > - - + + > - - + +
-
> -
-
+
> +
+
- - + + -
+
- + - - - - - - - - - + + + + + + + + + - + - - - - -