Odoo Mindscape. Understand Odoo faster. Explore modules, fields, dependencies and version differences in one place instead of digging through the source code.

Module: Event Sessions

Entity: event.session

Compute Method: _compute_seats

Inputs Method Outputs
"""Similar to core's :meth:`event_event._compute_seats`"""
for event in self:
            event.seats_reserved = event.seats_used = event.seats_available = 0
state_field = self._map_registration_state_to_seats_fields()
base_vals = dict((fname, 0) for fname in state_field.values())
results = defaultdict(lambda: defaultdict(lambda: 0))
if self.ids:
            query = """
                SELECT session_id, state, count(session_id)
                FROM event_registration
                WHERE session_id IN %s
                AND state IN %s AND active = true
                GROUP BY session_id, state
            """
            self.env["event.registration"].flush_model(
                ["session_id", "state", "active"]
            )
            self.env.cr.execute(query, (tuple(self.ids), tuple(state_field.keys())))
            for session_id, state, num in self.env.cr.fetchall():
                results[session_id][state_field[state]] = num
for session in self:
            session.update(results.get(session._origin.id or session.id, base_vals))
            if session.seats_max > 0:
                session.seats_available = session.seats_max - (
                    session.seats_reserved + session.seats_used
                )

            session.seats_taken = session.seats_reserved + session.seats_used

Back to entity