예제 #1
0
 def test_iter(self):
     pd = PersistentDict((x, True) for x in range(10))
     if hasattr({}, 'iteritems'):
         assert list(pd.iteritems()) == list(zip(pd.iterkeys(), pd.itervalues()))
     else:
         assert list(pd.items()) == list(zip(pd.keys(), pd.values()))
     assert list(pd.items()) == list(zip(pd.keys(), pd.values()))
예제 #2
0
파일: document.py 프로젝트: mgax/notespace
class Note(Persistent, MutableMapping):
    interface.implements(INote)

    def __init__(self, doc, id, props={}):
        self.document = doc
        self.id = id
        self._props = PersistentDict(props)
        self._children = PersistentList()

    def __setitem__(self, key, value):
        if value is None:
            del self._props[key]
        else:
            self._props[key] = value
        for subscriber in self.document.subscribers:
            if hasattr(subscriber, 'prop_change'):
                subscriber.prop_change(self, key, value)

    def __getitem__(self, key):
        return self._props[key]

    def __delitem__(self, key):
        raise NotImplementedError

    def keys(self):
        return self._props.keys()

    def children_ids(self):
        for child_id in self._children:
            yield child_id

    def children(self):
        for child_id in self._children:
            yield self.document.get_note(child_id)
예제 #3
0
class CUser(Persistent):
    def __init__(self, jid):
        self.jid = jid
        self.items_pending = PersistentList() # [CItem, ...]
        self.config = PersistentDict()
        self.feeds = PersistentDict() # {CFeed: send first notification?}
        
        
    def __len__(self):
        return len(self.feeds)
            
        
    def subs_feed(self, feeditem, sendFirstNoti=False):
        """Add a feed item in 'feeds' dict."""
        if not self.has_feed(feeditem):
            self.feeds[feeditem] = sendFirstNoti
            return True
        return False
        
        
    def unsubs_feed(self, feeditem):
        """Delete a feed item from 'feeds' dict."""
        if self.has_feed(feeditem):
            del self.feeds[feeditem]
            return True
        return False
            
            
    def has_feed(self, feeditem):
        """Search the url feed in 'feeds' dict"""
        for x in self.feeds.keys():
            if x.url == feeditem.url:
                return True
        return False
        
        
    def enableNotifications(self, feeditem):
        self.feeds[feeditem] = True
        
        
    def getNotification(self, feeditem):
        return self.feeds[feeditem]
        
    
    def clear_items(self):
        self.items_pending = PersistentList()
        
        
    def setup(self, action, mode):
        self.config[action] = mode
        return True
        
        
    def getConfig(self, key):
        return self.config.get(key)
예제 #4
0
class CFeeds(Persistent):
    def __init__(self):
        self.data = PersistentDict() # {url feed: CFeed}
        
        
    def __getitem__(self, key):
        return self.data[key]

    def __setitem__(self, key, item):
        self.data[key] = item

    def __delitem__(self, key):
        self._p_note_change()
        del self.data[key]

    def get(self, key):
        return self.data.get(key)

    def keys(self):
        return self.data.keys()

    def values(self):
        return self.data.values()
예제 #5
0
 def test_clear(self):
     pd = PersistentDict((x, True) for x in range(10))
     assert pd.has_key(2)
     pd.clear()
     assert not pd.has_key(2)
     assert list(pd.keys()) == []
예제 #6
0
 def iter(self):
     pd = PersistentDict((x, True) for x in range(10))
     assert list(pd.iteritems()) == list(zip(pd.iterkeys(), pd.itervalues()))
     assert list(pd.items()) == list(zip(pd.keys(), pd.values()))
예제 #7
0
 def clear(self):
     pd = PersistentDict((x, True) for x in range(10))
     assert pd.has_key(2)
     pd.clear()
     assert not pd.has_key(2)
     assert list(pd.keys()) == []
예제 #8
0
 def iter(self):
     pd = PersistentDict((x, True) for x in range(10))
     assert list(pd.iteritems()) == list(zip(pd.iterkeys(),
                                             pd.itervalues()))
     assert list(pd.items()) == list(zip(pd.keys(), pd.values()))