58 lines
2.8 KiB
Python

# -*- coding: utf-8 -*-
# Part of Odoo. See LICENSE file for full copyright and licensing details.
from odoo import fields, models
class EventBooth(models.Model):
_inherit = 'event.booth'
use_sponsor = fields.Boolean(related='booth_category_id.use_sponsor')
sponsor_type_id = fields.Many2one(related='booth_category_id.sponsor_type_id')
sponsor_id = fields.Many2one('event.sponsor', string='Sponsor', copy=False)
sponsor_name = fields.Char(string='Sponsor Name', related='sponsor_id.name')
sponsor_email = fields.Char(string='Sponsor Email', related='sponsor_id.email')
sponsor_mobile = fields.Char(string='Sponsor Mobile', related='sponsor_id.mobile')
sponsor_phone = fields.Char(string='Sponsor Phone', related='sponsor_id.phone')
sponsor_subtitle = fields.Char(string='Sponsor Slogan', related='sponsor_id.subtitle')
sponsor_website_description = fields.Html(string='Sponsor Description', related='sponsor_id.website_description')
sponsor_image_512 = fields.Image(string='Sponsor Logo', related='sponsor_id.image_512')
def action_view_sponsor(self):
action = self.env['ir.actions.act_window']._for_xml_id('website_event_exhibitor.event_sponsor_action')
action['views'] = [(False, 'form')]
action['res_id'] = self.sponsor_id.id
return action
def _get_or_create_sponsor(self, vals):
self.ensure_one()
sponsor_id = self.env['event.sponsor'].sudo().search([
('partner_id', '=', self.partner_id.id),
('sponsor_type_id', '=', self.sponsor_type_id.id),
('exhibitor_type', '=', self.booth_category_id.exhibitor_type),
('event_id', '=', self.event_id.id),
], limit=1)
if not sponsor_id:
values = {
'event_id': self.event_id.id,
'sponsor_type_id': self.sponsor_type_id.id,
'exhibitor_type': self.booth_category_id.exhibitor_type,
'partner_id': self.partner_id.id,
**{key.partition('sponsor_')[2]: value for key, value in vals.items() if key.startswith('sponsor_')},
}
# If confirmed from backend, we don't have _prepare_booth_registration_values
if not values.get('name'):
values['name'] = self.partner_id.name
if self.booth_category_id.exhibitor_type == 'online':
values.update({
'room_name': 'odoo-exhibitor-%s' % self.partner_id.name,
})
sponsor_id = self.env['event.sponsor'].sudo().create(values)
return sponsor_id.id
def _action_post_confirm(self, write_vals):
for booth in self:
if booth.use_sponsor and booth.partner_id:
booth.sponsor_id = booth._get_or_create_sponsor(write_vals)
super(EventBooth, self)._action_post_confirm(write_vals)