[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
This commit is contained in:
Stéphane Debauche
2020-01-28 09:14:43 +00:00
committed by Thibault Delavallée
parent 3808fae4b2
commit b8966ac660
2 changed files with 90 additions and 12 deletions
@@ -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
@@ -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>