Compare commits

...

2 Commits

Author SHA1 Message Date
jopster bf2e5de25e File behavior 2024-05-28 10:49:54 +02:00
jopster f652edf77d File behavior 2024-05-28 10:48:35 +02:00
19 changed files with 1601 additions and 51 deletions

8
.idea/.gitignore vendored Normal file
View File

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

10
.idea/DigitalSignage.iml Normal file
View File

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

View File

@ -0,0 +1,6 @@
<component name="InspectionProjectProfileManager">
<settings>
<option name="USE_PROJECT_PROFILE" value="false" />
<version value="1.0" />
</settings>
</component>

4
.idea/misc.xml Normal file
View File

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

8
.idea/modules.xml Normal file
View File

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

6
.idea/vcs.xml Normal file
View File

@ -0,0 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="VcsDirectoryMappings">
<mapping directory="" vcs="Git" />
</component>
</project>

10
Odoo/.idea/Odoo.iml Normal file
View File

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

View File

@ -0,0 +1,6 @@
<component name="InspectionProjectProfileManager">
<settings>
<option name="USE_PROJECT_PROFILE" value="false" />
<version value="1.0" />
</settings>
</component>

4
Odoo/.idea/misc.xml Normal file
View File

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

8
Odoo/.idea/modules.xml Normal file
View File

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

6
Odoo/.idea/vcs.xml Normal file
View File

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

50
Odoo/.idea/workspace.xml Normal file
View File

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

2
models/delete Normal file
View File

@ -0,0 +1,2 @@
_logger.info("Feld : %s %s" % (record._

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"

1292
models/dss_2.py Executable file

File diff suppressed because it is too large Load Diff

12
views/1 Normal file
View File

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

3
views/2 Normal file
View File

@ -0,0 +1,3 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>

View File

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

62
views/dss_mediarelations.xml Executable file
View File

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