[Zope3-Users] OOBTree problem

Yann VOTE yannvote at yahoo.fr
Mon Sep 10 01:39:55 EDT 2007


Hello all,

Here's what I put in the code of my webapp for debugging purpose.
self.context.subscribers is an OOBTree() (it's the code for a view):

  for k in self.context.subscribers.keys():
    print k
    try:
      print self.context.subscribers[k]
    except KeyError:
      print 'Oops!'

And here is the result:

  <gaaz.Members.member.Member object at 0x80e3d72c>
  Oops!
  <gaaz.Members.member.Member object at 0x80e3d62c>
  (datetime.date(2007, 9, 5), True)
  <gaaz.Members.member.Member object at 0x80e3d6ec>
  (datetime.date(2007, 9, 5), True)

The btree has three keys, but one raise a KeyError. Can someone please
explain this mystery ?

Maybe more details will help. I have a persistent class representing
events in a planning. I also want to manage a list of people who want to
participate to these events.

  class Event(Persistent):
    ...

    def __init__(self):
      self.subscribers = OOBTree()

    ...

The 'subscribers' attribute represents the list. The keys are the
people, the values are a tuple (datetime.date, boolean) representing the
subscription date and if the subscription has been confirmed or not.

This class also has methods for manipulating this 'subscribers'
attribute:

  def addSubscriber(self, member):
    self.subscribers.update(((member, (datetime.date.today(), False)),))

  def confirmSubscriber(self, member):
    date, old = self.subscribers.get(member) 
    self.subscribers.update(((member, (date, True)),))

  def unconfirmSubscriber(self, member):
    date, old = self.subscribers.get(member) 
    self.subscribers.update(((member, (date, False)),))

  def removeSubscriber(self, member):
    del self.subscribers[member]

Also note that the problem only occurs when I add a new person in some
other container.

Am I doing something wrong ?

Thanks,

Yann


More information about the Zope3-users mailing list