[MERGE] Forward-port of latest saas-3 bugfixes, up to rev. e7a0b1bb9095048914e11eb191...
[odoo/odoo.git] / addons / event_sale / event_sale.py
index 90cac81..276362d 100644 (file)
@@ -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 _
 
@@ -142,6 +143,12 @@ class event_event(osv.osv):
         return list(set(ticket.event_id.id
                             for ticket in self.browse(cr, uid, ids, context)))
 
+    # proxy method, can't import parent method directly as unbound_method: it would receive
+    # an invalid `self` <event_registration> when called by ORM
+    def _events_from_registrations(self, cr, uid, ids, context=None):
+        # `self` is the event.registration model when called by ORM
+        return self.pool['event.event']._get_events_from_registrations(cr, uid, ids, context=context)
+
     _columns = {
         'event_ticket_ids': fields.one2many('event.event.ticket', "event_id", "Event Ticket"),
         'seats_max': fields.function(_get_seats_max,
@@ -154,6 +161,17 @@ class event_event(osv.osv):
               'event.event': (lambda self, cr, uid, ids, c = {}: ids, ['event_ticket_ids'], 20),
               'event.event.ticket': (_get_ticket_events, ['seats_max'], 10),
             }),
+        'seats_available': fields.function(Event._get_seats, oldname='register_avail', string='Available Seats',
+                                           type='integer', multi='seats_reserved',
+                                           store={
+                                              'event.registration': (_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),
+                                           }),
+        'badge_back': fields.html('Badge Back', readonly=False, translate=True, states={'done': [('readonly', True)]}),
+        'badge_innerleft': fields.html('Badge Innner Left', readonly=False, translate=True, states={'done': [('readonly', True)]}),
+        'badge_innerright': fields.html('Badge Inner Right', readonly=False, translate=True, states={'done': [('readonly', True)]}),
     }
     _defaults = {
         'event_ticket_ids': _get_tickets
@@ -187,7 +205,7 @@ class event_ticket(osv.osv):
         
 
     _columns = {
-        'name': fields.char('Name', size=64, required=True),
+        'name': fields.char('Name', size=64, required=True, translate=True),
         'event_id': fields.many2one('event.event', "Event", required=True, ondelete='cascade'),
         'product_id': fields.many2one('product.product', 'Product', required=True, domain=[("event_type_id", "!=", False)]),
         'registration_ids': fields.one2many('event.registration', 'event_ticket_id', 'Registrations'),
@@ -242,4 +260,4 @@ class event_registration(osv.osv):
 
     _constraints = [
         (_check_ticket_seats_limit, 'No more available tickets.', ['event_ticket_id','nb_register','state']),
-    ]
\ No newline at end of file
+    ]