annotate idavoll/idavoll.py @ 142:812300cdbc22

Changed behaviour of retraction of items so that only the actually deleted item ids are returned, and no exception is raised for items that didn't actually exists.
author Ralph Meijer <ralphm@ik.nu>
date Tue, 12 Jul 2005 09:23:00 +0000
parents d79f0816f6c3
children 5191ba7c4df8
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
105
8d8946e67fcb Move to Twisted 2.0.
Ralph Meijer <ralphm@ik.nu>
parents: 102
diff changeset
1 from twisted.words.protocols.jabber import component
1
4cc41776b7d7 Initial revision
Ralph Meijer <ralphm@ik.nu>
parents:
diff changeset
2 from twisted.application import service
67
cdf17c4d3bf9 Made returning disco info use deferreds.
Ralph Meijer <ralphm@ik.nu>
parents: 63
diff changeset
3 from twisted.internet import defer
32
ddc08757ec1d Fire up several component.IServices that match the backend Services.
Ralph Meijer <ralphm@ik.nu>
parents: 26
diff changeset
4 import backend
1
4cc41776b7d7 Initial revision
Ralph Meijer <ralphm@ik.nu>
parents:
diff changeset
5 import pubsub
4cc41776b7d7 Initial revision
Ralph Meijer <ralphm@ik.nu>
parents:
diff changeset
6 import xmpp_error
73
5d7a924ebddb Reworked disco support.
Ralph Meijer <ralphm@ik.nu>
parents: 67
diff changeset
7 import disco
1
4cc41776b7d7 Initial revision
Ralph Meijer <ralphm@ik.nu>
parents:
diff changeset
8
4cc41776b7d7 Initial revision
Ralph Meijer <ralphm@ik.nu>
parents:
diff changeset
9 import sys
4cc41776b7d7 Initial revision
Ralph Meijer <ralphm@ik.nu>
parents:
diff changeset
10
140
d79f0816f6c3 Revert changes to error handling into disco calls.
Ralph Meijer <ralphm@ik.nu>
parents: 130
diff changeset
11 __version__ = '0.2'
d79f0816f6c3 Revert changes to error handling into disco calls.
Ralph Meijer <ralphm@ik.nu>
parents: 130
diff changeset
12
8
688992a789e4 Add disco support
Ralph Meijer <ralphm@ik.nu>
parents: 1
diff changeset
13 NS_VERSION = 'jabber:iq:version'
688992a789e4 Add disco support
Ralph Meijer <ralphm@ik.nu>
parents: 1
diff changeset
14
1
4cc41776b7d7 Initial revision
Ralph Meijer <ralphm@ik.nu>
parents:
diff changeset
15 IQ_GET = '/iq[@type="get"]'
4cc41776b7d7 Initial revision
Ralph Meijer <ralphm@ik.nu>
parents:
diff changeset
16 IQ_SET = '/iq[@type="set"]'
8
688992a789e4 Add disco support
Ralph Meijer <ralphm@ik.nu>
parents: 1
diff changeset
17 VERSION = IQ_GET + '/query[@xmlns="' + NS_VERSION + '"]'
73
5d7a924ebddb Reworked disco support.
Ralph Meijer <ralphm@ik.nu>
parents: 67
diff changeset
18 DISCO_INFO = IQ_GET + '/query[@xmlns="' + disco.NS_INFO + '"]'
5d7a924ebddb Reworked disco support.
Ralph Meijer <ralphm@ik.nu>
parents: 67
diff changeset
19 DISCO_ITEMS = IQ_GET + '/query[@xmlns="' + disco.NS_ITEMS + '"]'
1
4cc41776b7d7 Initial revision
Ralph Meijer <ralphm@ik.nu>
parents:
diff changeset
20
4cc41776b7d7 Initial revision
Ralph Meijer <ralphm@ik.nu>
parents:
diff changeset
21 class IdavollService(component.Service):
4cc41776b7d7 Initial revision
Ralph Meijer <ralphm@ik.nu>
parents:
diff changeset
22
32
ddc08757ec1d Fire up several component.IServices that match the backend Services.
Ralph Meijer <ralphm@ik.nu>
parents: 26
diff changeset
23 def componentConnected(self, xmlstream):
ddc08757ec1d Fire up several component.IServices that match the backend Services.
Ralph Meijer <ralphm@ik.nu>
parents: 26
diff changeset
24 self.xmlstream = xmlstream
ddc08757ec1d Fire up several component.IServices that match the backend Services.
Ralph Meijer <ralphm@ik.nu>
parents: 26
diff changeset
25 xmlstream.addObserver(VERSION, self.onVersion, 1)
ddc08757ec1d Fire up several component.IServices that match the backend Services.
Ralph Meijer <ralphm@ik.nu>
parents: 26
diff changeset
26 xmlstream.addObserver(DISCO_INFO, self.onDiscoInfo, 1)
ddc08757ec1d Fire up several component.IServices that match the backend Services.
Ralph Meijer <ralphm@ik.nu>
parents: 26
diff changeset
27 xmlstream.addObserver(DISCO_ITEMS, self.onDiscoItems, 1)
ddc08757ec1d Fire up several component.IServices that match the backend Services.
Ralph Meijer <ralphm@ik.nu>
parents: 26
diff changeset
28 xmlstream.addObserver(IQ_GET, self.iqFallback, -1)
ddc08757ec1d Fire up several component.IServices that match the backend Services.
Ralph Meijer <ralphm@ik.nu>
parents: 26
diff changeset
29 xmlstream.addObserver(IQ_SET, self.iqFallback, -1)
8
688992a789e4 Add disco support
Ralph Meijer <ralphm@ik.nu>
parents: 1
diff changeset
30
73
5d7a924ebddb Reworked disco support.
Ralph Meijer <ralphm@ik.nu>
parents: 67
diff changeset
31 def get_disco_info(self, node):
5d7a924ebddb Reworked disco support.
Ralph Meijer <ralphm@ik.nu>
parents: 67
diff changeset
32 info = []
57
445a61f872b6 Use NodeCreationService for pgsql backend, too.
Ralph Meijer <ralphm@ik.nu>
parents: 52
diff changeset
33
32
ddc08757ec1d Fire up several component.IServices that match the backend Services.
Ralph Meijer <ralphm@ik.nu>
parents: 26
diff changeset
34 if not node:
73
5d7a924ebddb Reworked disco support.
Ralph Meijer <ralphm@ik.nu>
parents: 67
diff changeset
35 info.append(disco.Feature(disco.NS_ITEMS))
5d7a924ebddb Reworked disco support.
Ralph Meijer <ralphm@ik.nu>
parents: 67
diff changeset
36 info.append(disco.Feature(NS_VERSION))
57
445a61f872b6 Use NodeCreationService for pgsql backend, too.
Ralph Meijer <ralphm@ik.nu>
parents: 52
diff changeset
37
73
5d7a924ebddb Reworked disco support.
Ralph Meijer <ralphm@ik.nu>
parents: 67
diff changeset
38 return defer.succeed(info)
32
ddc08757ec1d Fire up several component.IServices that match the backend Services.
Ralph Meijer <ralphm@ik.nu>
parents: 26
diff changeset
39
ddc08757ec1d Fire up several component.IServices that match the backend Services.
Ralph Meijer <ralphm@ik.nu>
parents: 26
diff changeset
40 def onVersion(self, iq):
ddc08757ec1d Fire up several component.IServices that match the backend Services.
Ralph Meijer <ralphm@ik.nu>
parents: 26
diff changeset
41 iq.swapAttributeValues("to", "from")
ddc08757ec1d Fire up several component.IServices that match the backend Services.
Ralph Meijer <ralphm@ik.nu>
parents: 26
diff changeset
42 iq["type"] = "result"
ddc08757ec1d Fire up several component.IServices that match the backend Services.
Ralph Meijer <ralphm@ik.nu>
parents: 26
diff changeset
43 name = iq.addElement("name", None, 'Idavoll')
140
d79f0816f6c3 Revert changes to error handling into disco calls.
Ralph Meijer <ralphm@ik.nu>
parents: 130
diff changeset
44 version = iq.addElement("version", None, __version__)
32
ddc08757ec1d Fire up several component.IServices that match the backend Services.
Ralph Meijer <ralphm@ik.nu>
parents: 26
diff changeset
45 self.send(iq)
ddc08757ec1d Fire up several component.IServices that match the backend Services.
Ralph Meijer <ralphm@ik.nu>
parents: 26
diff changeset
46 iq.handled = True
1
4cc41776b7d7 Initial revision
Ralph Meijer <ralphm@ik.nu>
parents:
diff changeset
47
32
ddc08757ec1d Fire up several component.IServices that match the backend Services.
Ralph Meijer <ralphm@ik.nu>
parents: 26
diff changeset
48 def onDiscoInfo(self, iq):
73
5d7a924ebddb Reworked disco support.
Ralph Meijer <ralphm@ik.nu>
parents: 67
diff changeset
49 dl = []
32
ddc08757ec1d Fire up several component.IServices that match the backend Services.
Ralph Meijer <ralphm@ik.nu>
parents: 26
diff changeset
50 node = iq.query.getAttribute("node")
8
688992a789e4 Add disco support
Ralph Meijer <ralphm@ik.nu>
parents: 1
diff changeset
51
32
ddc08757ec1d Fire up several component.IServices that match the backend Services.
Ralph Meijer <ralphm@ik.nu>
parents: 26
diff changeset
52 for c in self.parent:
105
8d8946e67fcb Move to Twisted 2.0.
Ralph Meijer <ralphm@ik.nu>
parents: 102
diff changeset
53 if component.IService.providedBy(c):
73
5d7a924ebddb Reworked disco support.
Ralph Meijer <ralphm@ik.nu>
parents: 67
diff changeset
54 if hasattr(c, "get_disco_info"):
5d7a924ebddb Reworked disco support.
Ralph Meijer <ralphm@ik.nu>
parents: 67
diff changeset
55 dl.append(c.get_disco_info(node))
92
878a5b7697f2 Consume errors in DeferredLists.
Ralph Meijer <ralphm@ik.nu>
parents: 91
diff changeset
56 d = defer.DeferredList(dl, fireOnOneErrback=1, consumeErrors=1)
140
d79f0816f6c3 Revert changes to error handling into disco calls.
Ralph Meijer <ralphm@ik.nu>
parents: 130
diff changeset
57 d.addCallback(self._disco_info_results, iq, node)
102
f4d725a94202 Fix bug in how errors are handled in disco info request.
Ralph Meijer <ralphm@ik.nu>
parents: 101
diff changeset
58 d.addErrback(self._error, iq)
67
cdf17c4d3bf9 Made returning disco info use deferreds.
Ralph Meijer <ralphm@ik.nu>
parents: 63
diff changeset
59 d.addCallback(self.send)
cdf17c4d3bf9 Made returning disco info use deferreds.
Ralph Meijer <ralphm@ik.nu>
parents: 63
diff changeset
60
cdf17c4d3bf9 Made returning disco info use deferreds.
Ralph Meijer <ralphm@ik.nu>
parents: 63
diff changeset
61 iq.handled = True
cdf17c4d3bf9 Made returning disco info use deferreds.
Ralph Meijer <ralphm@ik.nu>
parents: 63
diff changeset
62
73
5d7a924ebddb Reworked disco support.
Ralph Meijer <ralphm@ik.nu>
parents: 67
diff changeset
63 def _disco_info_results(self, results, iq, node):
5d7a924ebddb Reworked disco support.
Ralph Meijer <ralphm@ik.nu>
parents: 67
diff changeset
64 info = []
5d7a924ebddb Reworked disco support.
Ralph Meijer <ralphm@ik.nu>
parents: 67
diff changeset
65 for i in results:
5d7a924ebddb Reworked disco support.
Ralph Meijer <ralphm@ik.nu>
parents: 67
diff changeset
66 info.extend(i[1])
67
cdf17c4d3bf9 Made returning disco info use deferreds.
Ralph Meijer <ralphm@ik.nu>
parents: 63
diff changeset
67
73
5d7a924ebddb Reworked disco support.
Ralph Meijer <ralphm@ik.nu>
parents: 67
diff changeset
68 if node and not info:
67
cdf17c4d3bf9 Made returning disco info use deferreds.
Ralph Meijer <ralphm@ik.nu>
parents: 63
diff changeset
69 return xmpp_error.error_from_iq(iq, 'item-not-found')
32
ddc08757ec1d Fire up several component.IServices that match the backend Services.
Ralph Meijer <ralphm@ik.nu>
parents: 26
diff changeset
70 else:
ddc08757ec1d Fire up several component.IServices that match the backend Services.
Ralph Meijer <ralphm@ik.nu>
parents: 26
diff changeset
71 iq.swapAttributeValues("to", "from")
ddc08757ec1d Fire up several component.IServices that match the backend Services.
Ralph Meijer <ralphm@ik.nu>
parents: 26
diff changeset
72 iq["type"] = "result"
101
b75fcc554358 Added support for disco info meta data.
Ralph Meijer <ralphm@ik.nu>
parents: 97
diff changeset
73 for item in info:
b75fcc554358 Added support for disco info meta data.
Ralph Meijer <ralphm@ik.nu>
parents: 97
diff changeset
74 #domish.Element.addChild should probably do this for all
b75fcc554358 Added support for disco info meta data.
Ralph Meijer <ralphm@ik.nu>
parents: 97
diff changeset
75 # subclasses of Element
b75fcc554358 Added support for disco info meta data.
Ralph Meijer <ralphm@ik.nu>
parents: 97
diff changeset
76 item.parent = iq.query
b75fcc554358 Added support for disco info meta data.
Ralph Meijer <ralphm@ik.nu>
parents: 97
diff changeset
77
b75fcc554358 Added support for disco info meta data.
Ralph Meijer <ralphm@ik.nu>
parents: 97
diff changeset
78 iq.query.addChild(item)
67
cdf17c4d3bf9 Made returning disco info use deferreds.
Ralph Meijer <ralphm@ik.nu>
parents: 63
diff changeset
79
cdf17c4d3bf9 Made returning disco info use deferreds.
Ralph Meijer <ralphm@ik.nu>
parents: 63
diff changeset
80 return iq
cdf17c4d3bf9 Made returning disco info use deferreds.
Ralph Meijer <ralphm@ik.nu>
parents: 63
diff changeset
81
101
b75fcc554358 Added support for disco info meta data.
Ralph Meijer <ralphm@ik.nu>
parents: 97
diff changeset
82 def _error(self, result, iq):
b75fcc554358 Added support for disco info meta data.
Ralph Meijer <ralphm@ik.nu>
parents: 97
diff changeset
83 print "Got error on index %d:" % result.value[1]
b75fcc554358 Added support for disco info meta data.
Ralph Meijer <ralphm@ik.nu>
parents: 97
diff changeset
84 result.value[0].printBriefTraceback()
89
ccf699adae5e Merge from RELENG_0: Fix bug in handling uncaught exceptions.
Ralph Meijer <ralphm@ik.nu>
parents: 85
diff changeset
85 return xmpp_error.error_from_iq(iq, 'internal-server-error')
8
688992a789e4 Add disco support
Ralph Meijer <ralphm@ik.nu>
parents: 1
diff changeset
86
32
ddc08757ec1d Fire up several component.IServices that match the backend Services.
Ralph Meijer <ralphm@ik.nu>
parents: 26
diff changeset
87 def onDiscoItems(self, iq):
73
5d7a924ebddb Reworked disco support.
Ralph Meijer <ralphm@ik.nu>
parents: 67
diff changeset
88 dl = []
5d7a924ebddb Reworked disco support.
Ralph Meijer <ralphm@ik.nu>
parents: 67
diff changeset
89 node = iq.query.getAttribute("node")
5d7a924ebddb Reworked disco support.
Ralph Meijer <ralphm@ik.nu>
parents: 67
diff changeset
90
5d7a924ebddb Reworked disco support.
Ralph Meijer <ralphm@ik.nu>
parents: 67
diff changeset
91 for c in self.parent:
105
8d8946e67fcb Move to Twisted 2.0.
Ralph Meijer <ralphm@ik.nu>
parents: 102
diff changeset
92 if component.IService.providedBy(c):
73
5d7a924ebddb Reworked disco support.
Ralph Meijer <ralphm@ik.nu>
parents: 67
diff changeset
93 if hasattr(c, "get_disco_items"):
5d7a924ebddb Reworked disco support.
Ralph Meijer <ralphm@ik.nu>
parents: 67
diff changeset
94 dl.append(c.get_disco_items(node))
92
878a5b7697f2 Consume errors in DeferredLists.
Ralph Meijer <ralphm@ik.nu>
parents: 91
diff changeset
95 d = defer.DeferredList(dl, fireOnOneErrback=1, consumeErrors=1)
140
d79f0816f6c3 Revert changes to error handling into disco calls.
Ralph Meijer <ralphm@ik.nu>
parents: 130
diff changeset
96 d.addCallback(self._disco_items_result, iq, node)
102
f4d725a94202 Fix bug in how errors are handled in disco info request.
Ralph Meijer <ralphm@ik.nu>
parents: 101
diff changeset
97 d.addErrback(self._error, iq)
73
5d7a924ebddb Reworked disco support.
Ralph Meijer <ralphm@ik.nu>
parents: 67
diff changeset
98 d.addCallback(self.send)
5d7a924ebddb Reworked disco support.
Ralph Meijer <ralphm@ik.nu>
parents: 67
diff changeset
99
5d7a924ebddb Reworked disco support.
Ralph Meijer <ralphm@ik.nu>
parents: 67
diff changeset
100 iq.handled = True
5d7a924ebddb Reworked disco support.
Ralph Meijer <ralphm@ik.nu>
parents: 67
diff changeset
101
5d7a924ebddb Reworked disco support.
Ralph Meijer <ralphm@ik.nu>
parents: 67
diff changeset
102 def _disco_items_result(self, results, iq, node):
5d7a924ebddb Reworked disco support.
Ralph Meijer <ralphm@ik.nu>
parents: 67
diff changeset
103 items = []
5d7a924ebddb Reworked disco support.
Ralph Meijer <ralphm@ik.nu>
parents: 67
diff changeset
104
5d7a924ebddb Reworked disco support.
Ralph Meijer <ralphm@ik.nu>
parents: 67
diff changeset
105 for i in results:
5d7a924ebddb Reworked disco support.
Ralph Meijer <ralphm@ik.nu>
parents: 67
diff changeset
106 items.extend(i[1])
5d7a924ebddb Reworked disco support.
Ralph Meijer <ralphm@ik.nu>
parents: 67
diff changeset
107
32
ddc08757ec1d Fire up several component.IServices that match the backend Services.
Ralph Meijer <ralphm@ik.nu>
parents: 26
diff changeset
108 iq.swapAttributeValues("to", "from")
ddc08757ec1d Fire up several component.IServices that match the backend Services.
Ralph Meijer <ralphm@ik.nu>
parents: 26
diff changeset
109 iq["type"] = "result"
73
5d7a924ebddb Reworked disco support.
Ralph Meijer <ralphm@ik.nu>
parents: 67
diff changeset
110 iq.query.children = items
5d7a924ebddb Reworked disco support.
Ralph Meijer <ralphm@ik.nu>
parents: 67
diff changeset
111
5d7a924ebddb Reworked disco support.
Ralph Meijer <ralphm@ik.nu>
parents: 67
diff changeset
112 return iq
32
ddc08757ec1d Fire up several component.IServices that match the backend Services.
Ralph Meijer <ralphm@ik.nu>
parents: 26
diff changeset
113
ddc08757ec1d Fire up several component.IServices that match the backend Services.
Ralph Meijer <ralphm@ik.nu>
parents: 26
diff changeset
114 def iqFallback(self, iq):
ddc08757ec1d Fire up several component.IServices that match the backend Services.
Ralph Meijer <ralphm@ik.nu>
parents: 26
diff changeset
115 if iq.handled == True:
ddc08757ec1d Fire up several component.IServices that match the backend Services.
Ralph Meijer <ralphm@ik.nu>
parents: 26
diff changeset
116 return
1
4cc41776b7d7 Initial revision
Ralph Meijer <ralphm@ik.nu>
parents:
diff changeset
117
32
ddc08757ec1d Fire up several component.IServices that match the backend Services.
Ralph Meijer <ralphm@ik.nu>
parents: 26
diff changeset
118 self.send(xmpp_error.error_from_iq(iq, 'service-unavailable'))
1
4cc41776b7d7 Initial revision
Ralph Meijer <ralphm@ik.nu>
parents:
diff changeset
119
76
66fac7cd9edc Added -v (--verbose) flag to print out all traffic.
Ralph Meijer <ralphm@ik.nu>
parents: 75
diff changeset
120 class LogService(component.Service):
66fac7cd9edc Added -v (--verbose) flag to print out all traffic.
Ralph Meijer <ralphm@ik.nu>
parents: 75
diff changeset
121
66fac7cd9edc Added -v (--verbose) flag to print out all traffic.
Ralph Meijer <ralphm@ik.nu>
parents: 75
diff changeset
122 def transportConnected(self, xmlstream):
66fac7cd9edc Added -v (--verbose) flag to print out all traffic.
Ralph Meijer <ralphm@ik.nu>
parents: 75
diff changeset
123 xmlstream.rawDataInFn = self.rawDataIn
66fac7cd9edc Added -v (--verbose) flag to print out all traffic.
Ralph Meijer <ralphm@ik.nu>
parents: 75
diff changeset
124 xmlstream.rawDataOutFn = self.rawDataOut
66fac7cd9edc Added -v (--verbose) flag to print out all traffic.
Ralph Meijer <ralphm@ik.nu>
parents: 75
diff changeset
125
66fac7cd9edc Added -v (--verbose) flag to print out all traffic.
Ralph Meijer <ralphm@ik.nu>
parents: 75
diff changeset
126 def rawDataIn(self, buf):
78
a7196ca7cefd Fixed bug in LogService with non-ascii chars.
Ralph Meijer <ralphm@ik.nu>
parents: 76
diff changeset
127 print "RECV: %s" % unicode(buf, 'utf-8').encode('ascii', 'replace')
76
66fac7cd9edc Added -v (--verbose) flag to print out all traffic.
Ralph Meijer <ralphm@ik.nu>
parents: 75
diff changeset
128
66fac7cd9edc Added -v (--verbose) flag to print out all traffic.
Ralph Meijer <ralphm@ik.nu>
parents: 75
diff changeset
129 def rawDataOut(self, buf):
78
a7196ca7cefd Fixed bug in LogService with non-ascii chars.
Ralph Meijer <ralphm@ik.nu>
parents: 76
diff changeset
130 print "SEND: %s" % unicode(buf, 'utf-8').encode('ascii', 'replace')
76
66fac7cd9edc Added -v (--verbose) flag to print out all traffic.
Ralph Meijer <ralphm@ik.nu>
parents: 75
diff changeset
131
1
4cc41776b7d7 Initial revision
Ralph Meijer <ralphm@ik.nu>
parents:
diff changeset
132 def makeService(config):
32
ddc08757ec1d Fire up several component.IServices that match the backend Services.
Ralph Meijer <ralphm@ik.nu>
parents: 26
diff changeset
133 serviceCollection = service.MultiService()
1
4cc41776b7d7 Initial revision
Ralph Meijer <ralphm@ik.nu>
parents:
diff changeset
134
32
ddc08757ec1d Fire up several component.IServices that match the backend Services.
Ralph Meijer <ralphm@ik.nu>
parents: 26
diff changeset
135 # set up Jabber Component
ddc08757ec1d Fire up several component.IServices that match the backend Services.
Ralph Meijer <ralphm@ik.nu>
parents: 26
diff changeset
136 sm = component.buildServiceManager(config["jid"], config["secret"],
ddc08757ec1d Fire up several component.IServices that match the backend Services.
Ralph Meijer <ralphm@ik.nu>
parents: 26
diff changeset
137 ("tcp:%s:%s" % (config["rhost"], config["rport"])))
ddc08757ec1d Fire up several component.IServices that match the backend Services.
Ralph Meijer <ralphm@ik.nu>
parents: 26
diff changeset
138
76
66fac7cd9edc Added -v (--verbose) flag to print out all traffic.
Ralph Meijer <ralphm@ik.nu>
parents: 75
diff changeset
139 if config["verbose"]:
66fac7cd9edc Added -v (--verbose) flag to print out all traffic.
Ralph Meijer <ralphm@ik.nu>
parents: 75
diff changeset
140 LogService().setServiceParent(sm)
66fac7cd9edc Added -v (--verbose) flag to print out all traffic.
Ralph Meijer <ralphm@ik.nu>
parents: 75
diff changeset
141
42
7d088c61e131 Make choice of backend an option to mktap. This includes the database
Ralph Meijer <ralphm@ik.nu>
parents: 35
diff changeset
142 if config['backend'] == 'pgsql':
109
9fb8f0867d02 Use storage.
Ralph Meijer <ralphm@ik.nu>
parents: 105
diff changeset
143 import pgsql_storage
9fb8f0867d02 Use storage.
Ralph Meijer <ralphm@ik.nu>
parents: 105
diff changeset
144 st = pgsql_storage.Storage(user=config['dbuser'],
9fb8f0867d02 Use storage.
Ralph Meijer <ralphm@ik.nu>
parents: 105
diff changeset
145 database=config['dbname'])
42
7d088c61e131 Make choice of backend an option to mktap. This includes the database
Ralph Meijer <ralphm@ik.nu>
parents: 35
diff changeset
146 elif config['backend'] == 'memory':
109
9fb8f0867d02 Use storage.
Ralph Meijer <ralphm@ik.nu>
parents: 105
diff changeset
147 import memory_storage
9fb8f0867d02 Use storage.
Ralph Meijer <ralphm@ik.nu>
parents: 105
diff changeset
148 st = memory_storage.Storage()
42
7d088c61e131 Make choice of backend an option to mktap. This includes the database
Ralph Meijer <ralphm@ik.nu>
parents: 35
diff changeset
149
109
9fb8f0867d02 Use storage.
Ralph Meijer <ralphm@ik.nu>
parents: 105
diff changeset
150 import generic_backend as b
43
9685b7e291ef Moved common stuff out of pgsql_backend.py to backend.py.
Ralph Meijer <ralphm@ik.nu>
parents: 42
diff changeset
151 bs = b.BackendService(st)
1
4cc41776b7d7 Initial revision
Ralph Meijer <ralphm@ik.nu>
parents:
diff changeset
152
97
cf918d581da5 Enable admin to hide all nodes when the service is queried using disco items.
Ralph Meijer <ralphm@ik.nu>
parents: 92
diff changeset
153 c = component.IService(bs)
cf918d581da5 Enable admin to hide all nodes when the service is queried using disco items.
Ralph Meijer <ralphm@ik.nu>
parents: 92
diff changeset
154 c.setServiceParent(sm)
cf918d581da5 Enable admin to hide all nodes when the service is queried using disco items.
Ralph Meijer <ralphm@ik.nu>
parents: 92
diff changeset
155 c.hide_nodes = config["hide-nodes"]
32
ddc08757ec1d Fire up several component.IServices that match the backend Services.
Ralph Meijer <ralphm@ik.nu>
parents: 26
diff changeset
156
ddc08757ec1d Fire up several component.IServices that match the backend Services.
Ralph Meijer <ralphm@ik.nu>
parents: 26
diff changeset
157 bsc = b.PublishService()
ddc08757ec1d Fire up several component.IServices that match the backend Services.
Ralph Meijer <ralphm@ik.nu>
parents: 26
diff changeset
158 bsc.setServiceParent(bs)
ddc08757ec1d Fire up several component.IServices that match the backend Services.
Ralph Meijer <ralphm@ik.nu>
parents: 26
diff changeset
159 component.IService(bsc).setServiceParent(sm)
ddc08757ec1d Fire up several component.IServices that match the backend Services.
Ralph Meijer <ralphm@ik.nu>
parents: 26
diff changeset
160
ddc08757ec1d Fire up several component.IServices that match the backend Services.
Ralph Meijer <ralphm@ik.nu>
parents: 26
diff changeset
161 bsc = b.NotificationService()
ddc08757ec1d Fire up several component.IServices that match the backend Services.
Ralph Meijer <ralphm@ik.nu>
parents: 26
diff changeset
162 bsc.setServiceParent(bs)
ddc08757ec1d Fire up several component.IServices that match the backend Services.
Ralph Meijer <ralphm@ik.nu>
parents: 26
diff changeset
163 component.IService(bsc).setServiceParent(sm)
1
4cc41776b7d7 Initial revision
Ralph Meijer <ralphm@ik.nu>
parents:
diff changeset
164
52
0947b46c0968 Use ISubscriptionService support of PostgreSQL backend.
Ralph Meijer <ralphm@ik.nu>
parents: 43
diff changeset
165 bsc = b.SubscriptionService()
0947b46c0968 Use ISubscriptionService support of PostgreSQL backend.
Ralph Meijer <ralphm@ik.nu>
parents: 43
diff changeset
166 bsc.setServiceParent(bs)
0947b46c0968 Use ISubscriptionService support of PostgreSQL backend.
Ralph Meijer <ralphm@ik.nu>
parents: 43
diff changeset
167 component.IService(bsc).setServiceParent(sm)
0947b46c0968 Use ISubscriptionService support of PostgreSQL backend.
Ralph Meijer <ralphm@ik.nu>
parents: 43
diff changeset
168
57
445a61f872b6 Use NodeCreationService for pgsql backend, too.
Ralph Meijer <ralphm@ik.nu>
parents: 52
diff changeset
169 bsc = b.NodeCreationService()
445a61f872b6 Use NodeCreationService for pgsql backend, too.
Ralph Meijer <ralphm@ik.nu>
parents: 52
diff changeset
170 bsc.setServiceParent(bs)
445a61f872b6 Use NodeCreationService for pgsql backend, too.
Ralph Meijer <ralphm@ik.nu>
parents: 52
diff changeset
171 component.IService(bsc).setServiceParent(sm)
32
ddc08757ec1d Fire up several component.IServices that match the backend Services.
Ralph Meijer <ralphm@ik.nu>
parents: 26
diff changeset
172
75
1f7b8b6b8ce9 Enable AffiliationsService for memory backend, too.
Ralph Meijer <ralphm@ik.nu>
parents: 73
diff changeset
173 bsc = b.AffiliationsService()
1f7b8b6b8ce9 Enable AffiliationsService for memory backend, too.
Ralph Meijer <ralphm@ik.nu>
parents: 73
diff changeset
174 bsc.setServiceParent(bs)
1f7b8b6b8ce9 Enable AffiliationsService for memory backend, too.
Ralph Meijer <ralphm@ik.nu>
parents: 73
diff changeset
175 component.IService(bsc).setServiceParent(sm)
63
60e95c60252d Setup AffiliationsService and matching protocol adapter for the pgsql
Ralph Meijer <ralphm@ik.nu>
parents: 57
diff changeset
176
109
9fb8f0867d02 Use storage.
Ralph Meijer <ralphm@ik.nu>
parents: 105
diff changeset
177 bsc = b.ItemRetrievalService()
9fb8f0867d02 Use storage.
Ralph Meijer <ralphm@ik.nu>
parents: 105
diff changeset
178 bsc.setServiceParent(bs)
9fb8f0867d02 Use storage.
Ralph Meijer <ralphm@ik.nu>
parents: 105
diff changeset
179 component.IService(bsc).setServiceParent(sm)
82
758cb81b97ce Enable ItemRetrievalService for pgsql backend.
Ralph Meijer <ralphm@ik.nu>
parents: 78
diff changeset
180
109
9fb8f0867d02 Use storage.
Ralph Meijer <ralphm@ik.nu>
parents: 105
diff changeset
181 bsc = b.RetractionService()
9fb8f0867d02 Use storage.
Ralph Meijer <ralphm@ik.nu>
parents: 105
diff changeset
182 bsc.setServiceParent(bs)
9fb8f0867d02 Use storage.
Ralph Meijer <ralphm@ik.nu>
parents: 105
diff changeset
183 component.IService(bsc).setServiceParent(sm)
85
ec557449d1aa Implement node retraction, with storage support for pgsql.
Ralph Meijer <ralphm@ik.nu>
parents: 82
diff changeset
184
109
9fb8f0867d02 Use storage.
Ralph Meijer <ralphm@ik.nu>
parents: 105
diff changeset
185 bsc = b.NodeDeletionService()
9fb8f0867d02 Use storage.
Ralph Meijer <ralphm@ik.nu>
parents: 105
diff changeset
186 bsc.setServiceParent(bs)
9fb8f0867d02 Use storage.
Ralph Meijer <ralphm@ik.nu>
parents: 105
diff changeset
187 component.IService(bsc).setServiceParent(sm)
91
47ee5369c410 Use NodeDeletionService for the pgsql backend.
Ralph Meijer <ralphm@ik.nu>
parents: 89
diff changeset
188
32
ddc08757ec1d Fire up several component.IServices that match the backend Services.
Ralph Meijer <ralphm@ik.nu>
parents: 26
diff changeset
189 s = IdavollService()
ddc08757ec1d Fire up several component.IServices that match the backend Services.
Ralph Meijer <ralphm@ik.nu>
parents: 26
diff changeset
190 s.setServiceParent(sm)
1
4cc41776b7d7 Initial revision
Ralph Meijer <ralphm@ik.nu>
parents:
diff changeset
191
32
ddc08757ec1d Fire up several component.IServices that match the backend Services.
Ralph Meijer <ralphm@ik.nu>
parents: 26
diff changeset
192 sm.setServiceParent(serviceCollection)
1
4cc41776b7d7 Initial revision
Ralph Meijer <ralphm@ik.nu>
parents:
diff changeset
193
32
ddc08757ec1d Fire up several component.IServices that match the backend Services.
Ralph Meijer <ralphm@ik.nu>
parents: 26
diff changeset
194 # other stuff
ddc08757ec1d Fire up several component.IServices that match the backend Services.
Ralph Meijer <ralphm@ik.nu>
parents: 26
diff changeset
195
ddc08757ec1d Fire up several component.IServices that match the backend Services.
Ralph Meijer <ralphm@ik.nu>
parents: 26
diff changeset
196 return sm