From jinty at web.de Fri May 5 06:55:14 2006 From: jinty at web.de (Brian Sutherland) Date: Fri, 5 May 2006 06:55:14 +0200 Subject: [Z3-sqlos] sqlos 0.2.1 is released Message-ID: <20060505045514.GA19299@minipas.home> I'm pleased to announce the release of sqlos 0.2.1 which is a bugfix release for a bug in the FiveSQLOS package. The sqlos 0.2 releases are compatible with SQLObject 0.7, Zope 3.2 and Zope 2.9. What is sqlos: sqlos is a toolkit for using SQLObject (http://sqlobject.org) inside Zope 3 or Zope 2. It tries to take care of many of the fiddly details that always seem to take a lot of time. The major ways it helps are: - Integrates the Zope transaction system and SQLObject, allowing SQLObject to be used in lazyUpdate mode. - Uses Zope Database adapters in SQLObject. - Provide zcml configuration directives. - Provide ZODB persistent objects that can act as a "window" into the database. - A testing infrastructure for testing SQLObject based applications. - Caches SQLObjects and database connections to improve performance. Website: http://codespeak.net/z3/sqlos/index.html Releases: http://cheeseshop.python.org/pypi/sqlos -- Brian Sutherland From pete-lists at bcmpweb.com Sun May 7 01:15:24 2006 From: pete-lists at bcmpweb.com (Peter Simmons) Date: Sun, 07 May 2006 11:15:24 +1200 Subject: [Z3-sqlos] Re: Five 1.4c error with zope2.9 In-Reply-To: <445AE069.3040700@weitershausen.de> References: <445AC735.2080002@bcmpweb.com> <445AE069.3040700@weitershausen.de> Message-ID: <445D2E0C.1010409@bcmpweb.com> Hi Philip, And SQLOS list. I did what you said and am now getting the errors below with FiveSQLOS (and my TradeLoyalty based on FiveSQLOS) which I didn't get before. Its like the custom directives of sqlos are nolonger being loaded. Any ideas? Cheers, Pete 2006-05-06T12:43:15 ERROR Five Could not import Product Products.FiveSQLOS Traceback (most recent call last): File "/var/lib/zope2.9/instance/smart-trade/Products/Five/fiveconfigure.py", line 81, in loadProducts xmlconfig.include(_context, zcml, package=product) File "/opt/Zope-2.9/lib/python/zope/configuration/xmlconfig.py", line 490, in include processxmlfile(f, context) File "/opt/Zope-2.9/lib/python/zope/configuration/xmlconfig.py", line 345, in processxmlfile parser.parse(src) File "/usr/lib/python2.4/site-packages/_xmlplus/sax/expatreader.py", line 109, in parse xmlreader.IncrementalParser.parse(self, source) File "/usr/lib/python2.4/site-packages/_xmlplus/sax/xmlreader.py", line 123, in parse self.feed(buffer) File "/usr/lib/python2.4/site-packages/_xmlplus/sax/expatreader.py", line 216, in feed self._parser.Parse(data, isFinal) File "/usr/lib/python2.4/site-packages/_xmlplus/sax/expatreader.py", line 364, in end_element_ns self._cont_handler.endElementNS(pair, None) File "/opt/Zope-2.9/lib/python/zope/configuration/xmlconfig.py", line 326, in endElementNS self.context.end() File "/opt/Zope-2.9/lib/python/zope/configuration/config.py", line 544, in end self.stack.pop().finish() File "/opt/Zope-2.9/lib/python/zope/configuration/config.py", line 690, in finish actions = self.handler(context, **args) File "/opt/Zope-2.9/lib/python/zope/configuration/xmlconfig.py", line 490, in include processxmlfile(f, context) File "/opt/Zope-2.9/lib/python/zope/configuration/xmlconfig.py", line 345, in processxmlfile parser.parse(src) File "/usr/lib/python2.4/site-packages/_xmlplus/sax/expatreader.py", line 109, in parse xmlreader.IncrementalParser.parse(self, source) File "/usr/lib/python2.4/site-packages/_xmlplus/sax/xmlreader.py", line 123, in parse self.feed(buffer) File "/usr/lib/python2.4/site-packages/_xmlplus/sax/expatreader.py", line 216, in feed self._parser.Parse(data, isFinal) File "/usr/lib/python2.4/site-packages/_xmlplus/sax/expatreader.py", line 364, in end_element_ns self._cont_handler.endElementNS(pair, None) File "/opt/Zope-2.9/lib/python/zope/configuration/xmlconfig.py", line 326, in endElementNS self.context.end() File "/opt/Zope-2.9/lib/python/zope/configuration/config.py", line 544, in end self.stack.pop().finish() File "/opt/Zope-2.9/lib/python/zope/configuration/config.py", line 690, in finish actions = self.handler(context, **args) File "/opt/Zope-2.9/lib/python/zope/configuration/xmlconfig.py", line 490, in include processxmlfile(f, context) File "/opt/Zope-2.9/lib/python/zope/configuration/xmlconfig.py", line 345, in processxmlfile parser.parse(src) File "/usr/lib/python2.4/site-packages/_xmlplus/sax/expatreader.py", line 109, in parse xmlreader.IncrementalParser.parse(self, source) File "/usr/lib/python2.4/site-packages/_xmlplus/sax/xmlreader.py", line 123, in parse self.feed(buffer) File "/usr/lib/python2.4/site-packages/_xmlplus/sax/expatreader.py", line 216, in feed self._parser.Parse(data, isFinal) File "/usr/lib/python2.4/site-packages/_xmlplus/sax/expatreader.py", line 364, in end_element_ns self._cont_handler.endElementNS(pair, None) File "/opt/Zope-2.9/lib/python/zope/configuration/xmlconfig.py", line 326, in endElementNS self.context.end() File "/opt/Zope-2.9/lib/python/zope/configuration/config.py", line 544, in end self.stack.pop().finish() File "/opt/Zope-2.9/lib/python/zope/configuration/config.py", line 690, in finish actions = self.handler(context, **args) File "/opt/Zope-2.9/lib/python/zope/configuration/xmlconfig.py", line 490, in include processxmlfile(f, context) File "/opt/Zope-2.9/lib/python/zope/configuration/xmlconfig.py", line 345, in processxmlfile parser.parse(src) File "/usr/lib/python2.4/site-packages/_xmlplus/sax/expatreader.py", line 109, in parse xmlreader.IncrementalParser.parse(self, source) File "/usr/lib/python2.4/site-packages/_xmlplus/sax/xmlreader.py", line 123, in parse self.feed(buffer) File "/usr/lib/python2.4/site-packages/_xmlplus/sax/expatreader.py", line 216, in feed self._parser.Parse(data, isFinal) File "/usr/lib/python2.4/site-packages/_xmlplus/sax/expatreader.py", line 353, in start_element_ns AttributesNSImpl(newattrs, qnames)) File "/opt/Zope-2.9/lib/python/zope/configuration/xmlconfig.py", line 222, in startElementNS self.context.begin(name, data, info) File "/opt/Zope-2.9/lib/python/zope/configuration/config.py", line 541, in begin self.stack.append(self.stack[-1].contained(__name, __data, __info)) File "/opt/Zope-2.9/lib/python/zope/configuration/config.py", line 840, in contained return RootStackItem.contained(self, name, data, info) File "/opt/Zope-2.9/lib/python/zope/configuration/config.py", line 708, in contained factory = self.context.factory(self.context, name) File "/opt/Zope-2.9/lib/python/zope/configuration/config.py", line 487, in factory raise ConfigurationError("Unknown directive", ns, n) ZopeXMLConfigurationError: File "/var/lib/zope2.9/instance/smart-trade/Products/FiveSQLOS/configure.zcml", line 7.2-7.37 ZopeXMLConfigurationError: File "/var/lib/zope2.9/instance/smart-trade/Products/FiveSQLOS/dependencies.zcml", line 11.2-11.40 ZopeXMLConfigurationError: File "/opt/Zope-2.9/lib/python/zope/app/security/configure.zcml", line 22.2-22.39 ZopeXMLConfigurationError: File "/opt/Zope-2.9/lib/python/zope/app/security/globalmodules.zcml", line 5.2 ConfigurationError: ('Unknown directive', u'http://namespaces.zope.org/zope', u'module') ------ 2006-05-06T12:43:15 ERROR Five Could not import Product Products.TradeLoyalty Traceback (most recent call last): File "/var/lib/zope2.9/instance/smart-trade/Products/Five/fiveconfigure.py", line 81, in loadProducts xmlconfig.include(_context, zcml, package=product) File "/opt/Zope-2.9/lib/python/zope/configuration/xmlconfig.py", line 490, in include processxmlfile(f, context) File "/opt/Zope-2.9/lib/python/zope/configuration/xmlconfig.py", line 345, in processxmlfile parser.parse(src) File "/usr/lib/python2.4/site-packages/_xmlplus/sax/expatreader.py", line 109, in parse xmlreader.IncrementalParser.parse(self, source) File "/usr/lib/python2.4/site-packages/_xmlplus/sax/xmlreader.py", line 123, in parse self.feed(buffer) File "/usr/lib/python2.4/site-packages/_xmlplus/sax/expatreader.py", line 216, in feed self._parser.Parse(data, isFinal) File "/usr/lib/python2.4/site-packages/_xmlplus/sax/expatreader.py", line 353, in start_element_ns AttributesNSImpl(newattrs, qnames)) File "/opt/Zope-2.9/lib/python/zope/configuration/xmlconfig.py", line 222, in startElementNS self.context.begin(name, data, info) File "/opt/Zope-2.9/lib/python/zope/configuration/config.py", line 541, in begin self.stack.append(self.stack[-1].contained(__name, __data, __info)) File "/opt/Zope-2.9/lib/python/zope/configuration/config.py", line 840, in contained return RootStackItem.contained(self, name, data, info) File "/opt/Zope-2.9/lib/python/zope/configuration/config.py", line 708, in contained factory = self.context.factory(self.context, name) File "/opt/Zope-2.9/lib/python/zope/configuration/config.py", line 487, in factory raise ConfigurationError("Unknown directive", ns, n) ZopeXMLConfigurationError: File "/var/lib/zope2.9/instance/smart-trade/Products/TradeLoyalty/configure.zcml", line 8.2 ConfigurationError: ('Unknown directive', u'http://namespaces.sqlobject.org/sqlos', u'connectionName') ------ 2006-05-06T12:43:15 ERROR Zope Couldn't install Five Traceback (most recent call last): File "/opt/Zope-2.9/lib/python/OFS/Application.py", line 790, in install_product initmethod(context) File "/var/lib/zope2.9/instance/smart-trade/Products/Five/__init__.py", line 31, in initialize zcml.load_site() File "/var/lib/zope2.9/instance/smart-trade/Products/Five/zcml.py", line 41, in load_site _context = xmlconfig.file(file) File "/opt/Zope-2.9/lib/python/zope/configuration/xmlconfig.py", line 554, in file include(context, name, package) File "/opt/Zope-2.9/lib/python/zope/configuration/xmlconfig.py", line 492, in include assert _context.stack[-1].context is context AssertionError Philipp von Weitershausen wrote: > Peter Simmons wrote: > >> Hi all, >> >> I tried installing the Five1.4c release under Python2.4.2, Zope2.9. >> >> On startup I get the following error. I went and had a look at >> Zope-2.9/lib/python/zope and there isn't any contentprovider package >> just like it says. Any ideas of the best way to fix? >> > ... > >> 2006-05-05T15:27:36 ERROR Zope Couldn't install Five >> Traceback (most recent call last): >> > ... > >> ImportError: No module named contentprovider >> >> > > Ah, I forgot to mention that Five 1.4c currently requires Zope 2.9 > branch. There hasn't been a release of Zope 2.9 yet that includes the > (previously forgotten) contentprovier and viewlet packages. I expect > Zope 2.9.3 isn't too far away. > > In the meantime you can just copy these packages over from a Zope 3.2 > installation. > > Philipp > > From pete-lists at bcmpweb.com Mon May 8 09:04:19 2006 From: pete-lists at bcmpweb.com (Peter Simmons) Date: Mon, 08 May 2006 19:04:19 +1200 Subject: [Z3-sqlos] zope 2.x, Five and sqlos In-Reply-To: <20060508050357.GC6992@minipas.home> References: <20060503093642.GB7352@minipas.home> <44587F2E.7040600@bcmpweb.com> <20060503185556.GD7313@minipas.home> <445925E4.6020005@bcmpweb.com> <20060503235845.GA12474@minipas.home> <44594928.8040502@bcmpweb.com> <20060504010352.GB12474@minipas.home> <44595CF1.3090000@bcmpweb.com> <20060504023507.GG7313@minipas.home> <445EBCD0.4010509@bcmpweb.co.nz> <20060508050357.GC6992@minipas.home> Message-ID: <445EED73.1020406@bcmpweb.com> Hi Brian, Ok sorry it was my dumb question about the /+/ view. I had tried to define the + view stuff again in my configure.zcml instead of just using the stuff defined for FiveSQLObjectContainer once I removed the stuff from my configure.zcml it works. Once I have some objects in the database should I be able to do something like container/id/edit.html to get it (like in Zope3)? That doesn't work for me. Cheers, Pete Brian Sutherland wrote: > On Mon, May 08, 2006 at 03:36:48PM +1200, Peter Simmons (personal) wrote: > >> I have a container that extends FiveSQLOSContainer (forgive me if that >> name is slightly wrong) and I did a five:registerClass directive. The >> container type shows up on the ZMI add list (I would prefer plone's add >> list but this is actually ok for my use case) and I can add one. But >> then I can't call the /+/ view on it to add one of the SQLOS based objects. >> > > Hmm, this sounds like your container is not traversable in the Zope3 > way, or doesn't implement sqlos.interfaces.container.ISQLObjectContainer. > > Could you test if the configure.zcml in the FiveSQLOS product is being > loaded? Perhaps by breaking the XML syntax of the file and trying to > start Zope with debug mode on? > > What do the Zope logs have to say about your attempt to traverse to /+? > > >> Any pointers, feel free to say I am trying in the wrong area, and/or >> ignore my idea and just tell me what you did if you like. >> > > Containers are probably the quickest way of getting a stepping stone > from the ZODB to an RDB. But they do add an extra layer of complex code, > so keep in mind that there are other ways as well. > > Depending on your use case, you might consider going one programmatic > level down and just getting the IISQLObject utility and > getting/operating on sqlobjects directly. > > Or you could create your own container. One FiveSQLOS user replaced his > application object with a custom container that traverses like > http://xx.yy/${utility_id}/${row_id}. > > Personally, I have tested running Zope3 without a ZODB and having a > custom publication object. But the code was too fragile/unmaintainable > to put in sqlos. Apparently http://launchpad.net runs this way with > multiple ZDOB-less application servers using the same RDB. > > >> Cheers, >> Pete >> >> Brian Sutherland wrote: >> >>> On Thu, May 04, 2006 at 01:46:25PM +1200, Peter Simmons wrote: >>> >>> >>>> Hi Brian, >>>> >>>> Brian Sutherland wrote: >>>> >>>> >>>>> Great! Will you be at EuroPython by the way? >>>>> >>>>> >>>>> >>>>> >>>> When/where is EuroPython, >>>> >>>> >>> In Geneva, about the beginning of July. So quite close. >>> >>> >>> >>>> I am based in Auckland, New Zealand so getting >>>> to Europe isn't usually straight forward. That said I really want to get >>>> to some Europe based sprints/conferences this year, to contribute back >>>> but also to meet people as I am planning to spend a year or two in/near >>>> Europe staring Feb/March 2007 and would like to still work with >>>> Zope/Plone python if possible. >>>> >>>> Its justifiable for our business here also and the learning >>>> opportunities are huge at these things if the ones I have gone to Oz for >>>> are anything to go by. >>>> >>>> >>> Exactly why I am going;) >>> >>> >>> >>>>>> But in my experience for the initial >>>>>> situation you are usually best off if the configuration files get >>>>>> auto-generated some how from a design. Then they are transparent for the >>>>>> simple situation but available for when you get to a complex situation. >>>>>> >>>>>> >>>>>> >>>>> I can't even begin to imagine how you would auto-generate ZCML;) >>>>> >>>>> >>>>> >>>>> >>>> I was thinking of generating python code + ZCML from say a UML diagram, >>>> like how you can with Poseidon + ArchGenXML for AT right now. Maybe it >>>> will become more clear to me but I don't quite see why we couldn't >>>> generate an initial set of stuff and then be able to edit it afterwards. >>>> ArchGenXML is very well done in this way but suffers from being built on >>>> AT so if you get complex situations you kinda hit a wall and your code >>>> gets ugly. Its close but just needs the separation that component >>>> architecture provides as the MixIn strategy gets in the way. >>>> >>>> >>> Ah that sounds much more reasonable, might even be something I would >>> want to use. >>> >>> >>> > > From pete-lists at bcmpweb.com Mon May 8 11:27:17 2006 From: pete-lists at bcmpweb.com (Peter Simmons) Date: Mon, 08 May 2006 21:27:17 +1200 Subject: [Z3-sqlos] zope 2.x, Five and sqlos In-Reply-To: <20060508085036.GC15366@minipas.home> References: <20060503185556.GD7313@minipas.home> <445925E4.6020005@bcmpweb.com> <20060503235845.GA12474@minipas.home> <44594928.8040502@bcmpweb.com> <20060504010352.GB12474@minipas.home> <44595CF1.3090000@bcmpweb.com> <20060504023507.GG7313@minipas.home> <445EBCD0.4010509@bcmpweb.co.nz> <20060508050357.GC6992@minipas.home> <445EED73.1020406@bcmpweb.com> <20060508085036.GC15366@minipas.home> Message-ID: <445F0EF5.6010601@bcmpweb.com> Hi Brian, Thanks that does the trick. That is actually fairly acceptable to me just requires documenting so that I know to use the exact factory name instead of just the Class name which is one thing that I tried. I will probably implement some kind of MultiContainer What is it that you don't like about it? Cheers, Pete Brian Sutherland wrote: > On Mon, May 08, 2006 at 07:04:19PM +1200, Peter Simmons wrote: > >> Hi Brian, >> >> Ok sorry it was my dumb question about the /+/ view. I had tried to >> define the + view stuff again in my configure.zcml instead of just using >> the stuff defined for FiveSQLObjectContainer once I removed the stuff >> from my configure.zcml it works. >> >> Once I have some objects in the database should I be able to do >> something like >> >> container/id/edit.html to get it (like in Zope3)? >> > > Yep, that should work. But perhaps the exact value of id is throwing you > off. You cannot choose the id, it will always be > ${utility_id}.${sqlrow}. > > For example, in the functional tests there is a SamplePerson SQLObject > registered in zcml like: > > id="sqlos.somename.SamplePerson" > component=".testing.sampleperson.SamplePerson" > description="A Sample Person" > /> > > then to get the edit.html page of the first row of the database would be: > > http://xx.yy/sample_person_container/sqlos.somename.SamplePerson.1/edit.html > > This is one of the reasons I don't like containers as we have them, but > I'm still not sure how to make them better. > > Does that help? > > >> That doesn't work for me. >> >> Cheers, >> Pete >> >> Brian Sutherland wrote: >> >>> On Mon, May 08, 2006 at 03:36:48PM +1200, Peter Simmons (personal) wrote: >>> >>> >>>> I have a container that extends FiveSQLOSContainer (forgive me if that >>>> name is slightly wrong) and I did a five:registerClass directive. The >>>> container type shows up on the ZMI add list (I would prefer plone's add >>>> list but this is actually ok for my use case) and I can add one. But >>>> then I can't call the /+/ view on it to add one of the SQLOS based objects. >>>> >>>> >>> Hmm, this sounds like your container is not traversable in the Zope3 >>> way, or doesn't implement sqlos.interfaces.container.ISQLObjectContainer. >>> >>> Could you test if the configure.zcml in the FiveSQLOS product is being >>> loaded? Perhaps by breaking the XML syntax of the file and trying to >>> start Zope with debug mode on? >>> >>> What do the Zope logs have to say about your attempt to traverse to /+? >>> >>> >>> >>>> Any pointers, feel free to say I am trying in the wrong area, and/or >>>> ignore my idea and just tell me what you did if you like. >>>> >>>> >>> Containers are probably the quickest way of getting a stepping stone >>> from the ZODB to an RDB. But they do add an extra layer of complex code, >>> so keep in mind that there are other ways as well. >>> >>> Depending on your use case, you might consider going one programmatic >>> level down and just getting the IISQLObject utility and >>> getting/operating on sqlobjects directly. >>> >>> Or you could create your own container. One FiveSQLOS user replaced his >>> application object with a custom container that traverses like >>> http://xx.yy/${utility_id}/${row_id}. >>> >>> Personally, I have tested running Zope3 without a ZODB and having a >>> custom publication object. But the code was too fragile/unmaintainable >>> to put in sqlos. Apparently http://launchpad.net runs this way with >>> multiple ZDOB-less application servers using the same RDB. >>> >>> >>> >>>> Cheers, >>>> Pete >>>> >>>> Brian Sutherland wrote: >>>> >>>> >>>>> On Thu, May 04, 2006 at 01:46:25PM +1200, Peter Simmons wrote: >>>>> >>>>> >>>>> >>>>>> Hi Brian, >>>>>> >>>>>> Brian Sutherland wrote: >>>>>> >>>>>> >>>>>> >>>>>>> Great! Will you be at EuroPython by the way? >>>>>>> >>>>>>> >>>>>>> >>>>>>> >>>>>>> >>>>>> When/where is EuroPython, >>>>>> >>>>>> >>>>>> >>>>> In Geneva, about the beginning of July. So quite close. >>>>> >>>>> >>>>> >>>>> >>>>>> I am based in Auckland, New Zealand so getting >>>>>> to Europe isn't usually straight forward. That said I really want to get >>>>>> to some Europe based sprints/conferences this year, to contribute back >>>>>> but also to meet people as I am planning to spend a year or two in/near >>>>>> Europe staring Feb/March 2007 and would like to still work with >>>>>> Zope/Plone python if possible. >>>>>> >>>>>> Its justifiable for our business here also and the learning >>>>>> opportunities are huge at these things if the ones I have gone to Oz for >>>>>> are anything to go by. >>>>>> >>>>>> >>>>>> >>>>> Exactly why I am going;) >>>>> >>>>> >>>>> >>>>> >>>>>>>> But in my experience for the initial >>>>>>>> situation you are usually best off if the configuration files get >>>>>>>> auto-generated some how from a design. Then they are transparent for the >>>>>>>> simple situation but available for when you get to a complex situation. >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>> I can't even begin to imagine how you would auto-generate ZCML;) >>>>>>> >>>>>>> >>>>>>> >>>>>>> >>>>>>> >>>>>> I was thinking of generating python code + ZCML from say a UML diagram, >>>>>> like how you can with Poseidon + ArchGenXML for AT right now. Maybe it >>>>>> will become more clear to me but I don't quite see why we couldn't >>>>>> generate an initial set of stuff and then be able to edit it afterwards. >>>>>> ArchGenXML is very well done in this way but suffers from being built on >>>>>> AT so if you get complex situations you kinda hit a wall and your code >>>>>> gets ugly. Its close but just needs the separation that component >>>>>> architecture provides as the MixIn strategy gets in the way. >>>>>> >>>>>> >>>>>> >>>>> Ah that sounds much more reasonable, might even be something I would >>>>> want to use. >>>>> >>>>> >>>>> >>>>> >>> >>> > > From pete-lists at bcmpweb.com Mon May 15 08:49:34 2006 From: pete-lists at bcmpweb.com (Peter Simmons) Date: Mon, 15 May 2006 18:49:34 +1200 Subject: [Z3-sqlos] creating tables from SQLOS classes In-Reply-To: <20060508112132.GG15366@minipas.home> References: <20060503235845.GA12474@minipas.home> <44594928.8040502@bcmpweb.com> <20060504010352.GB12474@minipas.home> <44595CF1.3090000@bcmpweb.com> <20060504023507.GG7313@minipas.home> <445EBCD0.4010509@bcmpweb.co.nz> <20060508050357.GC6992@minipas.home> <445EED73.1020406@bcmpweb.com> <20060508085036.GC15366@minipas.home> <445F0EF5.6010601@bcmpweb.com> <20060508112132.GG15366@minipas.home> Message-ID: <4468247E.8080008@bcmpweb.com> Hi Brian, I tried creating the database table from my class python console session below. I take it the ConnectionDescriptor isn't a full blown SQLObject connection? But a connection thing that works with Zope3 connections? Or am I doing something wrong? Cheers, Pete [GCC 4.0.3 20051111 (prerelease) (Debian 4.0.2-4)] on linux2 Type "help", "copyright", "credits" or "license" for more information. >>> from zope.app.debug import Debugger >>> debugger = Debugger(db="var/Data.fs", config_file="etc/site.zcml") >>> from tradeloyalty import Member Traceback (most recent call last): File "", line 1, in ? ImportError: cannot import name Member >>> from tradeloyalty.member import Member /var/lib/zope2.9/instance/smart-trade/Products/tradeloyalty/interfaces.py:4: DeprecationWarning: MessageIDFactory: Mutable i18n messages ("message ids") have been deprecated in favour of immutable ones and will be removed in Zope 3.3. Please use use zope.i18nmessageid.MessageFactory instead. from zope.i18nmessageid import MessageIDFactory >>> Member.createTables() Traceback (most recent call last): File "", line 1, in ? AttributeError: type object 'Member' has no attribute 'createTables' >>> Member.sqlmeta.table 'member' >>> Member.createTable(ifNotExists=True) Traceback (most recent call last): File "", line 1, in ? File "/usr/lib/python2.4/site-packages/SQLObject-0.7.0-py2.4.egg/sqlobject/main.py", line 1306, in createTable if ifNotExists and conn.tableExists(cls.sqlmeta.table): AttributeError: 'ConnectionDescriptor' object has no attribute 'tableExists' >>> Member.createTable() Traceback (most recent call last): File "", line 1, in ? File "/usr/lib/python2.4/site-packages/SQLObject-0.7.0-py2.4.egg/sqlobject/main.py", line 1308, in createTable conn.createTable(cls) AttributeError: 'ConnectionDescriptor' object has no attribute 'createTable'