diff options
| author | Stéphane Debauche <std@odoo.com> | 2020-01-27 13:52:15 +0000 |
|---|---|---|
| committer | Thibault Delavallée <tde@odoo.com> | 2020-01-28 09:14:43 +0000 |
| commit | b8966ac660cb6b899cd8e91b513cb2fc321548d7 (patch) | |
| tree | d0b4dad8335c569a216ac3b01a7a30d6ebd7e3f2 /addons | |
| parent | 3808fae4b24cdc5e177f2d5c24c2bc66eae42499 (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
Diffstat (limited to 'addons')
| -rw-r--r-- | addons/website_event_track/models/event_sponsor.py | 26 | ||||
| -rw-r--r-- | addons/website_event_track/views/event_sponsor_views.xml | 76 |
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> |
