comparison idavoll/memory_backend.py @ 59:0fa161c00ed9

Use jid.JIDs everywhere in the backend. Fix subscription list retrieval in pgsql_backend, thereby actually making notifications work.
author Ralph Meijer <ralphm@ik.nu>
date Sat, 06 Nov 2004 17:07:47 +0000
parents 62fdb37234e5
children 0e642e5b4fb2
comparison
equal deleted inserted replaced
58:3e2e0040e3e0 59:0fa161c00ed9
47 try: 47 try:
48 node = self.nodes[node_id] 48 node = self.nodes[node_id]
49 except KeyError: 49 except KeyError:
50 raise backend.NodeNotFound 50 raise backend.NodeNotFound
51 else: 51 else:
52 return defer.succeed(node.affiliations.get(entity, None)) 52 return defer.succeed(node.affiliations.get(entity.full(), None))
53 53
54 def get_subscribers(self, node_id): 54 def get_subscribers(self, node_id):
55 try: 55 try:
56 node = self.nodes[node_id] 56 node = self.nodes[node_id]
57 except KeyError: 57 except KeyError:
58 raise backend.NodeNotFound 58 raise backend.NodeNotFound
59 else: 59 else:
60 subscriptions = self.nodes[node_id].subscriptions 60 subscriptions = self.nodes[node_id].subscriptions
61 subscribers = [s for s in subscriptions 61 subscribers = [jid.JID(s) for s in subscriptions
62 if subscriptions[s].state == 'subscribed'] 62 if subscriptions[s].state == 'subscribed']
63 return defer.succeed(subscribers) 63 return defer.succeed(subscribers)
64 64
65 def store_items(self, node_id, items, publisher): 65 def store_items(self, node_id, items, publisher):
66 for item in items: 66 for item in items:
72 node = self.nodes[node_id] 72 node = self.nodes[node_id]
73 except KeyError: 73 except KeyError:
74 raise backend.NodeNotFound 74 raise backend.NodeNotFound
75 75
76 try: 76 try:
77 subscription = node.subscriptions[subscriber] 77 subscription = node.subscriptions[subscriber.full()]
78 except: 78 except:
79 subscription = Subscription(state) 79 subscription = Subscription(state)
80 node.subscriptions[subscriber] = subscription 80 node.subscriptions[subscriber.full()] = subscription
81 81
82 return defer.succeed({'node': node_id, 82 return defer.succeed({'node': node_id,
83 'jid': subscriber, 83 'jid': subscriber,
84 'subscription': subscription.state}) 84 'subscription': subscription.state})
85 85
88 node = self.nodes[node_id] 88 node = self.nodes[node_id]
89 except KeyError: 89 except KeyError:
90 raise backend.NodeNotFound 90 raise backend.NodeNotFound
91 91
92 try: 92 try:
93 del node.subscriptions[subscriber] 93 del node.subscriptions[subscriber.full()]
94 except KeyError: 94 except KeyError:
95 raise backend.NotSubscribed 95 raise backend.NotSubscribed
96 96
97 return defer.succeed(None) 97 return defer.succeed(None)
98 98
99 def create_node(self, node_id, owner): 99 def create_node(self, node_id, owner):
100 if node_id in self.nodes: 100 if node_id in self.nodes:
101 raise backend.NodeExists 101 raise backend.NodeExists
102 102
103 node = Node(node_id) 103 node = Node(node_id)
104 node.affiliations[owner] = 'owner' 104 node.affiliations[owner.full()] = 'owner'
105 self.nodes[node_id] = node 105 self.nodes[node_id] = node
106 106
107 return defer.succeed(None) 107 return defer.succeed(None)
108 108
109 class BackendService(backend.BackendService): 109 class BackendService(backend.BackendService):