summaryrefslogtreecommitdiff
path: root/addons/event/models
diff options
context:
space:
mode:
authorPatrick Hoste <pko@odoo.com>2020-01-10 15:08:41 +0000
committerPatrick Hoste <pko@odoo.com>2020-03-31 06:34:45 +0000
commitd2e02976e2934274cdc7a37616713ba6166ca1b7 (patch)
tree6226e4fd95ce7f93f26ca3da675bbc5eca9b3a23 /addons/event/models
parentaebe199d80c5c7411c3db44386c7b9f3cc5b712d (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.py34
-rw-r--r--addons/event/models/event_registration.py4
-rw-r--r--addons/event/models/event_ticket.py9
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):