diff --git a/addons/website_event/controllers/main.py b/addons/website_event/controllers/main.py index 904151bd..7355cd17 100644 --- a/addons/website_event/controllers/main.py +++ b/addons/website_event/controllers/main.py @@ -83,6 +83,8 @@ class WebsiteEventController(http.Controller): def dom_without(without): domain = [('state', "in", ['draft', 'confirm', 'done'])] + domain += [('website_ids', 'in', request.website.id)] if \ + not request.env.user.has_group('website.group_website_publisher') else [] for key, search in domain_search.items(): if key != without: domain += search @@ -255,6 +257,7 @@ class WebsiteEventController(http.Controller): for registration in registrations: registration['event_id'] = event + registration['website_id'] = request.website.id Attendees += Attendees.sudo().create( Attendees._prepare_attendee_values(registration)) diff --git a/addons/website_event/data/event_demo.xml b/addons/website_event/data/event_demo.xml index 69257dd9..f7863612 100644 --- a/addons/website_event/data/event_demo.xml +++ b/addons/website_event/data/event_demo.xml @@ -3,10 +3,12 @@ True + True + flectra @@ -163,9 +165,11 @@ True + True + flectra @@ -322,20 +326,25 @@ True + True + flectra True + True + True + flectra diff --git a/addons/website_event/models/event.py b/addons/website_event/models/event.py index 1dc20262..d19ea6d8 100644 --- a/addons/website_event/models/event.py +++ b/addons/website_event/models/event.py @@ -17,6 +17,11 @@ class Event(models.Model): _inherit = ['event.event', 'website.seo.metadata', 'website.published.mixin'] website_published = fields.Boolean(track_visibility='onchange') + website_ids = fields.Many2many('website', 'website_event_pub_rel', + 'website_id', 'event_id', + string='Websites', copy=False, + help='List of websites in which ' + 'Event is published.') is_participating = fields.Boolean("Is Participating", compute="_compute_is_participating") @@ -131,3 +136,29 @@ class Event(models.Model): 'target': 'new', 'url': '/report/html/%s/%s?enable_editor' % ('event.event_event_report_template_badge', self.id), } + + +class EventRegistration(models.Model): + + _inherit = 'event.registration' + + website_id = fields.Many2one('website', string="Website") + + @api.model + def _prepare_attendee_values(self, registration): + """ Method preparing the values to create new attendees based on a + sale order line. It takes some registration data (dict-based) that are + optional values coming from an external input like a web page. This method + is meant to be inherited in various addons that sell events. """ + partner_id = registration.pop('partner_id', self.env.user.partner_id) + event_id = registration.pop('event_id', False) + data = { + 'name': registration.get('name', partner_id.name), + 'phone': registration.get('phone', partner_id.phone), + 'email': registration.get('email', partner_id.email), + 'partner_id': partner_id.id, + 'website_id': registration.get('website_id', partner_id.email), + 'event_id': event_id and event_id.id or False, + } + data.update({key: registration[key] for key in registration.keys() if key in self._fields}) + return data diff --git a/addons/website_event/views/event_templates.xml b/addons/website_event/views/event_templates.xml index 1436fa70..3a433b5e 100644 --- a/addons/website_event/views/event_templates.xml +++ b/addons/website_event/views/event_templates.xml @@ -53,12 +53,12 @@
  • -
    +

    Participating - Online - unpublished + Online + unpublished

    @@ -680,7 +680,7 @@

    Upcoming Events

    - + diff --git a/addons/website_event/views/event_views.xml b/addons/website_event/views/event_views.xml index 80a7f6e8..6827f336 100644 --- a/addons/website_event/views/event_views.xml +++ b/addons/website_event/views/event_views.xml @@ -54,6 +54,20 @@ states="done" string="Edit Badges"/> + + + + + + + + view.event.registration.form.inherit + event.registration + + + + +