summaryrefslogtreecommitdiff
path: root/addons/website_event_track/models/event_sponsor.py
diff options
context:
space:
mode:
Diffstat (limited to 'addons/website_event_track/models/event_sponsor.py')
-rw-r--r--addons/website_event_track/models/event_sponsor.py96
1 files changed, 96 insertions, 0 deletions
diff --git a/addons/website_event_track/models/event_sponsor.py b/addons/website_event_track/models/event_sponsor.py
new file mode 100644
index 00000000..403134e0
--- /dev/null
+++ b/addons/website_event_track/models/event_sponsor.py
@@ -0,0 +1,96 @@
+# -*- coding: utf-8 -*-
+# Part of Odoo. See LICENSE file for full copyright and licensing details.
+
+from odoo import api, fields, models, _
+from odoo.modules.module import get_resource_path
+
+
+class Sponsor(models.Model):
+ _name = "event.sponsor"
+ _description = 'Event Sponsor'
+ _order = "sequence, sponsor_type_id"
+ _rec_name = '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)
+ url = fields.Char('Sponsor Website', compute='_compute_url', readonly=False, store=True)
+ sequence = fields.Integer('Sequence')
+ active = fields.Boolean(default=True)
+ # contact information
+ 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')
+ name = fields.Char('Sponsor Name', compute='_compute_name', readonly=False, store=True)
+ email = fields.Char('Sponsor Email', compute='_compute_email', readonly=False, store=True)
+ phone = fields.Char('Sponsor Phone', compute='_compute_phone', readonly=False, store=True)
+ mobile = fields.Char('Sponsor Mobile', compute='_compute_mobile', readonly=False, store=True)
+ # image
+ image_512 = fields.Image(
+ string="Logo", max_width=512, max_height=512,
+ compute='_compute_image_512', readonly=False, store=True)
+ image_256 = fields.Image("Image 256", related="image_512", max_width=256, max_height=256, store=False)
+ image_128 = fields.Image("Image 128", related="image_512", max_width=128, max_height=128, store=False)
+ website_image_url = fields.Char(
+ string='Image URL',
+ compute='_compute_website_image_url', compute_sudo=True, store=False)
+
+ @api.depends('partner_id')
+ def _compute_url(self):
+ for sponsor in self:
+ if sponsor.partner_id.website or not sponsor.url:
+ sponsor.url = sponsor.partner_id.website
+
+ @api.depends('partner_id')
+ def _compute_name(self):
+ self._synchronize_with_partner('name')
+
+ @api.depends('partner_id')
+ def _compute_email(self):
+ self._synchronize_with_partner('email')
+
+ @api.depends('partner_id')
+ def _compute_phone(self):
+ self._synchronize_with_partner('phone')
+
+ @api.depends('partner_id')
+ def _compute_mobile(self):
+ self._synchronize_with_partner('mobile')
+
+ @api.depends('partner_id')
+ def _compute_image_512(self):
+ self._synchronize_with_partner('image_512')
+
+ @api.depends('image_256', 'partner_id.image_256')
+ def _compute_website_image_url(self):
+ for sponsor in self:
+ if sponsor.image_256:
+ sponsor.website_image_url = self.env['website'].image_url(sponsor, 'image_256', size=256)
+ elif sponsor.partner_id.image_256:
+ sponsor.website_image_url = self.env['website'].image_url(sponsor.partner_id, 'image_256', size=256)
+ else:
+ sponsor.website_image_url = get_resource_path('website_event_track', 'static/src/img', 'event_sponsor_default_%d.png' % (sponsor.id % 1))
+
+ def _synchronize_with_partner(self, fname):
+ """ Synchronize with partner if not set. Setting a value does not write
+ on partner as this may be event-specific information. """
+ for sponsor in self:
+ if not sponsor[fname]:
+ sponsor[fname] = sponsor.partner_id[fname]
+
+ # ------------------------------------------------------------
+ # MESSAGING
+ # ------------------------------------------------------------
+
+ 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