summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorStéphane Debauche <std@odoo.com>2020-01-27 13:52:15 +0000
committerThibault Delavallée <tde@odoo.com>2020-01-28 09:14:43 +0000
commitb8966ac660cb6b899cd8e91b513cb2fc321548d7 (patch)
treed0b4dad8335c569a216ac3b01a7a30d6ebd7e3f2
parent3808fae4b24cdc5e177f2d5c24c2bc66eae42499 (diff)
[IMP] website_event_track: improve event sponsor integration
Purpose ======= Improve sponsor management in order to transform it into a real business document allowing to communicate with them directly. Specifications ============== Add integration with mailgateway and activities through mail.thread and mail.activity.mixin inheritance. Improve sponsor views: add a real form view and add a small kanban view displaying some partner / sponsor information. Task ID 2119333 PR #40949
-rw-r--r--addons/website_event_track/models/event_sponsor.py26
-rw-r--r--addons/website_event_track/views/event_sponsor_views.xml76
2 files changed, 90 insertions, 12 deletions
diff --git a/addons/website_event_track/models/event_sponsor.py b/addons/website_event_track/models/event_sponsor.py
index 53a587e1a2b..8c4ec119c67 100644
--- a/addons/website_event_track/models/event_sponsor.py
+++ b/addons/website_event_track/models/event_sponsor.py
@@ -1,7 +1,7 @@
# -*- coding: utf-8 -*-
# Part of Odoo. See LICENSE file for full copyright and licensing details.
-from odoo import fields, models
+from odoo import fields, models, _
class SponsorType(models.Model):
@@ -16,11 +16,29 @@ class SponsorType(models.Model):
class Sponsor(models.Model):
_name = "event.sponsor"
_description = 'Event Sponsor'
- _order = "sequence"
+ _order = "sequence, sponsor_type_id"
+ _rec_name = 'partner_name'
+ _inherit = ['mail.thread', 'mail.activity.mixin']
event_id = fields.Many2one('event.event', 'Event', required=True)
sponsor_type_id = fields.Many2one('event.sponsor.type', 'Sponsoring Type', required=True)
partner_id = fields.Many2one('res.partner', 'Sponsor/Customer', required=True)
+ partner_name = fields.Char('Name', related='partner_id.name')
+ partner_email = fields.Char('Email', related='partner_id.email')
+ partner_phone = fields.Char('Phone', related='partner_id.phone')
+ partner_mobile = fields.Char('Mobile', related='partner_id.mobile')
url = fields.Char('Sponsor Website')
- sequence = fields.Integer('Sequence', store=True, related='sponsor_type_id.sequence', readonly=False)
- image_128 = fields.Image(string="Logo", related='partner_id.image_128', store=True, readonly=False)
+ sequence = fields.Integer('Sequence')
+ image_128 = fields.Image(
+ string="Logo", related='partner_id.image_128', store=True, readonly=False)
+
+ def _message_get_suggested_recipients(self):
+ recipients = super(Sponsor, self)._message_get_suggested_recipients()
+ for sponsor in self:
+ if sponsor.partner_id:
+ sponsor._message_add_suggested_recipient(
+ recipients,
+ partner=sponsor.partner_id,
+ reason=_('Sponsor')
+ )
+ return recipients
diff --git a/addons/website_event_track/views/event_sponsor_views.xml b/addons/website_event_track/views/event_sponsor_views.xml
index dd44044f9b6..3d48dbf6396 100644
--- a/addons/website_event_track/views/event_sponsor_views.xml
+++ b/addons/website_event_track/views/event_sponsor_views.xml
@@ -9,8 +9,8 @@
<form string="Event Sponsor Types">
<sheet>
<group>
- <field name="sequence"/>
<field name="name"/>
+ <field name="sequence" groups="base.group_no_one"/>
</group>
</sheet>
</form>
@@ -46,23 +46,83 @@
</field>
</record>
- <record id="event_sponsor_action_from_event" model="ir.actions.act_window">
- <field name="name">Event Sponsors</field>
- <field name="res_model">event.sponsor</field>
- <field name="view_mode">tree,form</field>
- <field name="context">{'search_default_event_id': active_id, 'default_event_id': active_id}</field>
+ <record id="event_sponsor_view_form" model="ir.ui.view">
+ <field name="name">event.sponsor.view.form</field>
+ <field name="model">event.sponsor</field>
+ <field name="arch" type="xml">
+ <form>
+ <sheet>
+ <field name="image_128" widget="image" class="oe_avatar"/>
+ <h1><field name="partner_id"/></h1>
+ <group>
+ <group>
+ <field name="event_id"/>
+ <field name="partner_email" widget="email"/>
+ <field name="url" widget="url"/>
+ <field name="sequence" groups="base.group_no_one"/>
+ </group>
+ <group>
+ <field name="sponsor_type_id"/>
+ <field name="partner_phone" widget="phone" options="{'enable_sms': True}"/>
+ <field name="partner_mobile" widget="phone" options="{'enable_sms': True}"/>
+ </group>
+ </group>
+ </sheet>
+ <div class="oe_chatter">
+ <field name="message_follower_ids" widget="mail_followers" groups="base.group_user"/>
+ <field name="activity_ids" widget="mail_activity"/>
+ <field name="message_ids" widget="mail_thread"/>
+ </div>
+ </form>
+ </field>
</record>
<record id="event_sponsor_view_tree" model="ir.ui.view">
- <field name="name">event.sponsor.tree</field>
+ <field name="name">event.sponsor.view.tree</field>
<field name="model">event.sponsor</field>
<field name="arch" type="xml">
- <tree editable="bottom">
+ <tree>
+ <field name="sequence" widget="handle"/>
<field name="partner_id"/>
<field name="url"/>
<field name="sponsor_type_id"/>
</tree>
</field>
</record>
+
+ <record id="event_sponsor_view_kanban" model="ir.ui.view">
+ <field name="name">event.sponsor.view.kanban</field>
+ <field name="model">event.sponsor</field>
+ <field name="arch" type="xml">
+ <kanban>
+ <field name="id"/>
+ <field name="url"/>
+ <field name="partner_email"/>
+ <field name="sponsor_type_id"/>
+ <templates>
+ <t t-name="kanban-box">
+ <div class="oe_kanban_global_click overflow-hidden">
+ <div class="row my-auto">
+ <img t-att-src="kanban_image('event.sponsor', 'image_128', record.id.raw_value)" alt="Sponsor image" class="col-4"/>
+ <div class="col-8">
+ <h1 class="o_kanban_record_title"><field name="partner_id"/></h1>
+ <div>Level: <field name="sponsor_type_id"/></div>
+ <span class="o_text_overflow" t-esc="record.partner_email.value"/>
+ <span class="o_text_overflow" t-esc="record.url.value"/>
+ </div>
+ </div>
+ </div>
+ </t>
+ </templates>
+ </kanban>
+ </field>
+ </record>
+
+ <record id="event_sponsor_action_from_event" model="ir.actions.act_window">
+ <field name="name">Event Sponsors</field>
+ <field name="res_model">event.sponsor</field>
+ <field name="view_mode">kanban,tree,form</field>
+ <field name="context">{'search_default_event_id': active_id, 'default_event_id': active_id}</field>
+ </record>
</data>
</odoo>