modeling-users Mailing List for Object-Relational Bridge for python (Page 13)
Status: Abandoned
Brought to you by:
sbigaret
You can subscribe to this list here.
2002 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
(2) |
Sep
(3) |
Oct
|
Nov
|
Dec
|
---|---|---|---|---|---|---|---|---|---|---|---|---|
2003 |
Jan
(19) |
Feb
(55) |
Mar
(54) |
Apr
(48) |
May
(41) |
Jun
(40) |
Jul
(156) |
Aug
(56) |
Sep
(90) |
Oct
(14) |
Nov
(41) |
Dec
(32) |
2004 |
Jan
(6) |
Feb
(57) |
Mar
(38) |
Apr
(23) |
May
(3) |
Jun
(40) |
Jul
(39) |
Aug
(82) |
Sep
(31) |
Oct
(14) |
Nov
|
Dec
(9) |
2005 |
Jan
|
Feb
(4) |
Mar
(13) |
Apr
|
May
(5) |
Jun
(2) |
Jul
|
Aug
(1) |
Sep
|
Oct
|
Nov
|
Dec
(1) |
2006 |
Jan
(1) |
Feb
(1) |
Mar
(9) |
Apr
(1) |
May
|
Jun
(1) |
Jul
(5) |
Aug
|
Sep
(5) |
Oct
(1) |
Nov
|
Dec
|
2007 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
(2) |
Nov
(1) |
Dec
|
2009 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
(4) |
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
2011 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
(1) |
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
From: Marcos D. <md...@vi...> - 2004-03-25 21:09:06
|
User-Agent: Mutt/1.3.28i On Thu, Mar 25, 2004 at 01:03:00AM +0100, Sebastien Bigaret wrote: > Repopulating the EC simply consists in fetching the objects, or asking > for a particular object given its globalID (ec.faultForGlobalID()), etc. well, I was thinking in that yesterday when I left work... is it too ugly to do it that way? will it mess with something? > Now you may need a simpler way of doing this, esp. if you're dealing > with one object or a few: the nested ECs are very handy when the > modifications of the graph of objects can be very intensive and you do > not want to track which changes occured. But if you know exactly which > object(s) is/are impacted (which is probably the case in any simple > form), you may just ask for forgetting about the changes --what you were > asking for in your 1st post. [snip] > It also contains a test case for that. The idea is that you simply > call ec.refaultObject(obj), and the object is reverted back to a fault, > ready to be retrieved from the database next time one of its > properties' value is needed. > > It's not been extensively tested, and should be used w/ care for the > moment being; see comments for patch #922822. As noted there, it's here are those comments: --- paste --- I've quickly checked the implementation & at the test I proposed there, so here is my suggestion: you can use it as-is, given that: - you're not applying it on deleted, inserted or modified objects, (BTW: it will become an error to refault a deleted or an inserted object) [UPDATE: see note, below] - you stick to EC.refaultObject and do not try to call DBContext.refaultObject - you do not use it with a nested ec. (I'm not saying this won't work, it probably will... but it needs to be tested before I can say this is supported). --- paste --- that last remark applies to the last contition? from the patch, it seems like the refaultObject is finally done by the 'master' of all the EC's. do you think the problem would be that the 'reset' is not 'propagated' to children EC's? the other comment is (I think this is the update you mention above): --- paste --- Note: it can be safely applied on modified objects given that no relationships have been modified (such a situation has not been tested at all). --- paste --- I'll try to make some tests in both cases. it is interesting to note that most of this patch is already in the slice_n_sort patch. is that an error? shouldn't this other one depend on the first one, so applying both doesn't choke? |
From: Sebastien B. <sbi...@us...> - 2004-03-25 00:02:47
|
Marcos Dione <md...@vi...> wrote: >=20 > On Wed, Mar 24, 2004 at 05:19:41PM -0300, Marcos Dione wrote: > > flipping the docs I see that EditingContext is capable of tell > > wether it's dirty or not. but I think it would be better if I could ask > > the Entity if it's dirty or not; and, being dirty, ask it to ignore any > > changes not saved (which I think will resort to reload from the db)...= =20 >=20 > I note two things: first, asking an Entity if it's dirty or not is > impossible w/o an EC, so is unreasonable to ask for it. Absolutely, the standard way is to ask the ec for that --even if some of the CustomObject's methods can be relative to the editingContext(), such as globalID(). > second, the > answer seems to be to use nested EC's, but if I do it that way, for > reseting I would need to discard the dirty EC, take a new one and > repopulate it with the original values (most probably this two EC's will > be child of one master EC at different times). >=20 > what's not clear for me is how to repopulate the second EC. Repopulating the EC simply consists in fetching the objects, or asking for a particular object given its globalID (ec.faultForGlobalID()), etc. Now you may need a simpler way of doing this, esp. if you're dealing with one object or a few: the nested ECs are very handy when the modifications of the graph of objects can be very intensive and you do not want to track which changes occured. But if you know exactly which object(s) is/are impacted (which is probably the case in any simple form), you may just ask for forgetting about the changes --what you were asking for in your 1st post. I've just submitted patch #922822 with an up-to-date version of one I posted a year ago (almost: 26 Mar 2003 :/ ) https://sourceforge.net/tracker/index.php?func=3Ddetail&aid=3D922822&group_= id=3D58935&atid=3D489337 The comments there contain references of the messages talking about this feature. It also contains a test case for that. The idea is that you simply call ec.refaultObject(obj), and the object is reverted back to a fault, ready to be retrieved from the database next time one of its properties' value is needed. It's not been extensively tested, and should be used w/ care for the moment being; see comments for patch #922822. As noted there, it's been asked regularly, but even then I've never heard that it has been really tested. Handle w/ care ;) but hopefully it will be of some help, and maybe we could finally make it and finally integrate this into the main trunk some day. So I'll be happy to hear from you if you find some time to experiment! -- S=E9bastien. |
From: Marcos D. <md...@vi...> - 2004-03-24 22:37:10
|
User-Agent: Mutt/1.3.28i On Wed, Mar 24, 2004 at 05:19:41PM -0300, Marcos Dione wrote: > flipping the docs I see that EditingContext is capable of tell > wether it's dirty or not. but I think it would be better if I could ask > the Entity if it's dirty or not; and, being dirty, ask it to ignore any > changes not saved (which I think will resort to reload from the db)... I note two things: first, asking an Entity if it's dirty or not is impossible w/o an EC, so is unreasonable to ask for it. second, the answer seems to be to use nested EC's, but if I do it that way, for reseting I would need to discard the dirty EC, take a new one and repopulate it with the original values (most probably this two EC's will be child of one master EC at different times). what's not clear for me is how to repopulate the second EC. |
From: Marcos D. <md...@vi...> - 2004-03-24 20:20:11
|
User-Agent: Mutt/1.3.28i I have the following problem: I have a form where I can edit Modeling Entities. if you perss a button, it gets saved (the changes, I mean). but if you press that other button, it should revert any changes done so far. the Modeling Entities are not saved yet (if you saved alredy, I'm sorry :) flipping the docs I see that EditingContext is capable of tell wether it's dirty or not. but I think it would be better if I could ask the Entity if it's dirty or not; and, being dirty, ask it to ignore any changes not saved (which I think will resort to reload from the db)... note that this seems to have nothing to do with undo/redo, or at least I think so. |
From: Axel K. <ax...@ko...> - 2004-03-18 01:04:28
|
Marcos Dione wrote: > dev's mailing lists. unluckly, sourceforge's site doesn't allow me to do > a search on the mailing lists it hosts. http://sourceforge.net/mailarchive/forum.php?forum_id=10674 > "Search This Mailing List". working as i speak. in the case this shouldn't work (as it does from time to time), there is also http://news.gmane.org/gmane.comp.python.modeling/ . -- ax If you can't learn to do something well, learn to enjoy doing it poorly. |
From: Marcos D. <md...@vi...> - 2004-03-17 22:02:25
|
User-Agent: Mutt/1.3.28i as always that I start using something new (at least for me), I find some problems using it. so my first line of solving problems is the dev's mailing lists. unluckly, sourceforge's site doesn't allow me to do a search on the mailing lists it hosts. not having these, the next step is to search for a mbox formatted archive with the whole list traffic. but sf doesn't have this. then, the last resort is to ask on the list if anyone has a downloadable version. does anyone pick the line? |
From: Ernesto R. <er...@si...> - 2004-03-17 20:34:57
|
Hi, today I ran the oprimistic locking test suite, but I ran in trouble with = the sqlite adaptor, so I filled out some bug reports. Thanx for the = patches. I'll see if I can add more test cases soon. Best regards, Erny ----- Original Message -----=20 From: "Sebastien Bigaret" <sbi...@us...> To: "modeling-users" <mod...@li...> Sent: Wednesday, March 17, 2004 8:20 AM Subject: Re: [Modeling-users] Run some test "Ernesto Revilla" <er...@si...> wrote: > Hi, >=20 > when I run: > python test_EditingContext_optimistic_locking.py -d SQLite > with Python 2.2 and ZODB installed, >=20 > I get: > Traceback (most recent call last): > File "test_EditingContext_optimistic_locking.py", line 410, in ? > errs =3D main(sys.argv) > File "test_EditingContext_optimistic_locking.py", line 392, in main > utils.enable_model_cache_and_compute() [...] > TypeError: instancemethod() argument 3 must be class, not = ExtensionClass >=20 > Trying to display a message whenever a method cannot be cached, it = seems > that ever attribute of a class is an extension class. No idea how I = can turn > off ExtensionClasses. Entity, Attribute, etc. inherit from ZODB.Persistent, when available, for models to be persistent in the ZModeler --this is the source of the pb. Until a better solution is found, I've attached a patch for disabling this (see below short patch for MDL/utils.py). > On the other hand, may be some test assertios should be updated: > with 'python run.py' I get (see ???): [...] Got them on my side too, I do not know why I didn't get them at release time. i'll look closer at that probably tonight (same for the loop happening when spark is not there which you reported in your next post). Thanks for reporting! -- S=E9bastien. Index: utils.py =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /cvsroot/modeling/ProjectModeling/Modeling/utils.py,v retrieving revision 1.20 diff -u -r1.20 utils.py --- utils.py 22 Feb 2004 17:31:38 -0000 1.20 +++ utils.py 17 Mar 2004 07:06:38 -0000 @@ -57,12 +57,7 @@ class base_object : pass newclass =3D 0 =20 -try: - import ZODB - from Persistence import Persistent - base_persistent_object=3DPersistent -except: - base_persistent_object=3Dbase_object +base_persistent_object=3Dbase_object =20 _validFirstLetter =3D "_"+string.letters =20 ------------------------------------------------------- This SF.Net email is sponsored by: IBM Linux Tutorials Free Linux tutorial presented by Daniel Robbins, President and CEO of GenToo technologies. Learn everything from fundamentals to system administration.http://ads.osdn.com/?ad_id=1470&alloc_id638&op=3Dick _______________________________________________ Modeling-users mailing list Mod...@li... https://lists.sourceforge.net/lists/listinfo/modeling-users |
From: Sebastien B. <sbi...@us...> - 2004-03-17 07:20:58
|
"Ernesto Revilla" <er...@si...> wrote: > Hi, >=20 > when I run: > python test_EditingContext_optimistic_locking.py -d SQLite > with Python 2.2 and ZODB installed, >=20 > I get: > Traceback (most recent call last): > File "test_EditingContext_optimistic_locking.py", line 410, in ? > errs =3D main(sys.argv) > File "test_EditingContext_optimistic_locking.py", line 392, in main > utils.enable_model_cache_and_compute() [...] > TypeError: instancemethod() argument 3 must be class, not ExtensionClass >=20 > Trying to display a message whenever a method cannot be cached, it seems > that ever attribute of a class is an extension class. No idea how I can t= urn > off ExtensionClasses. Entity, Attribute, etc. inherit from ZODB.Persistent, when available, for models to be persistent in the ZModeler --this is the source of the pb. Until a better solution is found, I've attached a patch for disabling this (see below short patch for MDL/utils.py). > On the other hand, may be some test assertios should be updated: > with 'python run.py' I get (see ???): [...] Got them on my side too, I do not know why I didn't get them at release time. i'll look closer at that probably tonight (same for the loop happening when spark is not there which you reported in your next post). Thanks for reporting! -- S=E9bastien. Index: utils.py =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /cvsroot/modeling/ProjectModeling/Modeling/utils.py,v retrieving revision 1.20 diff -u -r1.20 utils.py --- utils.py 22 Feb 2004 17:31:38 -0000 1.20 +++ utils.py 17 Mar 2004 07:06:38 -0000 @@ -57,12 +57,7 @@ class base_object : pass newclass =3D 0 =20 -try: - import ZODB - from Persistence import Persistent - base_persistent_object=3DPersistent -except: - base_persistent_object=3Dbase_object +base_persistent_object=3Dbase_object =20 _validFirstLetter =3D "_"+string.letters =20 |
From: Sebastien B. <sbi...@us...> - 2004-03-17 07:19:38
|
"Ernesto Revilla" <er...@si...> wrote: > Hi, >=20 > under python 2.3 with sqlite adaptor installed but no postgres I got this= when running Modeling/tests/run.py: >=20 > Modeling.Adaptor.GeneralAdaptorException: Unable to find either psycopg, = pgdb or pypgsql >=20 Right, we can consider this as a bug: the absence of underlying py adaptor for PostgresqlAdaptor shouldn't raise a fatal error (maybe just a warning) until it is really needed --which is not the case at import time. If you find some time, please submit a bug report at sf. You'll find attached a quick-n-dirty patch. Thanks for reporting! -- S=E9bastien. Index: test_SchemaGeneration.py =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /cvsroot/modeling/ProjectModeling/Modeling/tests/test_SchemaGener= ation.py,v retrieving revision 1.6 diff -u -r1.6 test_SchemaGeneration.py --- test_SchemaGeneration.py 14 Feb 2004 18:17:21 -0000 1.6 +++ test_SchemaGeneration.py 17 Mar 2004 06:48:36 -0000 @@ -62,6 +62,11 @@ modelSet=3DModelSet.ModelSet() modelSet.addModelFromXML({'file': xmlmodelPath}) model=3DmodelSet.modelNamed('simpleModel1') + try: + import psycopg + except ImportError: + import sys + sys.modules['psycopg']=3D1 pgAdaptor=3DAdaptor.adaptorWithModel(model) =20 class TestSchemaGeneration(unittest.TestCase): |
From: Ernesto R. <er...@si...> - 2004-03-17 02:14:13
|
Hi, I was trying to install modeling under Python 2.3 because there I have = no strange ZODB installed. As some packages where missing, the tests = detected correctly the missinf of mx.DateTime (python 2.3 has its own = datetime package), some postgres adaptor (although a sqlite adaptor was = installed) and PyXML. Although it detects correctly that spark is not = installed, it runs into a infinite loop: =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D ERROR: [Qualifier] qualifierWithQualifierFormat ---------------------------------------------------------------------- Traceback (most recent call last): File = "C:\DOCUME~1\Erny\ESCRIT~1\Modeling\ProjectModeling\Modeling\tests\test_Q= ualifier.py", line 262, in test_04_qualifierWithQualifierFormat juniorOrSenior=3DqualifierWithQualifierFormat("age<=3D30 OR age>70") File = "C:\DOCUME~1\Erny\ESCRIT~1\Modeling\ProjectModeling\Modeling\Qualifier.py= ", line 129, in qualifierWithQualifierFormat import QualifierParser File = "C:\DOCUME~1\Erny\ESCRIT~1\Modeling\ProjectModeling\Modeling\QualifierPar= ser.py", line 125, in ? import spark ImportError: No module named spark =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D ERROR: [Qualifier] qualifierWithQualifierFormat w/ empty value ---------------------------------------------------------------------- Traceback (most recent call last): File = "C:\DOCUME~1\Erny\ESCRIT~1\Modeling\ProjectModeling\Modeling\tests\test_Q= ualifier.py", line 291, in test_05_qualifierWithQualifierFormat2 emptyTitle=3DqualifierWithQualifierFormat('title =3D=3D ""') File = "C:\DOCUME~1\Erny\ESCRIT~1\Modeling\ProjectModeling\Modeling\Qualifier.py= ", line 130, in qualifierWithQualifierFormat File = "C:\DOCUME~1\Erny\ESCRIT~1\Modeling\ProjectModeling\Modeling\Qualifier.py= ", line 130, in qualifierWithQualifierFormat return QualifierParser.qualifierWithQualifierFormat(expression) File = "C:\DOCUME~1\Erny\ESCRIT~1\Modeling\ProjectModeling\Modeling\Qualifier.py= ", line 130, in qualifierWithQualifierFormat return QualifierParser.qualifierWithQualifierFormat(expression) File = "C:\DOCUME~1\Erny\ESCRIT~1\Modeling\ProjectModeling\Modeling\Qualifier.py= ", line 130, in qualifierWithQualifierFormat return QualifierParser.qualifierWithQualifierFormat(expression) ..... Erny |
From: Ernesto R. <er...@si...> - 2004-03-17 01:47:50
|
Hi, under python 2.3 with sqlite adaptor installed but no postgres I got = this when running Modeling/tests/run.py: Modeling.Adaptor.GeneralAdaptorException: Unable to find either psycopg, = pgdb or pypgsql Erny |
From: Ernesto R. <er...@si...> - 2004-03-17 01:47:49
|
Hi, when I run: python test_EditingContext_optimistic_locking.py -d SQLite with Python 2.2 and ZODB installed, I get: Traceback (most recent call last): File "test_EditingContext_optimistic_locking.py", line 410, in ? errs =3D main(sys.argv) File "test_EditingContext_optimistic_locking.py", line 392, in main utils.enable_model_cache_and_compute() File "utils.py", line 139, in enable_model_cache_and_compute m.cacheSimpleMethods() File "C:\DOCUME~1\Erny\ESCRIT~1\Modeling\PROJEC~1\Modeling\Model.py", = line 283 , in cacheSimpleMethods cache_simple_methods(a) File "C:\DOCUME~1\Erny\ESCRIT~1\Modeling\PROJEC~1\Modeling\utils.py", = line 235 , in cache_simple_methods cached_m=3Dinstancemethod(l, anInstance, anInstance.__class__) TypeError: instancemethod() argument 3 must be class, not ExtensionClass Trying to display a message whenever a method cannot be cached, it seems = that ever attribute of a class is an extension class. No idea how I can = turn off ExtensionClasses. On the other hand, may be some test assertios should be updated: with 'python run.py' I get (see ???): =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D ERROR: [Relationship] __eq__ and __ne__ ---------------------------------------------------------------------- Traceback (most recent call last): File "test_Relationship.py", line 64, in test_00_equality_n_inequality rel_abb=3Dcopy.copy(rel_ab) # same, different id() File "C:\prg\PYTHON22\lib\copy.py", line 84, in copy y =3D _reconstruct(x, reductor(), 0) File "C:\prg\PYTHON22\lib\copy.py", line 295, in _reconstruct y =3D callable(*args) TypeError: ExtensionClass object argument after * must be a sequence # ??? Again extension classes??? =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D FAIL: [SQLExpression] = prepareSelectExpressionWithAttributes/KeyValueQualifier ---------------------------------------------------------------------- Traceback (most recent call last): File "test_SQLExpression.py", line 170, in = test_06_prepareSelectExpressionWith Attributes_01 "SELECT DISTINCT t0.id, t0.title, t0.PRICE, t0.FK_WRITER_ID FROM = BOOK t0 INN ER JOIN ( WRITER t1 INNER JOIN WRITER t2 ON t1.FK_WRITER_ID=3Dt2.ID ) = ON t0.FK_W RITER_ID=3Dt1.ID WHERE t2.LAST_NAME =3D 'Rabelais'") File "C:\prg\PYTHON22\lib\unittest.py", line 286, in failUnlessEqual raise self.failureException, \ AssertionError: "SELECT DISTINCT t0.id, t0.title, t0.FK_WRITER_ID, = t0.PRICE FROM BOOK t0 INNER JOIN ( WRITER t1 INNER JOIN WRITER t2 ON = t1.FK_WRITER_ID=3Dt2.ID ) ON t0.FK_WRITER_ID=3Dt1.ID WHERE t2.LAST_NAME =3D 'Rabelais'" !=3D = "SELECT DISTINCT t0.id, t0.title, t0.PRICE, t0.FK_WRITER_ID FROM BOOK t0 INNER JOIN ( = WRITER t1 INNER JOIN WRITER t2 ON t1.FK_WRITER_ID=3Dt2.ID ) ON = t0.FK_WRITER_ID=3Dt1.ID WHERE t2.LAST_NAME =3D 'Rabelais'" # ???: t0.PRICE and to.FK_WRITER_ID may be switched. =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D FAIL: [SQLExpression] = prepareSelectExpressionWithAttributes/KeyComparisonQualifi er ---------------------------------------------------------------------- Traceback (most recent call last): File "test_SQLExpression.py", line 193, in = test_07_prepareSelectExpressionWith Attributes_02 "SELECT DISTINCT t0.id, t0.title, t0.PRICE, t0.FK_WRITER_ID FROM = BOOK t0 INN ER JOIN ( WRITER t1 INNER JOIN WRITER t2 ON t1.FK_WRITER_ID=3Dt2.ID ) = ON t0.FK_W RITER_ID=3Dt1.ID WHERE t2.LAST_NAME =3D t1.LAST_NAME") File "C:\prg\PYTHON22\lib\unittest.py", line 286, in failUnlessEqual raise self.failureException, \ AssertionError: 'SELECT DISTINCT t0.id, t0.title, t0.FK_WRITER_ID, = t0.PRICE FROM BOOK t0 INNER JOIN ( WRITER t1 INNER JOIN WRITER t2 ON = t1.FK_WRITER_ID=3Dt2.ID ) ON t0.FK_WRITER_ID=3Dt1.ID WHERE t2.LAST_NAME =3D t1.LAST_NAME' !=3D = 'SELECT DISTINC T t0.id, t0.title, t0.PRICE, t0.FK_WRITER_ID FROM BOOK t0 INNER JOIN ( = WRITER t 1 INNER JOIN WRITER t2 ON t1.FK_WRITER_ID=3Dt2.ID ) ON = t0.FK_WRITER_ID=3Dt1.ID WHER E t2.LAST_NAME =3D t1.LAST_NAME' # ???: t0.PRICE and to.FK_WRITER_ID may be switched. ---------------------------------------------------------------------- Ran 113 tests in 8.953s FAILED (failures=3D2, errors=3D1) 'Errors' indicate exceptions other than AssertionError. 'Failures' indicate AssertionError 1 errors, 2 failures Thanx, Erny |
From: Sebastien B. <sbi...@us...> - 2004-03-15 22:38:29
|
Hi, Holger Schurig <hol...@gm...> wrote: > Modeling/DatabaseAdaptor/setup.py states license=3D"BSD-like", but=20 > Modeling/DatabaseAdaptor/COPYING says GPLv2 Sorry, DBAdaptors/setup.py is a very old version (0.7a5) that was forgotten here; the package DBAdaptors was once distributed apart, if I remember well. This setup.py is now useless and it will be removed in the next version. From 0.8 the licence switched to GPL, see http://modeling.sourceforge.net/licence.html This has been recently discussed here: https://sourceforge.net/mailarchive/forum.php?thread_id=3D3884124&forum_id= =3D10674 https://sourceforge.net/mailarchive/forum.php?thread_id=3D3887729&forum_id= =3D10674 You'll notice that I haven't answered, just because I didn't make up my mind definitively yet. Feel free to add your own comments to the thread! > BTW: some similar (but still very different) project OFBIZ did chose the= =20 > MIT license. www.ofbiz.org contains many well defined models together=20 > with java code to create business software. The models are defined in=20 > XML, but do provide more than python-Modelling currently supports. More than it currently supports, yes ;) Thanks for the link. Its Entity Engine seems to be one of the key components for db-persistence; it seems that the objects should be managed by hand however, and I haven't seen anything like "ECs" ie. sessions/graphs of objects there (the "OFBiz for Dummies" seems to confirm this: manual retrieval of PK at creation time, individual object.flushToDB()). However, this is definitely a very large framework with an impressive amount of features and documentation, and it surely deserves more than the 10 minutes I spend on its doc., naturally focusing on db-persistence! -- S=E9bastien. |
From: Sebastien B. <sbi...@us...> - 2004-03-15 22:12:16
|
Hi, Thinking about this in the background as well ;) I've also wondered whether simple object-proxies could do the trick for a first step toward a distributed data layer (which I now think should ultimately be built on top of EC, but I may change my mind in a few hours:). And very, very interestingly now comes Erny w/ something like a proof of concept implementation on its side! That's very promising. BTW is anyone here familiar w/ zodb's zeo? It's probably worth looking at it as well. John: I'm afraid i do not have the time to dig in cimarron's source code now, so I think I'll wait for your short example :) Erny: is your current impl. read-only on the client side or is it RW? Which architecture are you using? Maybe GlobalIDs along with a map (one client->one ec) to identify objects, and pickling (or alike) to transmit an object's data? -- S=E9bastien. Ernesto Revilla <er...@si...> wrote: > Hi, >=20 > although this message does not respond exactly to the questions exposed h= ere, I just wanted to comment what we do. >=20 > As with pyro, we designed our own protocol on top of XMLRPC, that is, ob= jects and other data (None, DateTime) may be transmitted from server to cli= ent for whichever purpose. The client has a collection of 'dump' objects, i= n our words ObjectProxies, and nearly every call is a client-server-client = transaction. Business logic resides on the server. The database can reside = on another machine, of course. This is not very distributed, but it's a 3-t= ier architecture. We are still developing, so actually we are not in produc= tion phase. (In the future we may switch to pyro and/or Corba). >=20 > On the other hand, modeling is able to run at once different models on di= fferen servers, and with the future optimistic locks, the same model could = run on several machines. >=20 > In each way, if you work in a distributed environment, the implementation= of an object will run on one or more 'server' machines, and the 'clients' = will hold some proxies to these objects. All method calls not treated local= ly, will be send to the server. If you do not want to call the remote objec= t, whenever an attribute is accessed, you can implement a proxy initializat= ion which requests and stores locally all object attributes, or define a me= thod in your framework (as we did), which requests a collection of attribut= e values for some objects (as a batch). >=20 >=20 > Best regsards > Erny >=20 > ----- Original Message -----=20 > From: "John Lenton" <jo...@vi...> > To: "Modeling users' mailing list" <mod...@li...> > Sent: Monday, March 15, 2004 2:00 PM > Subject: Re: [Modeling-users] N-tier development and modeling >=20 >=20 > > Sender: John Lenton <jo...@ma...> > >=20 > > On Sun, Mar 14, 2004 at 02:37:06PM +0100, Sebastien Bigaret wrote: > > > I must say all this is really interesting. I unfortunately do not have > > > the time to investigate such things deeper, but i'm really interested= in > > > a distributed layer. Had a very quick look at pyro, seems compact and > > > clean. If any of you experiment in this direction I'd like to hear fr= om > > > the details, problems etc. As far as I can understand things, it seems > > > that Tom and John are speaking about similar things, if not the same. > > >=20 > > > BTW about weakrefs and pickle, I can effectively confirm that weakr= efs > > > are used, mainly in objects (which hold a weakref to their EC) and = in > > > to-many faults (AccessArrayFaultHandler) which for technical reasons > > > hold weakref of the object referencing them. > >=20 > > I've been thinking about this a bit (`in background', if you will), > > and now I am of the opinion that actually using pyro on > > editingcontexts and modeling objects is the wrong way to do this; I > > think proxy classes (via overriding CustomObject?) is probably a saner > > way to go. You probably don't want to shuttle your modeling objects > > anyway: what you're wanting to distribute is the data, i.e. the result > > of e.g. getFirstName, and possibly (although I doubt it) the effect of > > setFirstName. Not the object itself; that would imply you are > > distributing your business logic. I'll try to set up an example using > > cimarron, so you can see what I mean. > >=20 > > > John: after a quick search I was not able to find any english-written > > > resources about papo and cimarron, is this available somewhere? > >=20 > > papo is https://papo.vialibre.org.ar, but as you noted it's in > > spanish. cimarron you can find in papo's savannah cvs; I'm afraid it's > > lacking documentation and examples, and probably isn't much use > > without a bit of handholding. However, it being a framework, we've > > tried to keep it in english, so at least running pydoc on the files in > > Generic/ should provide some insight. Consider it 'pre-alpha', because > > it is. > >=20 > > --=20 > > John Lenton (jo...@vi...) -- Random fortune: > > "In the long run, every program becomes rococo, and then rubble." > > -- Alan Perlis |
From: Holger S. <hol...@gm...> - 2004-03-15 20:58:02
|
Modeling/DatabaseAdaptor/setup.py states license="BSD-like", but Modeling/DatabaseAdaptor/COPYING says GPLv2 BTW: some similar (but still very different) project OFBIZ did chose the MIT license. www.ofbiz.org contains many well defined models together with java code to create business software. The models are defined in XML, but do provide more than python-Modelling currently supports. |
From: Ernesto R. <er...@si...> - 2004-03-15 16:07:18
|
Hi, although this message does not respond exactly to the questions exposed = here, I just wanted to comment what we do. As with pyro, we designed our own protocol on top of XMLRPC, that is, = objects and other data (None, DateTime) may be transmitted from server = to client for whichever purpose. The client has a collection of 'dump' = objects, in our words ObjectProxies, and nearly every call is a = client-server-client transaction. Business logic resides on the server. = The database can reside on another machine, of course. This is not very = distributed, but it's a 3-tier architecture. We are still developing, so = actually we are not in production phase. (In the future we may switch to = pyro and/or Corba). On the other hand, modeling is able to run at once different models on = differen servers, and with the future optimistic locks, the same model = could run on several machines. In each way, if you work in a distributed environment, the = implementation of an object will run on one or more 'server' machines, = and the 'clients' will hold some proxies to these objects. All method = calls not treated locally, will be send to the server. If you do not = want to call the remote object, whenever an attribute is accessed, you = can implement a proxy initialization which requests and stores locally = all object attributes, or define a method in your framework (as we did), = which requests a collection of attribute values for some objects (as a = batch). Best regsards Erny ----- Original Message -----=20 From: "John Lenton" <jo...@vi...> To: "Modeling users' mailing list" = <mod...@li...> Sent: Monday, March 15, 2004 2:00 PM Subject: Re: [Modeling-users] N-tier development and modeling > Sender: John Lenton <jo...@ma...> >=20 > On Sun, Mar 14, 2004 at 02:37:06PM +0100, Sebastien Bigaret wrote: > > I must say all this is really interesting. I unfortunately do not = have > > the time to investigate such things deeper, but i'm really = interested in > > a distributed layer. Had a very quick look at pyro, seems compact = and > > clean. If any of you experiment in this direction I'd like to hear = from > > the details, problems etc. As far as I can understand things, it = seems > > that Tom and John are speaking about similar things, if not the = same. > >=20 > > BTW about weakrefs and pickle, I can effectively confirm that = weakrefs > > are used, mainly in objects (which hold a weakref to their EC) and = in > > to-many faults (AccessArrayFaultHandler) which for technical = reasons > > hold weakref of the object referencing them. >=20 > I've been thinking about this a bit (`in background', if you will), > and now I am of the opinion that actually using pyro on > editingcontexts and modeling objects is the wrong way to do this; I > think proxy classes (via overriding CustomObject?) is probably a saner > way to go. You probably don't want to shuttle your modeling objects > anyway: what you're wanting to distribute is the data, i.e. the result > of e.g. getFirstName, and possibly (although I doubt it) the effect of > setFirstName. Not the object itself; that would imply you are > distributing your business logic. I'll try to set up an example using > cimarron, so you can see what I mean. >=20 > > John: after a quick search I was not able to find any = english-written > > resources about papo and cimarron, is this available somewhere? >=20 > papo is https://papo.vialibre.org.ar, but as you noted it's in > spanish. cimarron you can find in papo's savannah cvs; I'm afraid it's > lacking documentation and examples, and probably isn't much use > without a bit of handholding. However, it being a framework, we've > tried to keep it in english, so at least running pydoc on the files in > Generic/ should provide some insight. Consider it 'pre-alpha', because > it is. >=20 > --=20 > John Lenton (jo...@vi...) -- Random fortune: > "In the long run, every program becomes rococo, and then rubble." > -- Alan Perlis >=20 >=20 > ------------------------------------------------------- > This SF.Net email is sponsored by: IBM Linux Tutorials > Free Linux tutorial presented by Daniel Robbins, President and CEO of > GenToo technologies. Learn everything from fundamentals to system > = administration.http://ads.osdn.com/?ad_id=3D1470&alloc_id=3D3638&op=3Dcli= ck > _______________________________________________ > Modeling-users mailing list > Mod...@li... > https://lists.sourceforge.net/lists/listinfo/modeling-users > |
From: John L. <jo...@vi...> - 2004-03-15 13:01:05
|
Sender: John Lenton <jo...@ma...> On Sun, Mar 14, 2004 at 02:37:06PM +0100, Sebastien Bigaret wrote: > I must say all this is really interesting. I unfortunately do not have > the time to investigate such things deeper, but i'm really interested in > a distributed layer. Had a very quick look at pyro, seems compact and > clean. If any of you experiment in this direction I'd like to hear from > the details, problems etc. As far as I can understand things, it seems > that Tom and John are speaking about similar things, if not the same. > > BTW about weakrefs and pickle, I can effectively confirm that weakrefs > are used, mainly in objects (which hold a weakref to their EC) and in > to-many faults (AccessArrayFaultHandler) which for technical reasons > hold weakref of the object referencing them. I've been thinking about this a bit (`in background', if you will), and now I am of the opinion that actually using pyro on editingcontexts and modeling objects is the wrong way to do this; I think proxy classes (via overriding CustomObject?) is probably a saner way to go. You probably don't want to shuttle your modeling objects anyway: what you're wanting to distribute is the data, i.e. the result of e.g. getFirstName, and possibly (although I doubt it) the effect of setFirstName. Not the object itself; that would imply you are distributing your business logic. I'll try to set up an example using cimarron, so you can see what I mean. > John: after a quick search I was not able to find any english-written > resources about papo and cimarron, is this available somewhere? papo is https://papo.vialibre.org.ar, but as you noted it's in spanish. cimarron you can find in papo's savannah cvs; I'm afraid it's lacking documentation and examples, and probably isn't much use without a bit of handholding. However, it being a framework, we've tried to keep it in english, so at least running pydoc on the files in Generic/ should provide some insight. Consider it 'pre-alpha', because it is. -- John Lenton (jo...@vi...) -- Random fortune: "In the long run, every program becomes rococo, and then rubble." -- Alan Perlis |
From: Sebastien B. <sbi...@us...> - 2004-03-14 14:08:02
|
Hi, Tom Hallman <hal...@dm...> writes: > Greetings Sebastien and all, >=20 > I have a few questions regarding a client/server implementation using > Modeling. I will do my best to make this as clear as possible =3D) >=20 > Let's say we have a client and a server, with a protocol (like XMLRPC) > between them that passes along objects and their member > variables. Modeling-generated classes reside on the server, while skeleton > classes that define the same method interface as the Modeling classes res= ide > on the client. When a call is made to a method on the client side that do= es > not locally exist, it will go out to the server to use the method that is > defined there. (This way we can write really "dumb" clients when necessar= y.) >=20 > The most important question is this: is it possible to pass a modeling > object back and forth over the RPC transport? (a related question is, are > Modeling classes picklable?) They are not pickable as-is, because of the weakref pointing to the EC it holds. Now if you transport the object to the client side the weakref is a nonsense and can be forgotten (see also: discussion about relationships, below). But hen, if you want to be able to modify an object on the client side and save the changes oin the server side, you'll need to have a mechanism mapping a client with its (server-local) EC so that the changes can be applied and saved on the server. > Will we lose or "dirty" important context data? > Other than the basic member data of a class (like for an Address class: c= ity, > state, etc.), what data do Modeling objects maintain (I know one such thi= ng is > the global ID)?=20=20 The GlobalID is not stored in the object itself (despite the fact I've just noticed that there is a _globalID class attribute in CustomObject, which needs to be removed since it's useless). When needed the gid is asked to the relevant EC, see globalID(). What about other context data? You'll probably want to overwrite the willChange() method on the client-side: there's no EC on the clientside to notify for changes --you can e.g. set a particular attribute on the object so that at some point the client can save changes by sending back to the server the data for changed objects. > Perhaps another way of phrasing this is: could two Modeling > objects that have the same global ID and basic member data be interchanged > without side effects? Yes this can be done. The only thing you really should not do is to change an object's EC after it's been registered, then you'll be in real trouble! Apart from that, nothing prevents you from building a ghost-object on a client-side and exchanging local and distant object's data: basically and from the MDL point of view there's no difference then simply changing object's attributes. Now another thing that comes in play are relationships and faults. I'd recommend, when testing such distant mechanisms, to make it work w/ a simple entity with no relationships. Then add to-one relationship (a to-one relationship can be identified by the GlobalID for the destination object), then to-many rels. You can also look at snapshot() and how this method handles to-one and to-many related objects and faults. Last, when thinking about all this I suspect you'll need something like an EC on the client-side as well, at least a way to map objects with their globalIDs. For this purpose, EC.UniquingTbale will probably be of some help --either as-is, or mmaybe simplified. These are quick thoughts on the subject, I probably did not answer all your questions, but I'm ready to answer your coming questions ;) -- S=E9bastien. |
From: Sebastien B. <sbi...@us...> - 2004-03-14 13:42:55
|
Marcos Dione <md...@vi...> wrote: > is simple to reproduce: just call EditingContext.fetch () with a > wrong class name. I got two different errors with two different > qualifiers, so I thought it was a bad qualifier, and then I realize my > typo. here are those errors: [...] Ooops. Added ticket #916019, it will be fixed, thanks for the report! -- S=E9bastien. |
From: Sebastien B. <sbi...@us...> - 2004-03-14 13:39:01
|
Hi all, Sorry for jumping in the discussion so lately, I've been quite busy those last days. I must say all this is really interesting. I unfortunately do not have the time to investigate such things deeper, but i'm really interested in a distributed layer. Had a very quick look at pyro, seems compact and clean. If any of you experiment in this direction I'd like to hear from the details, problems etc. As far as I can understand things, it seems that Tom and John are speaking about similar things, if not the same. BTW about weakrefs and pickle, I can effectively confirm that weakrefs are used, mainly in objects (which hold a weakref to their EC) and in to-many faults (AccessArrayFaultHandler) which for technical reasons hold weakref of the object referencing them. The other major problem will probably be that most operations, such as a fetch(), are propagated through the object store hierarchy from an EC down to the DatabaseContext(s), but at some point DBContext calls back methods on the calling EC. John: after a quick search I was not able to find any english-written resources about papo and cimarron, is this available somewhere? -- S=E9bastien. |
From: Tom H. <hal...@dm...> - 2004-03-12 17:53:07
|
Greetings Sebastien and all, I have a few questions regarding a client/server implementation using Modeling. I will do my best to make this as clear as possible =) Let's say we have a client and a server, with a protocol (like XMLRPC) between them that passes along objects and their member variables. Modeling-generated classes reside on the server, while skeleton classes that define the same method interface as the Modeling classes reside on the client. When a call is made to a method on the client side that does not locally exist, it will go out to the server to use the method that is defined there. (This way we can write really "dumb" clients when necessary.) The most important question is this: is it possible to pass a modeling object back and forth over the RPC transport? (a related question is, are Modeling classes picklable?) Will we lose or "dirty" important context data? Other than the basic member data of a class (like for an Address class: city, state, etc.), what data do Modeling objects maintain (I know one such thing is the global ID)? Perhaps another way of phrasing this is: could two Modeling objects that have the same global ID and basic member data be interchanged without side effects? Thanks in advance for any insight! Yours, Tom ___________________________________________________________ Tom Hallman DiscipleMakers, Inc hal...@dm... http://www.dm.org/~hallmant 531 Brittany Dr * State College * PA * 16803 * 814-861-4591 Go therefore and make disciples of all nations (Matt 28:19) |
From: John L. <jo...@vi...> - 2004-03-11 19:37:53
|
Sender: John Lenton <jo...@ma...> On Wed, Mar 10, 2004 at 04:45:59PM -0500, Tom Hallman wrote: > > Thanks for that input. A question - would using such a method (via Pyro, > etc.) bind us to using clients exclusively written in Python? For example, > if we wanted a client to be written in PHP or Java, we wouldn't be able to > use that Distributed Objects method. Is that correct? pyro es python-specific; what it does is a pickle/unpickle, essentially. Note that as modeling stands now you can't pickle the objects (because they're actually weakrefs), so you'd have to write an EditingContextProxy or something like it to hide that. Once you've done that, you are a step away from being transport-independant. Pyro is easy, and fast, so I'd recommend using it at first; however, once you have that working, if you find you need to use corba or xmlrpc, you'd just have to subclass the EditingContextProxy. I'd like to point out that cimarron, the sub-proyect of PAPO I'm currently busy with, aims to do what Matthew describes: in an MVC triad, Modeling is the M (the classes Modeling generates are the place to put the business logic), cimarron is the View, and you program the Controller. The idea behind cimarron is rather like that of anygui, in that you write the controller once, and cimarron is able to render it via any of a series of concrete frontends (unlike anygui, however, it's designed for strict MVC-like separation :)). We currently only have a Gtk2 frontend, but we will be adding at least curses and web (either via zope, or direct html generation) at some point in the future. It is still rather green, but we're already using it to reimplement PAPO's flagship proyect (Luca), so it should be stabilizing quickly. Let me point out, just in case it wasn't clear, that cimarron neither knows nor cares if it's dealing with local modeling objects, remote objects obtained via some kind of rpc, or plain python objects; likewise, in whatever you decide to do, this separation is crucial. -- John Lenton (jo...@vi...) -- Random fortune: Imitation is the sincerest form of television. -- Fred Allen |
From: Federico H. <fh...@vi...> - 2004-03-11 01:58:40
|
On Wed, 2004-03-10 at 18:45, Tom Hallman wrote: > Thanks for that input. A question - would using such a method (via Pyro= ,=20 > etc.) bind us to using clients exclusively written in Python? For example= ,=20 > if we wanted a client to be written in PHP or Java, we wouldn't be able t= o=20 > use that Distributed Objects method. Is that correct? I'm not familiar with Pyro at all, so I'm afraid I can't comment on that. If it were properly implemented, you ought to be able to cross language boundaries (I remember java apps could call Distributed Objects at some point in history), but certain assumptions would have to be true in the target language. For instance, it would have to implement some form of true message passing, and not mere polymorphism (i.e. no C++). Fede --=20 GnuPG Public Key: gpg --keyserver wwwkeys.eu.pgp.net --recv-key BD02C6E0 Key Fingerprint: 04F4 08C5 14B7 2C3D DB21 ACF8 6CF5 0B0C BD02 C6E0 |
From: Marcos D. <md...@vi...> - 2004-03-10 23:27:02
|
User-Agent: Mutt/1.3.28i is simple to reproduce: just call EditingContext.fetch () with a wrong class name. I got two different errors with two different qualifiers, so I thought it was a bad qualifier, and then I realize my typo. here are those errors: Traceback (most recent call last): File "/home/mdione/src/papo_project/cimarron/src/Gtk2/Gtk2Button.py", line 93, in __activate self.submit() File "./Generic/Control.py", line 145, in submit Generic.Exceptions.ControlError: No pude guardar el valor en el Modelo: ... Traceback (most recent call last): ... File "./Generic/Control.py", line 143, in submit ... File "./Generic/Control.py", line 71, in doAction ... File "/home/mdione/src/papo_project/luca/Forms.py", line 58, in save ... guys= ec.fetch ('Person', qualifier='name like "%s"' % self.nameInput.getValue ()) ... File "/usr/lib/python2.3/site-packages/Modeling/EditingContext.py", line 1415, in fetch ... fs=FetchSpecification(entityName, qualifier=qualifier, deepFlag=isDeep) ... File "/usr/lib/python2.3/site-packages/Modeling/FetchSpecification.py", line 53, in __init__ ... self.setQualifier(qualifier) ... File "/usr/lib/python2.3/site-packages/Modeling/FetchSpecification.py", line 108, in setQualifier ... aQualifier.validateKeysWithRootClassDescription(classDescriptionForName(self._entityName)) ... File "/usr/lib/python2.3/site-packages/Modeling/Qualifier.py", line 177, in validateKeysWithRootClassDescription ... allCDkeys=aClassDescription.allAttributesKeys()+\ ... AttributeError: 'NoneType' object has no attribute 'allAttributesKeys' and: Traceback (most recent call last): File "/home/mdione/src/papo_project/cimarron/src/Gtk2/Gtk2Button.py", line 93, in __activate self.submit() File "./Generic/Control.py", line 145, in submit Generic.Exceptions.ControlError: No pude guardar el valor en el Modelo: ... Traceback (most recent call last): ... File "./Generic/Control.py", line 143, in submit ... File "./Generic/Control.py", line 71, in doAction ... File "/home/mdione/src/papo_project/luca/Forms.py", line 57, in save ... guys= ec.fetch ('Person', qualifier='name like "%s" AND isActive=1' % self.nameInput.getValue ()) ... File "/usr/lib/python2.3/site-packages/Modeling/EditingContext.py", line 1415, in fetch ... fs=FetchSpecification(entityName, qualifier=qualifier, deepFlag=isDeep) ... File "/usr/lib/python2.3/site-packages/Modeling/FetchSpecification.py", line 53, in __init__ ... self.setQualifier(qualifier) ... File "/usr/lib/python2.3/site-packages/Modeling/FetchSpecification.py", line 108, in setQualifier ... aQualifier.validateKeysWithRootClassDescription(classDescriptionForName(self._entityName)) ... File "/usr/lib/python2.3/site-packages/Modeling/Qualifier.py", line 176, in validateKeysWithRootClassDescription ... keys=self.allQualifierKeys() ... File "/usr/lib/python2.3/site-packages/Modeling/Qualifier.py", line 159, in allQualifierKeys ... self.addQualifierKeysToSet(qualifierKeysList) ... File "/usr/lib/python2.3/site-packages/Modeling/Qualifier.py", line 322, in addQualifierKeysToSet ... qualifier.addQualifierKeysToSet(qualifierKeys) ... AttributeError: 'str' object has no attribute 'addQualifierKeysToSet' |
From: Tom H. <elw...@ho...> - 2004-03-10 22:03:59
|
>The local process would get a proxy object, that works >like it's local, but in fact forwards all requests to a real > editing context that lives in the server. Fede, Thanks for that input. A question - would using such a method (via Pyro, etc.) bind us to using clients exclusively written in Python? For example, if we wanted a client to be written in PHP or Java, we wouldn't be able to use that Distributed Objects method. Is that correct? ~Tom _________________________________________________________________ Frustrated with dial-up? Lightning-fast Internet access for as low as $29.95/month. http://click.atdmt.com/AVE/go/onm00200360ave/direct/01/ |