File behavior

This commit is contained in:
jopster 2024-05-28 10:48:35 +02:00
parent cbd55b3073
commit f652edf77d
1 changed files with 27 additions and 51 deletions

View File

@ -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"