Compare commits
2 Commits
cbd55b3073
...
bf2e5de25e
| Author | SHA1 | Date |
|---|---|---|
|
|
bf2e5de25e | |
|
|
f652edf77d |
|
|
@ -0,0 +1,8 @@
|
|||
# Default ignored files
|
||||
/shelf/
|
||||
/workspace.xml
|
||||
# Editor-based HTTP Client requests
|
||||
/httpRequests/
|
||||
# Datasource local storage ignored files
|
||||
/dataSources/
|
||||
/dataSources.local.xml
|
||||
|
|
@ -0,0 +1,10 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<module type="PYTHON_MODULE" version="4">
|
||||
<component name="NewModuleRootManager">
|
||||
<content url="file://$MODULE_DIR$">
|
||||
<excludeFolder url="file://$MODULE_DIR$/.venv" />
|
||||
</content>
|
||||
<orderEntry type="inheritedJdk" />
|
||||
<orderEntry type="sourceFolder" forTests="false" />
|
||||
</component>
|
||||
</module>
|
||||
|
|
@ -0,0 +1,6 @@
|
|||
<component name="InspectionProjectProfileManager">
|
||||
<settings>
|
||||
<option name="USE_PROJECT_PROFILE" value="false" />
|
||||
<version value="1.0" />
|
||||
</settings>
|
||||
</component>
|
||||
|
|
@ -0,0 +1,4 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="ProjectRootManager" version="2" project-jdk-name="Python 3.7 (DigitalSignage)" project-jdk-type="Python SDK" />
|
||||
</project>
|
||||
|
|
@ -0,0 +1,8 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="ProjectModuleManager">
|
||||
<modules>
|
||||
<module fileurl="file://$PROJECT_DIR$/.idea/DigitalSignage.iml" filepath="$PROJECT_DIR$/.idea/DigitalSignage.iml" />
|
||||
</modules>
|
||||
</component>
|
||||
</project>
|
||||
|
|
@ -0,0 +1,6 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="VcsDirectoryMappings">
|
||||
<mapping directory="" vcs="Git" />
|
||||
</component>
|
||||
</project>
|
||||
|
|
@ -0,0 +1,10 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<module type="PYTHON_MODULE" version="4">
|
||||
<component name="NewModuleRootManager">
|
||||
<content url="file://$MODULE_DIR$">
|
||||
<excludeFolder url="file://$MODULE_DIR$/.venv" />
|
||||
</content>
|
||||
<orderEntry type="inheritedJdk" />
|
||||
<orderEntry type="sourceFolder" forTests="false" />
|
||||
</component>
|
||||
</module>
|
||||
|
|
@ -0,0 +1,6 @@
|
|||
<component name="InspectionProjectProfileManager">
|
||||
<settings>
|
||||
<option name="USE_PROJECT_PROFILE" value="false" />
|
||||
<version value="1.0" />
|
||||
</settings>
|
||||
</component>
|
||||
|
|
@ -0,0 +1,4 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="ProjectRootManager" version="2" project-jdk-name="Python 3.7 (Odoo)" project-jdk-type="Python SDK" />
|
||||
</project>
|
||||
|
|
@ -0,0 +1,8 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="ProjectModuleManager">
|
||||
<modules>
|
||||
<module fileurl="file://$PROJECT_DIR$/.idea/Odoo.iml" filepath="$PROJECT_DIR$/.idea/Odoo.iml" />
|
||||
</modules>
|
||||
</component>
|
||||
</project>
|
||||
|
|
@ -0,0 +1,6 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="VcsDirectoryMappings">
|
||||
<mapping directory="$PROJECT_DIR$/.." vcs="Git" />
|
||||
</component>
|
||||
</project>
|
||||
|
|
@ -0,0 +1,50 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="ChangeListManager">
|
||||
<list default="true" id="15a5bad5-8421-488a-8034-4cfa13ebc85c" name="Changes" comment="">
|
||||
<change beforePath="$PROJECT_DIR$/../models/dss.py" beforeDir="false" afterPath="$PROJECT_DIR$/../models/dss.py" afterDir="false" />
|
||||
</list>
|
||||
<option name="SHOW_DIALOG" value="false" />
|
||||
<option name="HIGHLIGHT_CONFLICTS" value="true" />
|
||||
<option name="HIGHLIGHT_NON_ACTIVE_CHANGELIST" value="false" />
|
||||
<option name="LAST_RESOLUTION" value="IGNORE" />
|
||||
</component>
|
||||
<component name="Git.Settings">
|
||||
<option name="RECENT_GIT_ROOT_PATH" value="$PROJECT_DIR$/.." />
|
||||
</component>
|
||||
<component name="ProjectColorInfo"><![CDATA[{
|
||||
"associatedIndex": 6
|
||||
}]]></component>
|
||||
<component name="ProjectId" id="2h5Z6L4vEUsiXGtb5bondLWHMSH" />
|
||||
<component name="ProjectViewState">
|
||||
<option name="hideEmptyMiddlePackages" value="true" />
|
||||
<option name="showLibraryContents" value="true" />
|
||||
</component>
|
||||
<component name="PropertiesComponent"><![CDATA[{
|
||||
"keyToString": {
|
||||
"RunOnceActivity.ShowReadmeOnStart": "true",
|
||||
"git-widget-placeholder": "main",
|
||||
"nodejs_package_manager_path": "npm",
|
||||
"vue.rearranger.settings.migration": "true"
|
||||
}
|
||||
}]]></component>
|
||||
<component name="SharedIndexes">
|
||||
<attachedChunks>
|
||||
<set>
|
||||
<option value="bundled-js-predefined-1d06a55b98c1-91d5c284f522-JavaScript-PY-241.15989.155" />
|
||||
</set>
|
||||
</attachedChunks>
|
||||
</component>
|
||||
<component name="SpellCheckerSettings" RuntimeDictionaries="0" Folders="0" CustomDictionaries="0" DefaultDictionary="application-level" UseSingleDictionary="true" transferred="true" />
|
||||
<component name="TaskManager">
|
||||
<task active="true" id="Default" summary="Default task">
|
||||
<changelist id="15a5bad5-8421-488a-8034-4cfa13ebc85c" name="Changes" comment="" />
|
||||
<created>1716885724794</created>
|
||||
<option name="number" value="Default" />
|
||||
<option name="presentableId" value="Default" />
|
||||
<updated>1716885724794</updated>
|
||||
<workItem from="1716885729604" duration="30000" />
|
||||
</task>
|
||||
<servers />
|
||||
</component>
|
||||
</project>
|
||||
|
|
@ -0,0 +1,2 @@
|
|||
|
||||
_logger.info("Feld : %s %s" % (record._
|
||||
|
|
@ -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"
|
||||
|
|
|
|||
File diff suppressed because it is too large
Load Diff
|
|
@ -0,0 +1,12 @@
|
|||
<record id="action_dss_advertisefields_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</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>
|
||||
|
|
@ -0,0 +1,77 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<odoo>
|
||||
|
||||
|
||||
<record id="dss_advertisefields_view_tree" model="ir.ui.view">
|
||||
<field name="name">dss_advertisefields_tree</field>
|
||||
<field name="model">dss.advertisefields</field>
|
||||
<field name="priority" eval="16"/>
|
||||
<field name="arch" type="xml">
|
||||
<tree string="Werbefelder">
|
||||
<field name="feldname"/>
|
||||
<field name="project"/>
|
||||
<field name="contract"/>
|
||||
<field name="color_used" widget="color"/>
|
||||
<field name="color_unused" widget="color"/>
|
||||
</tree>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record id="dss_advertisefields_view_form" model="ir.ui.view">
|
||||
<field name="name">dss_advertisefields_form</field>
|
||||
<field name="model">dss.advertisefields</field>
|
||||
<field name="arch" type="xml">
|
||||
<form>
|
||||
<sheet>
|
||||
<group>
|
||||
<group name="basethings">
|
||||
<field name="feldname" string="Feldname"/>
|
||||
<field name="project" string="Projekt"/>
|
||||
<field name="contract" string="Vertrag"/>
|
||||
<div colspan="2" style="font-color:#E00000;"><p>Die Struktur kann erst nach Speichern der Grunddaten eingerichtet werden !</p></div>
|
||||
<field name="mediastructure" attrs="{'invisible': [('issaved','!=',True)]}" />
|
||||
<field name="color_used" widget="color"/>
|
||||
<field name="color_unused" widget="color"/>
|
||||
</group>
|
||||
</group>
|
||||
<notebook>
|
||||
<page name="informations" string="Aufbau">
|
||||
<field name="mediastructure"/>
|
||||
<field name="mediastructure_medias">
|
||||
<tree string="Struktur" editable="False" create="False">
|
||||
<field name="medianame"/>
|
||||
<field name="mediatype"/>
|
||||
<field name="description"/>
|
||||
</tree>
|
||||
</field>
|
||||
</page>
|
||||
<page name="informations" string="Aufbau">
|
||||
<field name="issaved" string="gespeichert"/>
|
||||
<field name="date_create" string="Erstellt am"/>
|
||||
<field name="user_create" string="Erstellt am"/>
|
||||
</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_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</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,62 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<odoo>
|
||||
|
||||
<record id="dss_mediarelations_view_tree" model="ir.ui.view">
|
||||
<field name="name">dss_mediarelations_tree</field>
|
||||
<field name="model">dss.mediarelations</field>
|
||||
<field name="priority" eval="16"/>
|
||||
<field name="arch" type="xml">
|
||||
<tree string="Projectstatus">
|
||||
<field name="field" string="Feld"/>
|
||||
<field name="ad" string="Kampagne"/>
|
||||
<field name="contract" string="Vertrag"/>
|
||||
<field name="project" string="Projekt"/>
|
||||
<field name="relname"/>
|
||||
<field name="mediatype" string="Zuordnung"/>
|
||||
<field name="mediafile" widget="image"/>
|
||||
<field name="secured_ro" widget="boolean_toggle"/>
|
||||
<field name="used_ro" widget="boolean_toggle"/>
|
||||
<field name="isreference" widget="boolean_toggle"/>
|
||||
</tree>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record id="dss_mediarelations_view_form" model="ir.ui.view">
|
||||
<field name="name">dss_mediarelations_form</field>
|
||||
<field name="model">dss.mediarelations</field>
|
||||
<field name="arch" type="xml">
|
||||
<form>
|
||||
<sheet>
|
||||
<group>
|
||||
<group name="basethings">
|
||||
<field name="relname" string="Relationsname"/>
|
||||
<field name="project" string="Projekt"/>
|
||||
<field name="contract" string="Vertrag"/>
|
||||
<field name="ad" string="Kampagnen-Zuordnung"/>
|
||||
<field name="field" string="Feld-Zuordnung"/>
|
||||
<field name="mediatype" string="Medium"/>
|
||||
<field name="secured_ro" widget="boolean_toggle"/>
|
||||
<field name="used_ro" widget="boolean_toggle"/>
|
||||
<field name="isreference" widget="boolean_toggle"/>
|
||||
<field name="mediafile" string="Medium-Inhalt" widget="image"/>
|
||||
</group>
|
||||
</group>
|
||||
</sheet>
|
||||
</form>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record id="action_dss_mediarelations_view" model="ir.actions.act_window">
|
||||
<field name="name">DigitalSignage mediarelations</field>
|
||||
<field name="type">ir.actions.act_window</field>
|
||||
<field name="res_model">dss.mediarelations</field>
|
||||
<field name="view_mode">tree,form</field>
|
||||
<field name="context">{}</field>
|
||||
<field name="help" type="html">
|
||||
<p class="'o_view_nocontent_smiling_face">
|
||||
Neue Relation erstellen
|
||||
</p>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
</odoo>
|
||||
Loading…
Reference in New Issue