diff --git a/addons/event_sale/event_sale.py b/addons/event_sale/event_sale.py index b7cb37571a4..0f2b1edbca0 100644 --- a/addons/event_sale/event_sale.py +++ b/addons/event_sale/event_sale.py @@ -19,6 +19,7 @@ # ############################################################################## +from openerp.addons.event.event import event_event as Event from openerp.osv import fields, osv from openerp.tools.translate import _ @@ -137,6 +138,11 @@ class event_event(osv.osv): pass return [] + def _get_ticket_events(self, cr, uid, ids, context=None): + # `self` is the event.event.ticket model here! + return list(set(ticket.event_id.id + for ticket in self.browse(cr, uid, ids, context))) + _columns = { 'event_ticket_ids': fields.one2many('event.event.ticket', "event_id", "Event Ticket"), 'seats_max': fields.function(_get_seats_max, @@ -144,7 +150,15 @@ class event_event(osv.osv): help="The maximum registration level is equal to the sum of the maximum registration of event ticket." + "If you have too much registrations you are not able to confirm your event. (0 to ignore this rule )", type='integer', - readonly=True) + readonly=True), + 'seats_available': fields.function(Event._get_seats, oldname='register_avail', string='Available Seats', + type='integer', multi='seats_reserved', + store={ + 'event.registration': (Event._get_events_from_registrations, ['state'], 10), + 'event.event': (lambda self, cr, uid, ids, c = {}: ids, + ['seats_max', 'registration_ids'], 20), + 'event.event.ticket': (_get_ticket_events, ['seats_max'], 10), + }), } _defaults = { 'event_ticket_ids': _get_tickets