diff --git a/models/dss.py b/models/dss.py index 2160b0d..93ca490 100755 --- a/models/dss.py +++ b/models/dss.py @@ -112,10 +112,10 @@ class dsscontracts(models.Model): werbe_feld_selected = fields.One2many('dss.advertisefields','contract',string='Werbefelder',tracking=True) - need_media = fields.Many2many('dss.mediarelations','mediarelations_contract_rel','contract_id','mediarelations_id',string='benötigte Medien') - last_media = fields.One2many('dss.mediarelations','contract',string='Medien') +# need_media = fields.Many2many('dss.mediarelations','mediarelations_contract_rel','contract_id','mediarelations_id',string='benötigte Medien') + last_media = fields.One2many('dss.mediarelations','contract',string='Medien',domain="[('isreference','=',False)]") # last_media = fields.Many2many('dss.mediarelations','mediarelations_ad_relations','contract_id','mediarelations_id',string='Medien') -# need_media = fields.Many2many('dss.mediarelations','contract',string='Medien') + need_media = fields.One2many('dss.mediarelations','contract',string='Medien',domain="[('isreference','=',True)]") # need_media_computed = fields.One2many('dss.mediarelations','field',compute='_get_media_list') # need_media_computed = fields.One2many('dss.mediarelations','uuid',domain="[('field','in',werbe_feld_selected)]") @@ -187,23 +187,6 @@ class dsscontracts(models.Model): cloudlink = fields.Char('Cloud Verzeichnis',help='Verzeichnis für das Project innerhalb des Projekt Ordners') - @api.onchange('werbe_feld_selected') - def _onchange_werbe_feld_selected(self) : - for record in self : -# self.write({'need_media': [(5,0,0)]}) - medias_ids = [] - for feld in record.werbe_feld_selected: - _logger.info("Feld : %s %s" % (record._origin.id,feld._origin.id)) - medias = self.env['dss.mediarelations'].search([('field','=',feld._origin.id)]) - for med in medias: - med.contract=record._origin.id - medias_ids.append(med.id) - self.write({'need_media': [(6,0,medias_ids)]}) - _logger.info("Media : "+str(record.need_media)) -# mrelobj.write({'field': feldid }) -# mrelobj.write({'project': record.project.id}) - - @api.constrains('client_id') def _check_client_id(self) : for record in self : @@ -300,19 +283,19 @@ class dsscontracts(models.Model): # context = action['context'] ds = self.env['dss.ads'].search([('contract','=',self.id),('ad_is_lastpos','=',True)],limit=1) if not ds: - _logger.info('Click auf Werbekampagne : C_'+str(self.id)+' - keine letzte Kampagne') - ds = self.env['dss.ads'].search([('contract','=',self.id)],limit=1) + _logger.info('Click auf Werbekampagne : C_'+str(self.id)+' - keine letzte Kampagne') + ds = self.env['dss.ads'].search([('contract','=',self.id)],limit=1) else: - _logger.info('Click auf Werbekampagne : C_'+str(self.id)+'A_'+str(ds.id)+' - Kampagne gefunden ') + _logger.info('Click auf Werbekampagne : C_'+str(self.id)+'A_'+str(ds.id)+' - Kampagne gefunden ') self.ads_last_ad = ds # prüfen ob LetzteKampagne medien hat _logger.info('Click auf Werbekampagne : C_'+str(self.id)+'A_'+str(ds.id)+' - Suche evtl Medien der Kampagne ') medias = self.env['dss.mediarelations'].search(['&',('contract','=',self.id),('ad','=',ds.id)]) if medias: - _logger.info('Click auf Werbekampagne : C_'+str(self.id)+'A_'+str(ds.id)+' - Medien gefunden '+str(medias.ids)) - self.write({'last_media': [(6,0,medias.ids)]}) + _logger.info('Click auf Werbekampagne : C_'+str(self.id)+'A_'+str(ds.id)+' - Medien gefunden '+str(medias.ids)) + self.write({'last_media': [(6,0,medias.ids)]}) else: - _logger.info('Click auf Werbekampagne : C_'+str(self.id)+'A_'+str(ds.id)+' - Keine Medien gefunden ') + _logger.info('Click auf Werbekampagne : C_'+str(self.id)+'A_'+str(ds.id)+' - Keine Medien gefunden ') # Medien erzeugen wenn nicht vorhanden kampagne=self.env['dss.ads'].search([('contract','=',self.id)],limit=1) @@ -330,11 +313,13 @@ class dsscontracts(models.Model): _logger.info('Click auf Werbekampagne : '+str(self.id)+' Kampagne erstellt '+str(kampagne.id)) kampagne.parent_ad = kampagne.id mediaids = [] - for singlemedi in self.need_media: - if not singlemedi: - _logger.info('Prüfe Medien : C_'+str(self.id)+'K_'+str(kampagne.id)+' Kein Medium in NEED_MEDIA') - else: - newmedi=singlemedi.copy({'contract':self.id,'ad':kampagne.id}) + 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)]}) @@ -828,17 +813,7 @@ class dssadvertisefields(models.Model): resstr = mtyp.structurename _logger.info(resstr + ' uuid : '+record.mediastructure.uuid) foundused = self.env['dss.mediarelations'].search_count(["&",('field_uuid','=',record.uuid),'|',('secured_ro','=',True),('used_ro','=',True)]) - if foundused == 0 : - self.env['dss.mediarelations'].search([('field_uuid','=',record.uuid)]).unlink() - for media in mtyp.medias : - resstr = media.medianame - _logger.info('Erstellung : '+str(self._origin.id)+'/'+str(record.id)+'('+str(record._origin.id)+')/'+str(media.id)+'/'+str(record.project.id)+' '+str(restr)) - mrelobj = self.env['dss.mediarelations'].create({'field':record.id,'relname':resstr,'mediatype': media.id,'field_uuid':record.uuid,'project':record.project.id}) - feldid = self._origin.id - mrelobj.write({'field': feldid }) - mrelobj.write({'project': record.project.id}) - _logger.info('Erzeugt : '+str(mrelobj)+' - '+str(mrelobj.project)+' - '+str(mrelobj.field)) - else : + if foundused != 0 : _logger.info('change - Canceled !') raise ValidationError(_("Datensatz kann nicht gewechselt werden ! Es sind benutzt Medien in der Kampagne ! Bitte erst diese freigeben !")) self.date_lastedit = str(date.today()) @@ -929,6 +904,7 @@ class dssmediarelations(models.Model): mediafile_file = fields.Char('Dateiname') secured_ro = fields.Boolean('Gesperrt ro') used_ro = fields.Boolean('Benutzt ro') + isreference = fields.Boolean('Für Referenz') # @api.onchange('field') # def _onchange_field(self): @@ -1070,15 +1046,15 @@ class dsscontractads(models.Model): contract.ads_last_ad = n_record return result - @api.depends('need_media') - def _getmedialist(self): - mlist = [] - mlist = self.env['dss.mediarelations'].search([('ad','=',self.id)]) - if mlist != False: - _logger.info('AD Need_Medias A_'+str(self)+' - Computed Medias '+str(mlist)) - self.need_media = mlist.ids - else: - self.need_media = False +# @api.depends('need_media') +# def _getmedialist(self): +# mlist = [] +# mlist = self.env['dss.mediarelations'].search([('ad','=',self.id)]) +# if mlist != False: +# _logger.info('AD Need_Medias A_'+str(self)+' - Computed Medias '+str(mlist)) +# self.need_media = mlist.ids +# else: +# self.need_media = False _name = "dss.ads" _description = "DigitalSignage Werbekampagnen Phasen"