#304 closed defect (fixed)
sessionModifSchedule.py error
| Reported by: | dmartinc | Owned by: | dmartinc |
|---|---|---|---|
| Priority: | high | Milestone: | v0.97.0 |
| Component: | Timetable | Version: | 0.97.0 |
| Keywords: | timetable, session, room booking | Cc: |
Description
In some events there are exceptions when the event managers go to sessionModifSchedule.py.
Since 0.97 is in indico.cern.ch there has been 1 error report, 38 exceptions similar to these one, and there were 16 in indicobeta.
It does not happen with all events; maybe only with those that have had a room reservation done and then deleted?
From dmartinc: It seems that when a Session object is being pickled, its conference is also pickled, and then the rooms booked for the conference are pickled, ultimately this calls a roombooking method. However in reservation.py, lines 191-194, the "root" object obtained (root of the RB ZODB) is None.
Example of exception:
exception message => unsubscriptable object
exception type => exceptions.TypeError
traceback =>
File "/usr/lib/python2.4/site-packages/cds_indico-0.97b2-py2.4.egg/MaKaC/webinterface/rh/base.py", line 476, in process
res = self._process()
File "/usr/lib/python2.4/site-packages/cds_indico-0.97b2-py2.4.egg/MaKaC/webinterface/rh/sessionModif.py", line 1042, in _process
return p.display(**params)
File "/usr/lib/python2.4/site-packages/cds_indico-0.97b2-py2.4.egg/MaKaC/webinterface/pages/base.py", line 146, in display
return "%s%s%s"%( self._getHTMLHeader(), \
File "/usr/lib/python2.4/site-packages/cds_indico-0.97b2-py2.4.egg/MaKaC/webinterface/pages/main.py", line 160, in _display
body = WMainBase(self._getBody( params ), self._timezone, self._getNavigationDrawer(),
File "/usr/lib/python2.4/site-packages/cds_indico-0.97b2-py2.4.egg/MaKaC/webinterface/pages/conferences.py", line 2213, in _getBody
return self._applyFrame( self._getPageContent( params ) )
File "/usr/lib/python2.4/site-packages/cds_indico-0.97b2-py2.4.egg/MaKaC/webinterface/pages/sessions.py", line 683, in _getPageContent
body = wcomponents.WTabControl( self._tabCtrl, self._getAW() ).getHTML( self._getTabContent( params ) )
File "/usr/lib/python2.4/site-packages/cds_indico-0.97b2-py2.4.egg/MaKaC/webinterface/pages/sessions.py", line 1477, in _getTabContent
return self._getTTPage(params)
File "/usr/lib/python2.4/site-packages/cds_indico-0.97b2-py2.4.egg/MaKaC/webinterface/pages/conferences.py", line 3241, in _getTTPage
return wc.getHTML(params)
File "/usr/lib/python2.4/site-packages/cds_indico-0.97b2-py2.4.egg/MaKaC/webinterface/wcomponents.py", line 187, in getHTML
vars = self.getVars()
File "/usr/lib/python2.4/site-packages/cds_indico-0.97b2-py2.4.egg/MaKaC/webinterface/pages/sessions.py", line 1502, in getVars
eventInfo = DictPickler.pickle(self._session.getConference(), timezone=tz)
File "/usr/lib/python2.4/site-packages/cds_indico-0.97b2-py2.4.egg/MaKaC/common/PickleJar.py", line 197, in pickle
return DictPickler._pickle(object, globalPickleMap[clazz], timezone)
File "/usr/lib/python2.4/site-packages/cds_indico-0.97b2-py2.4.egg/MaKaC/common/PickleJar.py", line 248, in _pickle
result = method(object)
File "/usr/lib/python2.4/site-packages/cds_indico-0.97b2-py2.4.egg/MaKaC/conference.py", line 3332, in getFavoriteRooms
roomList.extend(map(lambda x: x._getName(), self.getBookedRooms()))
File "/usr/lib/python2.4/site-packages/cds_indico-0.97b2-py2.4.egg/MaKaC/conference.py", line 2229, in getBookedRooms
for r in self.getRoomBookingList():
File "/usr/lib/python2.4/site-packages/cds_indico-0.97b2-py2.4.egg/MaKaC/conference.py", line 2204, in getRoomBookingList
r = resvGuid.getReservation()
File "/usr/lib/python2.4/site-packages/cds_indico-0.97b2-py2.4.egg/MaKaC/rb_location.py", line 305, in getReservation
return CrossLocationQueries.getReservations(
File "/usr/lib/python2.4/site-packages/cds_indico-0.97b2-py2.4.egg/MaKaC/rb_location.py", line 421, in getReservations
return Location.parse( location ).factory.newReservation().getReservations( **kwargs )
File "/usr/lib/python2.4/site-packages/cds_indico-0.97b2-py2.4.egg/MaKaC/plugins/RoomBooking/default/reservation.py", line 194, in getReservations
return root[_RESERVATIONS].get( resvID )
request handler => <class 'MaKaC.webinterface.rh.sessionModif.RHSessionModifSchedule'>
url => http://indico.cern.ch/sessionModifSchedule.py?sessionId=6&confId=76883
parameters =>
sessionId = 6
view = parallel
days = all
confId = 76883
Change History (5)
comment:1 Changed 6 years ago by dmartinc
- Priority changed from normal to high
comment:2 Changed 6 years ago by dmartinc
- Owner set to dmartinc
- Status changed from new to accepted
comment:3 Changed 6 years ago by jbenito
- Milestone set to v0.97
comment:4 Changed 6 years ago by david.martin.clavo@…
- Resolution set to fixed
- Status changed from accepted to closed
commit a21bf83183a0895356e16f780402066fe88970db
Author: David Martín Clavo <david.martin.clavo@…>
Date: Thu Mar 11 17:05:57 2010 +0100
[FIX] Missing RoomBookingDBMixin in sessionModif
-fixes #304
comment:5 Changed 5 years ago by David Martín Clavo <david.martin.clavo@…>
Note: See
TracTickets for help on using
tickets.

After some research lurking in the DB:
This happens for any event where a reservation is made through the "Room Booking" section.
I was confused because in the event 76883 (of the above traceback) there were apparently no bookings. But it seems that if a booking is rejected, there is still a value inside the self.__roomBookingGuids list of the Conference object; it's not erased, just marked as rejected. I then tried with an event of my own and was able to reproduce.
In conclusion: making a room booking for an event makes the sessionModifSchedule.py page go bad.
PS: to get to the sessionModifSchedule.py page: Timetable section->eedit properties of a session->timetable tab inside the session modif interface.