Hello, everytime I add my utility I get: 2006-12-04T22:44:26 ERROR SiteError http://horus.local:8080/++etc++site/default/+/AddJabberClient.html%3D Traceback (most recent call last): File "/home/florian/Zope3/src/zope/publisher/publish.py", line 138, in publish publication.afterCall(request, obj) File "/home/florian/Zope3/src/zope/app/publication/browser.py", line 78, in afterCall super(BrowserPublication, self).afterCall(request, ob) File "/home/florian/Zope3/src/zope/app/publication/zopepublication.py", line 167, in afterCall txn.commit() File "/home/florian/Zope3/src/transaction/_transaction.py", line 395, in commit self._commitResources() File "/home/florian/Zope3/src/transaction/_transaction.py", line 495, in _commitResources rm.commit(self) File "/home/florian/Zope3/src/ZODB/Connection.py", line 498, in commit self._commit(transaction) File "/home/florian/Zope3/src/ZODB/Connection.py", line 543, in _commit self._store_objects(ObjectWriter(obj), transaction) File "/home/florian/Zope3/src/ZODB/Connection.py", line 570, in _store_objects p = writer.serialize(obj) # This calls __getstate__ of obj File "/home/florian/Zope3/src/ZODB/serialize.py", line 407, in serialize return self._dump(meta, obj.__getstate__()) File "/home/florian/Zope3/src/ZODB/serialize.py", line 416, in _dump self._p.dump(state) TypeError: expected string or Unicode object, NoneType found 127.0.0.1 - - [4/Dec/2006:22:44:26 +0200] "POST /++etc++site/default/+/AddJabberClient.html%3D HTTP/1.1" 500 89 "http://horus.local:8080/++etc++site/default/+/AddJabberClient.html=" "Mozilla/5.0 (compatible; Konqueror/3.5; Linux) KHTML/3.5.5 (like Gecko)"
I have already tried on zope3-users but got no solution. This is my code: interfaces.py: from zope.interface import Interface from zope.schema import TextLine, Password, Bool class IJabberClient(Interface): JID = TextLine( title = u"Jabber ID", description = u"Jabber ID ([EMAIL PROTECTED]). You need to reconnect in order to take effect.", required = True ) password = Password( title = u"Password", description = u"Password for the jabber account", required = True ) connectOnStartup = Bool( title = u"Connect on startup", description = u"Automatically connect when Zope starts and also when the object is newly added (what you are about to do).", default = True) jabberclient.py: from interfaces import IJabberClient from zope.interface import implements from persistent import Persistent from zope.app.container.contained import Contained import xmpp class JabberClient(Persistent, Contained): implements(IJabberClient) JID = u"" password = u"" connectOnStartup = True status = u"offline" def finishInitialization(self): """ Finish the rest of the initialziation that can't be done in __init__. """ if self.connectOnStartup: self.setStatus("available") else: self.setStatus("offline") def setStatus(self, newStatus): if self.status == "offline" and newStatus == "available": self.jabberID = xmpp.protocol.JID(self.JID) self.client = xmpp.Client(self.jabberID.getDomain(), debug=[]) self.client.connect() self.client.auth(self.jabberID.getNode(), self.password) self.client.sendPresence(self.jabberID) if self.status == "available" and newStatus == "offline": # disconnect pass self.status = newStatus def getStatus(self): return self.status def onObjectAdded(event): if IJabberClient.providedBy(event.object): event.object.finishInitialization() configure.zcml <configure xmlns="http://namespaces.zope.org/zope" xmlns:browser="http://namespaces.zope.org/browser"> <class class=".jabberclient.JabberClient"> <require permission="zope.ManageServices" interface=".interfaces.IJabberClient" set_schema=".interfaces.IJabberClient" /> </class> <browser:addform schema=".interfaces.IJabberClient" label="Add a JabberClient object" content_factory=".jabberclient.JabberClient" name="AddJabberClient.html" permission="zope.ManageServices" set_before_add="JID password connectOnStartup" /> <browser:addMenuItem title="Jabber Client" class=".jabberclient.JabberClient" permission="zope.ManageServices" view="AddJabberClient.html" /> <browser:editform schema=".interfaces.IJabberClient" label="Edit the JabberClient" name="edit.html" permission="zope.ManageServices" menu="zmi_views" title="Edit" /> <subscriber for="zope.app.container.interfaces.IObjectAddedEvent" handler=".jabberclient.onObjectAdded" /> </configure> Sorry for the huge posting but I got no idea where the error comes from. The error occurs only when connectOnStartup is True. Thanks for any help, Florian _______________________________________________ Zope3-dev mailing list Zope3-dev@zope.org Unsub: http://mail.zope.org/mailman/options/zope3-dev/archive%40mail-archive.com