diff options
| author | Patrick Hoste <pko@odoo.com> | 2020-01-10 15:08:41 +0000 |
|---|---|---|
| committer | Patrick Hoste <pko@odoo.com> | 2020-03-31 06:34:45 +0000 |
| commit | d2e02976e2934274cdc7a37616713ba6166ca1b7 (patch) | |
| tree | 6226e4fd95ce7f93f26ca3da675bbc5eca9b3a23 /addons/event/models | |
| parent | aebe199d80c5c7411c3db44386c7b9f3cc5b712d (diff) | |
[REF] (website_)event(_sale): change seats_availability field to seats_limited
PURPOSE
Change seats_availability selection field into a boolean field
and rename it to seats_limited for consistency.
SPECIFICATION
Change all the tests accordingly.
Task ID : 2198660
PR : #46659
Diffstat (limited to 'addons/event/models')
| -rw-r--r-- | addons/event/models/event_event.py | 34 | ||||
| -rw-r--r-- | addons/event/models/event_registration.py | 4 | ||||
| -rw-r--r-- | addons/event/models/event_ticket.py | 9 |
3 files changed, 20 insertions, 27 deletions
diff --git a/addons/event/models/event_event.py b/addons/event/models/event_event.py index 0a0dcbf63ab..7acafd5b7a6 100644 --- a/addons/event/models/event_event.py +++ b/addons/event/models/event_event.py @@ -139,10 +139,8 @@ class EventEvent(models.Model): string='Maximum Attendees Number', compute='_compute_from_event_type', copy=True, readonly=False, store=True, help="For each event you can define a maximum registration of seats(number of attendees), above this numbers the registrations are not accepted.") - seats_availability = fields.Selection( - [('unlimited', 'Unlimited'), ('limited', 'Limited')], - string='Maximum Attendees', required=True, - compute='_compute_seats_availability', copy=True, readonly=False, store=True) + seats_limited = fields.Boolean('Maximum Attendees', required=True, compute='_compute_seats_limited', + copy=True, readonly=False, store=True) seats_reserved = fields.Integer( string='Reserved Seats', store=True, readonly=True, compute='_compute_seats') @@ -227,11 +225,11 @@ class EventEvent(models.Model): seats_expected = event.seats_unconfirmed + event.seats_reserved + event.seats_used event.seats_expected = seats_expected - @api.depends('date_end', 'seats_available', 'seats_availability', 'event_ticket_ids.sale_available') + @api.depends('date_end', 'seats_available', 'seats_limited', 'event_ticket_ids.sale_available') def _compute_event_registrations_open(self): for event in self: event.event_registrations_open = event.date_end and (event.date_end > fields.Datetime.now()) and \ - (event.seats_available or event.seats_availability == 'unlimited') and \ + (event.seats_available or not event.seats_limited) and \ (not event.event_ticket_ids or any(ticket.sale_available for ticket in event.event_ticket_ids)) @api.depends('stage_id', 'kanban_state') @@ -306,7 +304,7 @@ class EventEvent(models.Model): event.date_tz = self.env.user.tz or 'UTC' @api.depends('event_type_id') - def _compute_seats_availability(self): + def _compute_seats_limited(self): """ Make it separate from ``_compute_from_event_type`` because otherwise a value given at create (see create override) would protect all other fields depending on event type id from being computed as compute method will be @@ -314,9 +312,9 @@ class EventEvent(models.Model): to compute protected field from re-computation) """ for event in self: if event.event_type_id.seats_max: - event.seats_availability = 'limited' - if not event.seats_availability: - event.seats_availability = 'unlimited' + event.seats_limited = True + if not event.seats_limited: + event.seats_limited = False @api.depends('event_type_id') def _compute_from_event_type(self): @@ -328,7 +326,6 @@ class EventEvent(models.Model): Updated by this method * seats_max -> triggers _compute_seats (all seats computation) * auto_confirm - * is_online -> triggers _compute_address_id (address_id computation) * event_mail_ids * event_ticket_ids -> triggers _compute_start_sale_date (start_sale_date computation) """ @@ -336,8 +333,6 @@ class EventEvent(models.Model): if not event.event_type_id: if not event.seats_max: event.seats_max = 0 - if not event.is_online: - event.is_online = False if not event.event_ticket_ids: event.event_ticket_ids = False continue @@ -348,8 +343,6 @@ class EventEvent(models.Model): if event.event_type_id.auto_confirm: event.auto_confirm = event.event_type_id.auto_confirm - event.is_online = event.event_type_id.is_online - # compute mailing information (force only if activated and mailing defined) if event.event_type_id.use_mail_schedule and event.event_type_id.event_type_mail_ids: event.event_mail_ids = [(5, 0, 0)] + [ @@ -371,9 +364,9 @@ class EventEvent(models.Model): if event.event_type_id.tag_ids: event.tag_ids = event.event_type_id.tag_ids - @api.constrains('seats_max', 'seats_available', 'seats_availability') + @api.constrains('seats_max', 'seats_available', 'seats_limited') def _check_seats_limit(self): - if any(event.seats_availability == 'limited' and event.seats_max and event.seats_available < 0 for event in self): + if any(event.seats_limited and event.seats_max and event.seats_available < 0 for event in self): raise ValidationError(_('No more available seats.')) @api.constrains('date_begin', 'date_end') @@ -399,7 +392,7 @@ class EventEvent(models.Model): @api.model def create(self, vals): - # Temporary fix for ``seats_availability`` and ``date_tz`` required fields (see ``_compute_from_event_type`` + # Temporary fix for ``seats_limited`` and ``date_tz`` required fields (see ``_compute_from_event_type`` vals.update(self._sync_required_computed(vals)) res = super(EventEvent, self).create(vals) @@ -420,9 +413,10 @@ class EventEvent(models.Model): return super(EventEvent, self).copy(default) def _sync_required_computed(self, values): + # TODO: See if the change to seats_limited affects this ? """ Call compute fields in cache to find missing values for required fields - (seats_availability and date_tz) in case they are not given in values """ - missing_fields = list(set(['seats_availability', 'date_tz']).difference(set(values.keys()))) + (seats_limited and date_tz) in case they are not given in values """ + missing_fields = list(set(['seats_limited', 'date_tz']).difference(set(values.keys()))) if missing_fields and values: cache_event = self.new(values) cache_event._compute_from_event_type() diff --git a/addons/event/models/event_registration.py b/addons/event/models/event_registration.py index a70931038b6..c5366c8acc9 100644 --- a/addons/event/models/event_registration.py +++ b/addons/event/models/event_registration.py @@ -92,7 +92,7 @@ class EventRegistration(models.Model): @api.constrains('event_id', 'state') def _check_seats_limit(self): for registration in self: - if registration.event_id.seats_availability == 'limited' and registration.event_id.seats_max and registration.event_id.seats_available < (1 if registration.state == 'draft' else 0): + if registration.event_id.seats_limited and registration.event_id.seats_max and registration.event_id.seats_available < (1 if registration.state == 'draft' else 0): raise ValidationError(_('No more seats available for this event.')) @api.constrains('event_ticket_id', 'state') @@ -151,7 +151,7 @@ class EventRegistration(models.Model): def _check_auto_confirmation(self): if any(not registration.event_id.auto_confirm or - (not registration.event_id.seats_available and registration.event_id.seats_availability == 'limited') for registration in self): + (not registration.event_id.seats_available and registration.event_id.seats_limited) for registration in self): return False return True diff --git a/addons/event/models/event_ticket.py b/addons/event/models/event_ticket.py index 8ae2c985fee..37572bc86eb 100644 --- a/addons/event/models/event_ticket.py +++ b/addons/event/models/event_ticket.py @@ -19,18 +19,17 @@ class EventTemplateTicket(models.Model): event_type_id = fields.Many2one( 'event.type', string='Event Category', ondelete='cascade', required=True) # seats - seats_availability = fields.Selection([ - ('limited', 'Limited'), ('unlimited', 'Unlimited')], string='Seats Limit', - readonly=True, store=True, compute='_compute_seats_availability') + seats_limited = fields.Boolean(string='Seats Limit', readonly=True, store=True, + compute='_compute_seats_limited') seats_max = fields.Integer( string='Maximum Seats', help="Define the number of available tickets. If you have too many registrations you will " "not be able to sell tickets anymore. Set 0 to ignore this rule set as unlimited.") @api.depends('seats_max') - def _compute_seats_availability(self): + def _compute_seats_limited(self): for ticket in self: - ticket.seats_availability = 'limited' if ticket.seats_max else 'unlimited' + ticket.seats_limited = ticket.seats_max @api.model def _get_event_ticket_fields_whitelist(self): |
