Re: [Zope-dev] LoginManager ownership bug!
Cheers! I actually tried to implement support for local roles in almost exactly the same way as you did, but for some reason I didn't get it to work. Perhaps I should look into the matter again... I just threw in the user_names(), and getUserNames() into the LoginManager, added some dtml to handle SQL and... it didn't work, so I dropped it... ;-) I'll try to come up with some nice way to handle local roles in a proper way in the LoginManager, and hope that I get my patches accepted :-) Do you have any clue about the ownership bug in the LoginManager? I find it quite strange that an unowned object becomes owned whenever Zope is restarted (or when a method is added...). I suspect that the problem is within the ZPatterns modules, since it handles the persistance of the LoginManager... This is how the LoginManager is inited and ownership is set: ob=LoginManager() ob._owner=UnownableOwner self._setObject('acl_users', ob) I tried to make _owner a global attribute of the LoginManager, but that didn't solve the problem. I have also written Ty Sarna, but I have not received any response yet. One more thing... I'm new to PythonMethods, and I would like to know how to get access to the self attirbute (or the DTML namespace if you like) from PythonMethods. I would like to use PythonMethods more, beacuse dtml quickly becomes unreadable and ugly, and Python is always beautiful :-) Have a nice day, .jonas. On Thu, Oct 05, 2000 at 08:11:45AM -0700, Michael Bernstein wrote: > Jonas Juselius wrote: > > > > Another thing which I have tried to do, is to add support for local roles to > > the LoginManager. At first it looked rather simple, but then I realized that > > it wasn't really _that_ simple, and dropped it because I don't have time... It > > would however be nice to have local roles support in the LoginManager, as it > > would make it more complete. > > > > I am currently using Zope-2.2.1 (and Zope-2.2.2), ZPatterns-0-4-2a1 and > > LoginManager-0_8_7a1. > > I used Membership 0.7.6 on top of what you've got, and added > support for local roles as detailed in this posting: > > http://lists.zope.org/pipermail/zope-dev/2000-September/007030.html > > This ought to give you the clues you need to add the > neccessary getUserNames method to a SQL User Source, and > make the LoginManager user_names modification as well. If > you have any ideas on how to generalize the user_names > method, I'd like to hear them. > > Let me know how it goes, > > Michael Bernstein. -- And what is good, Phaedrus, And what is not--- Need we ask anyone to tell us these things? [ PGP public key: http://www.iki.fi/jonas/pubkey.asc ] ___ Zope-Dev maillist - [EMAIL PROTECTED] http://lists.zope.org/mailman/listinfo/zope-dev ** No cross posts or HTML encoding! ** (Related lists - http://lists.zope.org/mailman/listinfo/zope-announce http://lists.zope.org/mailman/listinfo/zope )
[Zope-dev] Removing uninstalled Prods from ZODB?
Hola, I would like to know how to remove removed Products from the ZODB. This might sound silly, but I tried out POPMail and the PTK-0.8, then I uninstalled them and removed all the files. After I restarted Zope everything looked fine, no trace of the Products in the Control Panel Products list. However, I still have 'Advanced' tabs from the PTK in some management screens, and the POPMail has left some base classes for ZClasses. As a result of the POPMail garbage, I'm not able to add any new ZClasses to the system because: Error Type: Could not load oid Error Value: None In the debug output I find that something related to POPMail is screwing up my system... Can anybody tell me how to get rid of all this half uninstalled Products (other than exporting all my objects and re-importing them into a clean ZODB)? Perhaps an uninstall API for Products would be a good idea... something like def unititalize(context): context.unregisterClass() in __init__.py, that gets called when a Product is removed from the Product Management screens... cheers, .jonas. -- And what is good, Phaedrus, And what is not--- Need we ask anyone to tell us these things? [ PGP public key: http://www.iki.fi/jonas/pubkey.asc ] ___ Zope-Dev maillist - [EMAIL PROTECTED] http://lists.zope.org/mailman/listinfo/zope-dev ** No cross posts or HTML encoding! ** (Related lists - http://lists.zope.org/mailman/listinfo/zope-announce http://lists.zope.org/mailman/listinfo/zope )
[Zope-dev] automatical login procedure
Hi, now I know how to generate a user in the acl_user folder via Now, how to login a user automatically via DTML? Thanks to all readers and perhaps writers :-) ___ Zope-Dev maillist - [EMAIL PROTECTED] http://lists.zope.org/mailman/listinfo/zope-dev ** No cross posts or HTML encoding! ** (Related lists - http://lists.zope.org/mailman/listinfo/zope-announce http://lists.zope.org/mailman/listinfo/zope )
[Zope-dev] ToDoManager exampleworks for me on NT/win98
I'm using Zope 2.2.2 and ZPatterns-0-4-2a2(3). Now I'm REALLY looking forward to ZPatterns-0-4-3 ;-) I can't wait until this weekend. Get your Free E-mail at http://tacoma.zzn.com Get your own Web-Based E-mail Service at http://www.zzn.com ___ Zope-Dev maillist - [EMAIL PROTECTED] http://lists.zope.org/mailman/listinfo/zope-dev ** No cross posts or HTML encoding! ** (Related lists - http://lists.zope.org/mailman/listinfo/zope-announce http://lists.zope.org/mailman/listinfo/zope )
Re: [Zope-dev] ZPatterns design questions
I should point out a couple of things that might not be obvious (that I noticed only on a second 'read' of the explaination): 1) getPersistentItemIds() can be a pain. is straightforward enough... but what if I don't care if they are sorted, or I want to sort on some other property? One would think that you could do something like...: ... But it doesn't work! You get 'Authorization Failed'. There was a bit of email on the list when I found this problem but it doesn't seem to bother anyone too much it turns out that getPersistentItemIds() actually returns a BTree object, which is not covered by the Zope security system as an allowed 'simple' subobject. However, when you 'sort' the list in the 'in' tag.. a side effect is that it it copied to a plain old Zope list. so it's OK. ;-) So... you *can* do ... Soo.. the moral of that story is... if you're not allowed to see something... just sort it! :-) !! ;-( 2) This simple/dumb example using a Specialist/Rack combination. There is another approach (that Steve Alexander has used a lot I gather) which is to use the Folder with customizer support. I've never tried that since I went down this road and wanted to sort it out before 'branching' to other methods. To be fair I should probably try to implement this same example with that approach. -steve ___ Zope-Dev maillist - [EMAIL PROTECTED] http://lists.zope.org/mailman/listinfo/zope-dev ** No cross posts or HTML encoding! ** (Related lists - http://lists.zope.org/mailman/listinfo/zope-announce http://lists.zope.org/mailman/listinfo/zope )
Re: [Zope-dev] ToDoManager ZPatterns example not working
Erp! Sorry... I think the ZClass and the Rack got out of sync... I'll upload a new 'consistent' pair.. sorry! -steve > "Itai" == Itai Tavor <[EMAIL PROTECTED]> writes: Itai> Hi, Itai> I installed the ToDoManager/ToDoProduct example Itai> (http://www.zope.org/Members/sspickle/DumbZPatternsExample ) Itai> but it won't work. System is RedHat 6.1, Zope 2.2.2, Itai> ZPatterns-0-4-2a3. Itai> I get the following traceback when I try to view Itai> /ToDoManager/index_html. Is it a bug somewhere or a problem Itai> with my installation? Itai> Error Type: AttributeError Error Value: Itai> _setRack Itai> Traceback (innermost last): File Itai> /opt/Zope-2.2.2-linux2-x86/lib/python/ZPublisher/Publish.py, Itai> line 222, in publish_module File Itai> /opt/Zope-2.2.2-linux2-x86/lib/python/ZPublisher/Publish.py, Itai> line 187, in publish File Itai> /opt/Zope-2.2.2-linux2-x86/lib/python/Zope/__init__.py, line Itai> 221, in zpublisher_exception_hook (Object: Itai> ProviderContainer) File Itai> /opt/Zope-2.2.2-linux2-x86/lib/python/ZPublisher/Publish.py, Itai> line 171, in publish File Itai> /opt/Zope-2.2.2-linux2-x86/lib/python/ZPublisher/mapply.py, Itai> line 160, in mapply (Object: index_html) File Itai> /opt/Zope-2.2.2-linux2-x86/lib/python/ZPublisher/Publish.py, Itai> line 112, in call_object (Object: index_html) File Itai> /opt/Zope-2.2.2-linux2-x86/lib/python/OFS/DTMLDocument.py, Itai> line 177, in __call__ (Object: index_html) File Itai> /opt/Zope-2.2.2-linux2-x86/lib/python/DocumentTemplate/DT_String.py, Itai> line 528, in __call__ (Object: index_html) File Itai> /opt/Zope-2.2.2-linux2-x86/lib/python/DocumentTemplate/DT_In.py, Itai> line 691, in renderwob (Object: Itai> defaultRack.getPersistentItemIDs()) File Itai> /opt/Zope-2.2.2-linux2-x86/lib/python/DocumentTemplate/DT_Let.py, Itai> line 147, in render (Object: currID="_['sequence-item']") Itai> File Itai> /opt/Zope-2.2.2-linux2-x86/lib/python/DocumentTemplate/DT_With.py, Itai> line 133, in render (Object: getItem(currID)) File Itai> /opt/Zope-2.2.2-linux2-x86/lib/python/DocumentTemplate/DT_Util.py, Itai> line 337, in eval (Object: getItem(currID)) (Info: currID) Itai> File , line 0, in ? File Itai> /opt/Zope/lib/python/Products/ZPatterns/Specialists.py, line Itai> 34, in getItem (Object: ProviderContainer) File Itai> /opt/Zope/lib/python/Products/ZPatterns/Rack.py, line 60, in Itai> getItem (Object: ProviderContainer) File Itai> /opt/Zope/lib/python/Products/ZPatterns/Rack.py, line 114, Itai> in retrieveItem (Object: ProviderContainer) File Itai> /opt/Zope-2.2.2-linux2-x86/lib/python/OFS/Uninstalled.py, Itai> line 110, in __getattr__ (Object: broken) AttributeError: Itai> (see above) -- Itai Tavor "Je sautille, donc je suis." Itai> C3Works [EMAIL PROTECTED] - Kermit the Frog Itai> "If you haven't got your health, you haven't got anything" Itai> ___ Zope-Dev Itai> maillist - [EMAIL PROTECTED] Itai> http://lists.zope.org/mailman/listinfo/zope-dev ** No cross Itai> posts or HTML encoding! ** (Related lists - Itai> http://lists.zope.org/mailman/listinfo/zope-announce Itai> http://lists.zope.org/mailman/listinfo/zope ) ___ Zope-Dev maillist - [EMAIL PROTECTED] http://lists.zope.org/mailman/listinfo/zope-dev ** No cross posts or HTML encoding! ** (Related lists - http://lists.zope.org/mailman/listinfo/zope-announce http://lists.zope.org/mailman/listinfo/zope )
Re: [Zope-dev] ZPatterns design questions
Ack.. sorry... I was making little changes last night to make sure the ZClass was completely consistent with my explaination, and to make sure I could start 'from scratch'. I created a 'new' ZClass, and a 'new' rack. This confused the 'old' Rack. (I didn't update the ToDoManager.zexp, so if you downloaded the new Product, but the old ToDoManager you got the _setRack error. Anyway... I've now uploaded both the ToDoManager and the ToDoProducts at 0.0.2. I also changed the index_html of the ToDoManager to illustrated the getPersistentItemIds() issue I wrote about earlier good luck! -steve here's the new index_html: NameDescriptionDoerDone? Done! Sorry.. no "to do"s! ___ Zope-Dev maillist - [EMAIL PROTECTED] http://lists.zope.org/mailman/listinfo/zope-dev ** No cross posts or HTML encoding! ** (Related lists - http://lists.zope.org/mailman/listinfo/zope-announce http://lists.zope.org/mailman/listinfo/zope )
Re: [Zope-dev] cookies & ie5.5 win
On Thu, 5 Oct 2000, Chris Withers wrote: > Sebastian Luehnsdorf wrote: > > i'm having a strange problem with cookie based user authentication with > > ms internet explorer 5.5 on windows. it seems that the browser (but only > > this version and only under windows!) seems to "forget" its cookies, which > > results in an immediate logout. does anybody have similar experiences or a > > even solution? > > I've had this problem occasionally with other versions of IE. > I wonder whether you're setting the path on cookies correctly? > > That's all I can think of... > > Anyone else noticed this? > > cheers, > > Chris > well, i am using the following bit of code: RESPONSE.setCookie('__ac', token, path='/', expires='0') where token is a valid authentication id (i could check that). when i tried to set the domain to anything (empty string, hostname with & without port, ip address with & without port), all browsers had problems with the authentication... ciao, basti -- sebastian f. luehnsdorf beehive elektronische medien gmbh -- http://basti.beehive.de http://www.beehive.de mailto:[EMAIL PROTECTED] mailto:[EMAIL PROTECTED] http://www.zope.de fon: (+49 30) 84 78 20 http://www.i-surf.defax: (+49 30) 84 78 22 99 ___ Zope-Dev maillist - [EMAIL PROTECTED] http://lists.zope.org/mailman/listinfo/zope-dev ** No cross posts or HTML encoding! ** (Related lists - http://lists.zope.org/mailman/listinfo/zope-announce http://lists.zope.org/mailman/listinfo/zope )
[Zope-dev] Re: Zope static html
Yours is the third enquiry I've had about this in the past week !!! You can do this in a very general way using wget which is freely available and very configurable. Another option is to look at ZMirror in http://www.zope.org/Members/rossl/ZMirror - not because it will solve all your problems, but because the code is certainly a useful starting point. Turns out that it's a non-trivial task to do this in completely general way. I now tend to write very specific external methods based on the code in zmirror. good luck. Vijay Pawar wrote: > > Hi, > I saw your discussion article enclosed below: > Do you have a Zope external method/ Python code to create static html from > Zope. Any help is much appreciated. > > Thanks, > Vijay > > [Zope] ANN: Experimental zope->static html mirror external method > Dr. Ross Lazarus [EMAIL PROTECTED] > Sat, 05 Jun 1999 22:35:04 +1000 > > Previous message: [Zope] Changing default new document contents > Next message: [Zope] A single value from SQL > Messages sorted by: [ date ] [ thread ] [ subject ] [ author ] > > > > Anyone needing to write a static html rendition of a zope site to a file > system is welcome to try a very rough pre-alpha external method. > > fileme.py and fileme.txt are available via anonymous ftp at > rossl.gmp.usyd.edu.au - or ftp://rossl.gmp.usyd.edu.au/ if you need to > use a web browser. > > A more stable product will eventually appear. Please only try this > release if you like to live dangerouslywget is safer and can > probably do a better job. > > Bug reports, fixes and constructive comments to [EMAIL PROTECTED] > ___ Zope-Dev maillist - [EMAIL PROTECTED] http://lists.zope.org/mailman/listinfo/zope-dev ** No cross posts or HTML encoding! ** (Related lists - http://lists.zope.org/mailman/listinfo/zope-announce http://lists.zope.org/mailman/listinfo/zope )
Re: [Zope-dev] Re: Zope static html
I slightly remember suggesting wget to someone about 10 minutes ago. Good choice. Knight [EMAIL PROTECTED] On Fri, 6 Oct 2000, ross wrote: > Yours is the third enquiry I've had about this in the past week !!! > > You can do this in a very general way using wget which is freely > available and very configurable. > > Another option is to look at ZMirror in > http://www.zope.org/Members/rossl/ZMirror - not because it will solve > all your problems, but because the code is certainly a useful starting > point. > > Turns out that it's a non-trivial task to do this in completely general > way. > > I now tend to write very specific external methods based on the code in > zmirror. > > good luck. > > Vijay Pawar wrote: > > > > Hi, > > I saw your discussion article enclosed below: > > Do you have a Zope external method/ Python code to create static html from > > Zope. Any help is much appreciated. > > > > Thanks, > > Vijay > > > > [Zope] ANN: Experimental zope->static html mirror external method > > Dr. Ross Lazarus [EMAIL PROTECTED] > > Sat, 05 Jun 1999 22:35:04 +1000 > > > > Previous message: [Zope] Changing default new document contents > > Next message: [Zope] A single value from SQL > > Messages sorted by: [ date ] [ thread ] [ subject ] [ author ] > > > > > > > > Anyone needing to write a static html rendition of a zope site to a file > > system is welcome to try a very rough pre-alpha external method. > > > > fileme.py and fileme.txt are available via anonymous ftp at > > rossl.gmp.usyd.edu.au - or ftp://rossl.gmp.usyd.edu.au/ if you need to > > use a web browser. > > > > A more stable product will eventually appear. Please only try this > > release if you like to live dangerouslywget is safer and can > > probably do a better job. > > > > Bug reports, fixes and constructive comments to [EMAIL PROTECTED] > > > > ___ > Zope-Dev maillist - [EMAIL PROTECTED] > http://lists.zope.org/mailman/listinfo/zope-dev > ** No cross posts or HTML encoding! ** > (Related lists - > http://lists.zope.org/mailman/listinfo/zope-announce > http://lists.zope.org/mailman/listinfo/zope ) > > ___ Zope-Dev maillist - [EMAIL PROTECTED] http://lists.zope.org/mailman/listinfo/zope-dev ** No cross posts or HTML encoding! ** (Related lists - http://lists.zope.org/mailman/listinfo/zope-announce http://lists.zope.org/mailman/listinfo/zope )
[Zope-dev] Re: [Zope] Re: [Zope-dev] cookies & ie5.5 win
wow, that's a relly ugly bug! did you find a solution? is there a way to set the timestamp "manually" for a cookie? ciao, basti On Fri, 6 Oct 2000, Terry Kerr wrote: > I had a problem like this once, and worked out that it was because the system > time was incorrect in IE somehow. The time that windows was displaying was > correct, but that had been manually changed to take in to account day light > savings which started early in Australia this year due to the olympics. But for > some reason internallyIE was using the wrong time, so my cookies were expiring > as soon as they were set! > > Netscape on windows didn't have the same problem...and obviously netscape on > linux didn't have the problem. > > terry > > > Chris Withers wrote: > > > Sebastian Luehnsdorf wrote: > > > i'm having a strange problem with cookie based user authentication with > > > ms internet explorer 5.5 on windows. it seems that the browser (but only > > > this version and only under windows!) seems to "forget" its cookies, which > > > results in an immediate logout. does anybody have similar experiences or a > > > even solution? > > > > I've had this problem occasionally with other versions of IE. > > I wonder whether you're setting the path on cookies correctly? > > > > That's all I can think of... > > > > Anyone else noticed this? > > > > cheers, > > > > Chris > > > > ___ > > Zope maillist - [EMAIL PROTECTED] > > http://lists.zope.org/mailman/listinfo/zope > > ** No cross posts or HTML encoding! ** > > (Related lists - > > http://lists.zope.org/mailman/listinfo/zope-announce > > http://lists.zope.org/mailman/listinfo/zope-dev ) > > -- > - > Terry Kerr ([EMAIL PROTECTED]) > Adroit Internet Solutions > http://www.adroit.net/ > 03 9563 4461 > 0414 708 124 > > -- sebastian f. luehnsdorf beehive elektronische medien gmbh -- http://basti.beehive.de http://www.beehive.de mailto:[EMAIL PROTECTED] mailto:[EMAIL PROTECTED] http://www.zope.de fon: (+49 30) 84 78 20 http://www.i-surf.defax: (+49 30) 84 78 22 99 ___ Zope-Dev maillist - [EMAIL PROTECTED] http://lists.zope.org/mailman/listinfo/zope-dev ** No cross posts or HTML encoding! ** (Related lists - http://lists.zope.org/mailman/listinfo/zope-announce http://lists.zope.org/mailman/listinfo/zope )
[Zope-dev] RE: [Zope-ZEO] How to get rid of the cPickle and asyncore dependency hasslesncy hassles
[cc to zope-dev.] > > Ive been using Zope only with Python 2.0 recently. > > That's great to hear. I'm frankly a bit surprised that > this works. 2.0 is a suprisingly conservative upgrade from 1.5.2 > Did you have to make many changes to Zope? All my critical patches are already merged into the Zope cvs, or the Python cvs ;-) There are also some non-critical bug fixes related to Unicode awareness, bundled up with my other Unicode-In-Zope patches at http://www.zope.org/Members/htrd/wstring. These mostly relate to the fact that Zope does not defend against objects that raise exceptions when converted to a string using str() - and Unicode objects do this frequently. (At the moment these extra patches are not 1.5.2 compatible... Ill work on this if DC feel the need for a transition period during which Zope supports both 1.5.2 and 2.0.) > I heard that ExtensionClass didn't work with Python 2.0. It looks like a little work is needed to support 2.0's garbage collection of cyclic trash - but thats not enabled by default. Apart from that, everything works very well. (In some ways, better than 1.5.2) ___ Zope-Dev maillist - [EMAIL PROTECTED] http://lists.zope.org/mailman/listinfo/zope-dev ** No cross posts or HTML encoding! ** (Related lists - http://lists.zope.org/mailman/listinfo/zope-announce http://lists.zope.org/mailman/listinfo/zope )
[Zope-dev] Re: [Zope-ZEO] How to get rid of the cPickle and asyncore dependencyhassleshassles
Toby Dickenson wrote: > > [cc to zope-dev.] > > > > Ive been using Zope only with Python 2.0 recently. > > > > That's great to hear. I'm frankly a bit surprised that > > this works. > > 2.0 is a suprisingly conservative upgrade from 1.5.2 > > > Did you have to make many changes to Zope? > > All my critical patches are already merged into the Zope cvs, or the Python > cvs ;-) > > There are also some non-critical bug fixes related to Unicode awareness, > bundled up with my other Unicode-In-Zope patches at > http://www.zope.org/Members/htrd/wstring. These mostly relate to the fact > that Zope does not defend against objects that raise exceptions when > converted to a string using str() - and Unicode objects do this frequently. > > (At the moment these extra patches are not 1.5.2 compatible... Ill work on > this if DC feel the need for a transition period during which Zope supports > both 1.5.2 and 2.0.) > > > I heard that ExtensionClass didn't work with Python 2.0. > > It looks like a little work is needed to support 2.0's garbage collection of > cyclic trash - but thats not enabled by default. Apart from that, everything > works very well. (In some ways, better than 1.5.2) Wow! That's swesome. I'll get back to you on some of this. Jim -- Jim Fulton mailto:[EMAIL PROTECTED] Python Powered! Technical Director (888) 344-4332http://www.python.org Digital Creationshttp://www.digicool.com http://www.zope.org Under US Code Title 47, Sec.227(b)(1)(C), Sec.227(a)(2)(B) This email address may not be added to any commercial mail list with out my permission. Violation of my privacy with advertising or SPAM will result in a suit for a MINIMUM of $500 damages/incident, $1500 for repeats. ___ Zope-Dev maillist - [EMAIL PROTECTED] http://lists.zope.org/mailman/listinfo/zope-dev ** No cross posts or HTML encoding! ** (Related lists - http://lists.zope.org/mailman/listinfo/zope-announce http://lists.zope.org/mailman/listinfo/zope )
[Zope-dev] Re: [Zope-ZEO] How to get rid of the cPickle and asyncore depende ncy hassles
On Fri, 6 Oct 2000 15:06:59 +0100 , Toby Dickenson <[EMAIL PROTECTED]> wrote: >All my critical patches are already merged into the Zope cvs Arh no - I lied. http://classic.zope.org:8080/Collector/1442/view is still outstanding. Not strictly a 2.0 bug; it applies to 1.5.2 too, but the Py_TRACE_REFS debugging option is more likely to be turned on by default in 2.0 Toby Dickenson [EMAIL PROTECTED] ___ Zope-Dev maillist - [EMAIL PROTECTED] http://lists.zope.org/mailman/listinfo/zope-dev ** No cross posts or HTML encoding! ** (Related lists - http://lists.zope.org/mailman/listinfo/zope-announce http://lists.zope.org/mailman/listinfo/zope )
[Zope-dev] Re: Python 2.0; Garbage Collection
[Toby] > It looks like a little work is needed to support 2.0's garbage collection of > cyclic trash [Neil] > Which 2.0 are you using? I was basing my comments on my last attempt in mid July. Ive just tried enabling WITH_CYCLE_GC again (and with the patch below) and it does all seem to be working happily. Ill make further tests next week. Index: z2.py === RCS file: /home/cvs/development/external/Zope2/z2.py,v retrieving revision 1.4 retrieving revision 1.7 diff -c -4 -r1.4 -r1.7 *** *** 430,443 if v=='-': v='' DNS_IP=v elif o=='-u': UID=v elif o=='-D': os.environ['Z_DEBUG_MODE']='1' DEBUG=1 elif o=='-S': sys.ZMANAGED=1 elif o=='-X': --- 429,448 if v=='-': v='' DNS_IP=v elif o=='-u': UID=v elif o=='-D': + try: + import gc + except ImportError: + pass + else: + gc.set_debug(gc.DEBUG_LEAK) os.environ['Z_DEBUG_MODE']='1' DEBUG=1 elif o=='-S': sys.ZMANAGED=1 elif o=='-X': Toby Dickenson [EMAIL PROTECTED] ___ Zope-Dev maillist - [EMAIL PROTECTED] http://lists.zope.org/mailman/listinfo/zope-dev ** No cross posts or HTML encoding! ** (Related lists - http://lists.zope.org/mailman/listinfo/zope-announce http://lists.zope.org/mailman/listinfo/zope )
Re: [Zope-dev] LoginManager ownership bug!
In article <[EMAIL PROTECTED]>, Jonas Juselius <[EMAIL PROTECTED]> wrote: > The problem has to do with the ownership of the acl_users. When the > LoginManager (acl_users) is created it sets the _owner attribute to > UnownableOwner. This is fine, for if the acl_users folder is owned it results ... > The problem is that the acl_users folder becomes _owned_ (by whom I don't > know) every time Zope is restarted, or when any method is edited or added in I think this is due to Shane's fix for allowing LM's as non-top-level acl_users. I had it originally so that _owner was a class attribute, which works fine. With the change, it was added as an instance attribute. Now, UnownableOwner is just an empty list, []. Zope checks for UnownableOwner using an identity check, that is in python: "_owner is UnownableOwner". When the LM is pickled to ZODB and reloaded, _owner is still an empty list, but it's not *the* empty list. That is, in python terms: it's still *equal* to UO, but it isn't "is" UO. We could go back to just having it as a class attribute, but then that breaks when adding a LM anywhere other than the top folder, because Zope wants to delete the _owner from it. > Another thing which I have tried to do, is to add support for local roles to > the LoginManager. At first it looked rather simple, but then I realized that > it wasn't really _that_ simple, and dropped it because I don't have time... It > would however be nice to have local roles support in the LoginManager, as it > would make it more complete. LM supports local roles fine. Unfortunately, the Zope's treatment of them doesn't scale (a listview just doesn't work for 1500 users, and other parts of the machinery want to do things like "Get me a list of all local roles for all users" just so that it can see if *one* user has a specific role or set of roles.) We've submitted patches for some things, but not gotten much interest from DC. ___ Zope-Dev maillist - [EMAIL PROTECTED] http://lists.zope.org/mailman/listinfo/zope-dev ** No cross posts or HTML encoding! ** (Related lists - http://lists.zope.org/mailman/listinfo/zope-announce http://lists.zope.org/mailman/listinfo/zope )
[Zope-dev] ZSQL returns integer only
The Oracle8i recordset I'm retrieving includes a few columns which are NUMBER(10,0) format which are milliseconds. I would like to divide each by 1000 and use the ROUND function to return a result with one decimal place, e.g. ROUND(column1/1000, 1) returns 3.1 where column1 == 3080. This works as expected in SQL*Plus. It returns the results as a number formated to one decimal place. ZSQL however returns only an integer. Any suggestions on how to get the decimal places to show? -Walter ___ Zope-Dev maillist - [EMAIL PROTECTED] http://lists.zope.org/mailman/listinfo/zope-dev ** No cross posts or HTML encoding! ** (Related lists - http://lists.zope.org/mailman/listinfo/zope-announce http://lists.zope.org/mailman/listinfo/zope )
Re: [Zope-dev] LoginManager ownership bug!
At 04:01 PM 10/6/00 +, Ty Sarna wrote: > >I think this is due to Shane's fix for allowing LM's as non-top-level >acl_users. I had it originally so that _owner was a class attribute, >which works fine. With the change, it was added as an instance >attribute. Now, UnownableOwner is just an empty list, []. Zope checks >for UnownableOwner using an identity check, that is in python: "_owner is >UnownableOwner". When the LM is pickled to ZODB and reloaded, _owner is >still an empty list, but it's not *the* empty list. That is, in python >terms: it's still *equal* to UO, but it isn't "is" UO. > >We could go back to just having it as a class attribute, but then that >breaks when adding a LM anywhere other than the top folder, because Zope >wants to delete the _owner from it. Actually, Ty, AFAIK this is now fixed in Zope 2.2.x; IIRC Brian made some changes to the ownership machinery to deal with _owner being a class variable. We should probably put out a new LM release to go with ZPatterns 0.4.3. ___ Zope-Dev maillist - [EMAIL PROTECTED] http://lists.zope.org/mailman/listinfo/zope-dev ** No cross posts or HTML encoding! ** (Related lists - http://lists.zope.org/mailman/listinfo/zope-announce http://lists.zope.org/mailman/listinfo/zope )
Re: [Zope-dev] LoginManager ownership bug!
Thanks! I actually tried to make _owner a class attrib, but then I tried to add a LM to a sub-folder ;-) It didn't work out... Would it be an ugly solution to check whether the LM _is_ top-level, and if it is, make _owner a class attrib? Would it work? Or is this solution only curing the symptoms, while the patient is dying of cancer? I also realized that LM:s support local roles, and I had it pointed out to me that the reason for the default behaviour, is the scaling of Zope... I now have a different scheme in mind... Take care, .jonas. On Fri, Oct 06, 2000 at 04:01:01PM +, Ty Sarna wrote: > In article <[EMAIL PROTECTED]>, > Jonas Juselius <[EMAIL PROTECTED]> wrote: > > The problem has to do with the ownership of the acl_users. When the > > LoginManager (acl_users) is created it sets the _owner attribute to > > UnownableOwner. This is fine, for if the acl_users folder is owned it results > ... > > The problem is that the acl_users folder becomes _owned_ (by whom I don't > > know) every time Zope is restarted, or when any method is edited or added in > > I think this is due to Shane's fix for allowing LM's as non-top-level > acl_users. I had it originally so that _owner was a class attribute, > which works fine. With the change, it was added as an instance > attribute. Now, UnownableOwner is just an empty list, []. Zope checks > for UnownableOwner using an identity check, that is in python: "_owner is > UnownableOwner". When the LM is pickled to ZODB and reloaded, _owner is > still an empty list, but it's not *the* empty list. That is, in python > terms: it's still *equal* to UO, but it isn't "is" UO. > > We could go back to just having it as a class attribute, but then that > breaks when adding a LM anywhere other than the top folder, because Zope > wants to delete the _owner from it. > > > Another thing which I have tried to do, is to add support for local roles to > > the LoginManager. At first it looked rather simple, but then I realized that > > it wasn't really _that_ simple, and dropped it because I don't have time... It > > would however be nice to have local roles support in the LoginManager, as it > > would make it more complete. > > LM supports local roles fine. Unfortunately, the Zope's treatment of > them doesn't scale (a listview just doesn't work for 1500 users, and > other parts of the machinery want to do things like "Get me a list of > all local roles for all users" just so that it can see if *one* user has a > specific role or set of roles.) We've submitted patches for some things, > but not gotten much interest from DC. > > ___ > Zope-Dev maillist - [EMAIL PROTECTED] > http://lists.zope.org/mailman/listinfo/zope-dev > ** No cross posts or HTML encoding! ** > (Related lists - > http://lists.zope.org/mailman/listinfo/zope-announce > http://lists.zope.org/mailman/listinfo/zope ) -- And what is good, Phaedrus, And what is not--- Need we ask anyone to tell us these things? [ PGP public key: http://www.iki.fi/jonas/pubkey.asc ] ___ Zope-Dev maillist - [EMAIL PROTECTED] http://lists.zope.org/mailman/listinfo/zope-dev ** No cross posts or HTML encoding! ** (Related lists - http://lists.zope.org/mailman/listinfo/zope-announce http://lists.zope.org/mailman/listinfo/zope )
[Zope-dev] Is this a ZClass/Propertysheet bug?
If I delete a property from a ZClass, the property still exists for each instance of the class (I can do a dtml-var to show it), but it doesn't show up on the management screens for either the class or the instance. I cannot add it back with the Properties tab - zope tells me that it is in use. New instances of the class do not have the removed property. I'm using Zope 2.2.2 on Linux. Is this behavior correct? -Paul ___ Zope-Dev maillist - [EMAIL PROTECTED] http://lists.zope.org/mailman/listinfo/zope-dev ** No cross posts or HTML encoding! ** (Related lists - http://lists.zope.org/mailman/listinfo/zope-announce http://lists.zope.org/mailman/listinfo/zope )
Re: [Zope-dev] ZSQL returns integer only
On 10/6/00 12:19 PM, "Walter Miller" <[EMAIL PROTECTED]> wrote: > The Oracle8i recordset I'm retrieving includes a few columns which are > NUMBER(10,0) format which are milliseconds. I would like to divide each by > 1000 and use the ROUND function to return a result with one decimal place, > e.g. ROUND(column1/1000, 1) returns 3.1 where column1 == 3080. > > This works as expected in SQL*Plus. It returns the results as a number > formated to one decimal place. ZSQL however returns only an integer. > > Any suggestions on how to get the decimal places to show? Please make sure you're using the latest Oracle DA, as there was a bug in handling of things that oracle returns as NUMBER(0,0) (which is basically a floating point, but we interpreted as a numberb ecause the scale was 0). Chris -- | Christopher Petrilli Digital Creations | [EMAIL PROTECTED]Where Zope comes from ___ Zope-Dev maillist - [EMAIL PROTECTED] http://lists.zope.org/mailman/listinfo/zope-dev ** No cross posts or HTML encoding! ** (Related lists - http://lists.zope.org/mailman/listinfo/zope-announce http://lists.zope.org/mailman/listinfo/zope )
[Zope-dev] Locking (supercedes original writelocking proposal)
This supercedes the original WriteLocking proposal which was initially just to cover WebDAV's current write locking ability. http://dev.zope.org/Wikis/DevSite/Proposals/WriteLocking -- Jeffrey P Shell, [EMAIL PROTECTED] http://www.zope.org/ .oO ___ Zope-Dev maillist - [EMAIL PROTECTED] http://lists.zope.org/mailman/listinfo/zope-dev ** No cross posts or HTML encoding! ** (Related lists - http://lists.zope.org/mailman/listinfo/zope-announce http://lists.zope.org/mailman/listinfo/zope )
Re: [Zope-dev] Is this a ZClass/Propertysheet bug?
> Is this behavior correct? See http://www.zope.org/Members/paulabrams/howto_deleteundeadzclassprops for help. It is not a bug per se, Python (upon which ZOPE is based) is built this way, i.e. if you create a class with certain attributes, every instance will keep those attributes, even if they are deleted from the class itself, and new instances that are instansiated from the now modified class will not. -Morten ___ Zope-Dev maillist - [EMAIL PROTECTED] http://lists.zope.org/mailman/listinfo/zope-dev ** No cross posts or HTML encoding! ** (Related lists - http://lists.zope.org/mailman/listinfo/zope-announce http://lists.zope.org/mailman/listinfo/zope )
Re: [Zope-dev] Is this a ZClass/Propertysheet bug?
On Fri, 6 Oct 2000, Morten W. Petersen wrote: > It is not a bug per se, Python (upon which ZOPE is based) is built this > way, i.e. if you create a class with certain attributes, every instance > will keep those attributes, even if they are deleted from the class > itself, and new instances that are instansiated from the now modified > class will not. Context got mixed up, please disregard. -Morten ___ Zope-Dev maillist - [EMAIL PROTECTED] http://lists.zope.org/mailman/listinfo/zope-dev ** No cross posts or HTML encoding! ** (Related lists - http://lists.zope.org/mailman/listinfo/zope-announce http://lists.zope.org/mailman/listinfo/zope )
Re: [Zope-dev] ZPatterns design questions
Steve Spicklemire wrote: > > Ack.. sorry... I was making little changes last night to make sure > the ZClass was completely consistent with my explaination, and to > make sure I could start 'from scratch'. Ok, I just got through stepping through the walkthrough. Thanks! That *was* a really simple example. Perfect! I had a few comments: - You skipped over creating the Product in the Products folder. - Propertysheets: You don't expressly say that Shared needs to be a 'Common Instance Property Sheet'. - ToDoManager: I was initially confused as to where this needed to be created. I tried placing it directly in the Product as well as in the ZCLass before I tried placing it in a normal folder. Ok, moving forward, I had some questions about this approach to building applications: - What do I need to do to let users add ToDoManagers to their own folders without creating them from scratch? In other words, How do I turn ToDoManager into a product? - The term 'Specialist' implies (at least to me) that this object is overiding/replacing a 'Generalist' somewhere, but this does not seem to be the case here. Am I missing something? - I'm trying to reconcile PJE's methodology of Domain Logic, Presentation Logic, Data Management Implementation Logic, and User Interface Implementation Logic. Can you (or Phillip) label each of the DTML methods as to which category they fall into? And state why, even if it seems obvious? - How does this product (simple though it is) exemplify the RIPP approach? In other words, assume I'm asking annoying whiny two-year-old 'why?' questions after every declarative statement in the tutorial. Anyway, I'll try to synthesize all of the replies I get (if any) into a beginners 'Zen of ZPatterns' tutorial. Thanks again for such a simple example! Michael Bernstein. ___ Zope-Dev maillist - [EMAIL PROTECTED] http://lists.zope.org/mailman/listinfo/zope-dev ** No cross posts or HTML encoding! ** (Related lists - http://lists.zope.org/mailman/listinfo/zope-announce http://lists.zope.org/mailman/listinfo/zope )
[Zope-dev] SybaseDAv2
(anyone else using the SybaseDAv2 Database Connector?) I had to make a couple of changes to the source for SybaseDAv2 for Solaris and will probably report them, but I was wondering exactly how to make a database connection with SybaseDAv2? How is the datasource specified, etc.? Is there any documentation on this? Thanks ___ Zope-Dev maillist - [EMAIL PROTECTED] http://lists.zope.org/mailman/listinfo/zope-dev ** No cross posts or HTML encoding! ** (Related lists - http://lists.zope.org/mailman/listinfo/zope-announce http://lists.zope.org/mailman/listinfo/zope )
Re: [Zope-dev] ZPatterns design questions
Hi Michael, > "Michael" == Michael Bernstein <[EMAIL PROTECTED]> writes: Michael> - You skipped over creating the Product in the Products Michael> folder. Ooops! Sorry... I guess I assumed that the reader would be familiar with ZClasses etc this should probably be stated up front, with a reference to ZClass docs.. Michael> - Propertysheets: You don't expressly say that Shared Michael> needs to be a 'Common Instance Property Sheet'. I don't think it does... it could probably be either depending on how you want to manage it in fact, for this example, all the properties could really be in one propertysheet, and it really wouldn't change much.. it was really a 'conceptual difference' between those properties that were meant to be class 'globals' and those intended to be different in each instance. Michael> - ToDoManager: I was initially confused as to where this Michael> needed to be created. I tried placing it directly in the Michael> Product as well as in the ZCLass before I tried placing Michael> it in a normal folder. Sorry.. any normal folder works.. Michael> Ok, moving forward, I had some questions about this Michael> approach to building applications: Michael> - What do I need to do to let users add ToDoManagers to Michael> their own folders without creating them from scratch? In Michael> other words, How do I turn ToDoManager into a product? Hmmm.. well.. I suppose you could keep ToDoManager.zexp in the import folder and programmatically 'import' them. ;-) Seriously I've never hit that... I do programmatically create specialist in my Python Product.. but it's not TTW. You might be able to keep a 'template' Specialist in the ZClass and then make a method to 'copy' and 'paste' it. Michael> - The term 'Specialist' implies (at least to me) that Michael> this object is overiding/replacing a 'Generalist' Michael> somewhere, but this does not seem to be the case here. Am Michael> I missing something? No. Specialist just means he specializes in handling a class of objects for an application Michael> - I'm trying to reconcile PJE's methodology of Domain Michael> Logic, Presentation Logic, Data Management Implementation Michael> Logic, and User Interface Implementation Logic. Can you Michael> (or Phillip) label each of the DTML methods as to which Michael> category they fall into? And state why, even if it seems Michael> obvious? I'll have to get back to you on that... no time now. Michael> - How does this product (simple though it is) exemplify Michael> the RIPP approach? In other words, assume I'm asking Michael> annoying whiny two-year-old 'why?' questions after every Michael> declarative statement in the tutorial. Good question.. I dunno. ;-) Maybe it doesn't. Michael> Anyway, I'll try to synthesize all of the replies I get Michael> (if any) into a beginners 'Zen of ZPatterns' tutorial. Michael> Thanks again for such a simple example! No trouble. 'Simple' is my middle name. ;-) -steve Michael> Michael Bernstein. ___ Zope-Dev maillist - [EMAIL PROTECTED] http://lists.zope.org/mailman/listinfo/zope-dev ** No cross posts or HTML encoding! ** (Related lists - http://lists.zope.org/mailman/listinfo/zope-announce http://lists.zope.org/mailman/listinfo/zope )
Re: [Zope-dev] Re: Zpatterns design questions
At 10:09 AM 10/5/00 -0700, James Johnson wrote: >I heard that it's possible to have a dtml only zpatterns based >example. I would like something like >Product > specialist >addObj > Zclass >index_html >readObj > Factory > Permission >Would this be a correct way to proceed? > Yes, except that the Factory and Permission would not be required, and the Specialist would belong in a folder, not in the Product. ___ Zope-Dev maillist - [EMAIL PROTECTED] http://lists.zope.org/mailman/listinfo/zope-dev ** No cross posts or HTML encoding! ** (Related lists - http://lists.zope.org/mailman/listinfo/zope-announce http://lists.zope.org/mailman/listinfo/zope )
Re: [Zope-dev] ZPatterns design questions
At 07:59 AM 10/5/00 -0700, Michael Bernstein wrote: >"Phillip J. Eby" wrote: >> >> Domain logic: methods which implement the basic behavior of an object, by >> manipulating its attributes and by calling methods on itself or other >> objects. (Including delegation to a Specialist, its own or another.) >> >> Presentation logic: "view" methods which implement user interface by >> displaying object attributes and/or the results of either presentation or >> domain methods, and "controller/view" methods which call domain logic >> methods and display results. >> >> Implementation logic: All of the code and objects contained in a Specialist >> which map between the domain model of an object and its physical storage >> implementation(s). This category can be further subdivided into data >> management implementation, and UI implementation. >> >> DM implementation deals with storing and retrieving objects and associated >> data, and firing off of implementation rules (e.g. ensure that all objects >> which meet such-and-such criteria are cataloged in catalog Foo). >> >> UI implementation deals with providing snippets suitable for use by >> collaborating classes and/or specialists. For example, [snip] > >How (and why) do you distinguish between UI implementation >and presentation logic? Presentation logic lives with an object's class, and deals with what that object knows about presenting itself. UI implementation is "glue" presentation that lives in a Specialist for use by any object that needs to present UI related to objects of the kind the Specialist handles. The terms used here are "official" terminology with precise definitions, btw. I am just trying to answer your questions as best I know how. An example of presentation logic would be a method which displays a form to perform some action on the object. E.g., let's say we have a "Task" object with an "Assign To" form. Tasks are assigned to Assignees, but in a given application, there could be many possible kinds of Assignees and the means of selecting an Assignee is context-dependent. Thus, a Task's presentation logic cannot implement such a thing directly; it must ask the Assignees specialist for a code snippet (UI implementation) that displays an assignee selection sub-form within its "Assign To" form. As a counter-example to the above, consider Zope's local roles UI. When you assign local roles, Zope goes to the specialist "acl_users" and asks it for all possible users, then displays them in a dropdown list. While we could do the same thing in our Task/Assignees example (i.e. have Task just display a dropdown list of all Assignees), this is bad because it does not scale well. What if our Task object is used for a company intranet where there are 10,000 employees? What if assignees can be either employees or outside vendors, and they are looked up differently? The Assignees specialist is responsible for providing an appropriate UI implementation (hence the name) for this operation. It could provide a dropdown list, a type-in box with a button to pop up a search window that lets you search the employee directory, or any number of other possible implementations that would get the necessary data back to the assignment method once the form was submitted. We could include a simple implementation with our task management framework, and the application integrator would override it if needed for their situation. This is what UI implementation logic is for, and it's an important part of the rationale for the existence of Specialists (formerly known as Implementors). >> Our current practice is to place both domain and presentation logic in >> ZClasses, [snip] > >Do domain and presentation logic methods go into the *same* >ZClass, or separate ones (I realize that this may be a >stupid question)? Same one. We assume that it is more useful/important for a framework to offer ready-to-use classes than lots of mixins. >> dropping down to ExternalMethods or Python bases for the ZClasses >> when domain logic requires things you can't do in DTML or PythonMethods. >> Domain and presentation logic are kept to seperate methods, so that domain >> logic methods can be re-used for XML-RPC or other programmatic interfaces. >> Presentation is usually done in a flexible way, relying upon UI >> implementation hooks where sensible. (Since objects under a specialist >> acquire from the specialist, it's easy to hook to a specialist-level >> utility method.) > >I understood what you were saying until the parentheses. >Could you repeat that part in a different way? Objects retrieved from a Specialist (in general) have the Specialist as their aq_parent. This means that if an object wants to use UI implementation snippets from its own Specialist, it can do so without having to explicitly name the specialist. This is useful for two kinds of snippets: 1) lookup snippets as described earlier, and 2) configuration snippets, ala standard_html_header, which can be us
Re: [Zope-dev] Accessors for DataSkin attributes (was Re: [Zope-dev] Success!
At 02:24 PM 10/5/00 -0500, Steve Spicklemire wrote: > >You're not using propertysheet providers, but DataSkin propertysheets >'installed' in a ZClass that directly inherits from DataSkin. Your use >of the "Data Skin Attribute Property Sheets" is primarily to associate >permissions with groupings of attributes, and to simplify >establishment and management of those properties through the ZClass >administrative interface. As a bonus, you get 'free' methods needed to >adjust these attributes from DTML (i.e., manage_changeProperties) without >requiring custom PropertyHandlers. Yes. >I did notice that when I create a ZClass (in a completely different >project) that inherits from a Python Product (registered with >registerBaseClass) that inherits from DataSkin, I don't get the option >of a DataSkin propertysheet, in the 'common' container of the ZClass, >so there's probably some manual fiddling I need to do when I register >my ZClass base class that I'm not doing... A simple way to avoid this is to simply create the ZClass subclassed from DataSkin *and* your Python class. >I'm guessing that the code that defines the SkinZISS, SZHolder, and >_ZClass_for_DataSkin culminating in registerZClass perform the >necessary magic to make that happen Yes. If you want to make this work on a Python class, you need to do something like: class _ZClass_for_MyClass(_ZClass_for_DataSkin): _zclass_ = MyClass And then in your registration, call: context.registerZClass(_ZClass_for_MyClass) That should be it. >This is deep magic! Aye. Here there be dragons. :) Wait'll you see the magic I had to do in 0.4.3 to get ZClass PlugIns and PlugInContainers to work... >Sooo... if I want my DataSkin subclass to have the same ability >I'll need to do something similar? (just replace _zclass_ = DataSkin >with _zclass_ = MyDataSkinSubclass?) See above for the shortest way to do this. >Well.. my *new* strategy (I'm using this on EMarket) is to put all the >core logic in a Specialist subclass... and let my DataSkins be >ZClasses that are directly subclassed from __ZClass_for_DataSkin. This >has its own problems (I still have a hard time working in a >'specialist' on a method that is supposed to be acquired by a >DataSkin, and keeping track of who 'self' is and what properties I can >really get to etc...). Personally, I don't recommend this approach, even if you end up with a ZClass that doesn't do much besides have a propertysheet or two. >Why did I do all that? I am used to a development routine where I work >a while... in emacs.. then hit ctrl-c ctrl-c which 'runs' the current >module. With this setup, everything in Thing.py can work without >Zope. All my core logic can be tested and I can verify that it works >correctly *before* I layer all the ZClass stuff on top. (I know.. now >I guess I need to learn to use ZPublisher/Client.py ;->) Of course >this requires that my ZClasses are subclasses of my core logic base >class.. and I now understand why that is generally undesirable. (It >makes integrating frameworks later more difficult ) But there is a >clear advantage... I think that with the flexibility of Racks and >SkinScript you could probably even have the best of all possible >worlds... It is *not* undesirable to have ZClasses be subclasses of your core logic base class. Just make sure they *also* subclass DataSkin, or that you use the metaclass definition stuff above. You've actually got a pretty decent approach going there. One question, though. Why the derivation from Folder? ___ Zope-Dev maillist - [EMAIL PROTECTED] http://lists.zope.org/mailman/listinfo/zope-dev ** No cross posts or HTML encoding! ** (Related lists - http://lists.zope.org/mailman/listinfo/zope-announce http://lists.zope.org/mailman/listinfo/zope )
Re: [Zope-dev] ZPatterns design questions
At 03:44 PM 10/6/00 -0500, Michael Bernstein wrote: >Steve Spicklemire wrote: >> >> Ack.. sorry... I was making little changes last night to make sure >> the ZClass was completely consistent with my explaination, and to >> make sure I could start 'from scratch'. > >Ok, I just got through stepping through the walkthrough. Thanks! That >*was* a really simple example. Perfect! > >I had a few comments: > >- You skipped over creating the Product in the Products folder. Yep, gotta do that. >- Propertysheets: You don't expressly say that Shared needs to be a >'Common Instance Property Sheet'. Actually, if it's intended to be shared across all instances, there seems to me to be little reason to have it in the ZClass; you might as well define the properties as constants using SkinScript. However, if you want to have defaults that an application integrator will be able to override without actually subclassing, then you want Shared to be a DataSkin Property Sheet, so that they will have the option of overriding your defaults with SkinScript or another attribute provider. >- ToDoManager: I was initially confused as to where this needed to be >created. I tried placing it directly in the Product as well as in the >ZCLass before I tried placing it in a normal folder. Yes, Specialists go in the application space, as they are part of the application. A product developer may want to create one in the product, but only so that it can be copied into application space by a factory. Btw, in strict RIPP convention, ToDoManager would be named "ToDos", as the plural form of the role the objects play in the framework. >Ok, moving forward, I had some questions about this approach to building >applications: > >- What do I need to do to let users add ToDoManagers to their own >folders without creating them from scratch? In other words, How do I >turn ToDoManager into a product? You can put it in the product, then create two methods - a constructor form and a constructor method, along with a Permission. Last, create a Zope Factory that calls the constructor form. The constructor method would copy the specialist and paste it into the chosen destination. >- The term 'Specialist' implies (at least to me) that this object is >overiding/replacing a 'Generalist' somewhere, but this does not seem to >be the case here. Am I missing something? Specialist means "one who specializes", not "thing which is specialized". :) There are no Generalists, unless you consider the application/Zope site as a whole to be one. :) >- I'm trying to reconcile PJE's methodology of Domain Logic, >Presentation Logic, Data Management Implementation Logic, and User >Interface Implementation Logic. Can you (or Phillip) label each of the >DTML methods as to which category they fall into? And state why, even if >it seems obvious? In the ZClass: index_html - presentation, because it displays things the object knows editInstanceForm - presentation, because it is strictly display editInstance - primarily domain, but mixes some presentation in. If instead of displaying an OK button, it just did a redirect, I'd consider it a pure domain. Note, by the way, that it's not wrong to mix the two, it's just usually more reusable to keep presentation code out of domain methods if you want to be able to call them from code or XML-RPC and such. In the Specialist (btw, stric: index_html: UI implementation, because it implements a non-object specific UI (i.e. "display all to-do's"). newToDoForm: UI implementation, because it's a non-specific object UI. addNewToDo: DM implementation, polluted by a bit of UI. :) It implements the data management aspect of creating a new instance. It calls the Specialist's newItem() method, but it could have directly called a newItem() method on one of the Specialist's Racks, or done something else to create the instance. deleteInstances: DM implementation, again with a touch of UI. It implements the data management aspect of creating a new instance. Instead of doing manage_delete on each item, this could have been implemented as an SQLMethod that did a DELETE WHERE operation using the id's that were given (if the data store was an SQL database, of course). >- How does this product (simple though it is) exemplify the RIPP >approach? I'm not sure that you can say it *exemplifies* the RIPP approach, although it certainly goes along with that approach. My hesitation is mainly that it doesn't really show any of RIPP's major benefits, which are associated with framework re-use and integration. For that, you really need to have more than one kind of object, with some kind of collaboration taking place. ___ Zope-Dev maillist - [EMAIL PROTECTED] http://lists.zope.org/mailman/listinfo/zope-dev ** No cross posts or HTML encoding! ** (Related lists - http://lists.zope.org/mailman/listinfo/zope-announce http://lists.zope.org/mailman/listinfo/zope )
Re: [Zope-dev] ZPatterns design questions
> "pje" == Phillip J Eby <[EMAIL PROTECTED]> writes: >> - Propertysheets: You don't expressly say that Shared needs to >> be a 'Common Instance Property Sheet'. pje> Actually, if it's intended to be shared across all instances, pje> there seems to me to be little reason to have it in the pje> ZClass; you might as well define the properties as constants pje> using SkinScript. However, if you want to have defaults that pje> an application integrator will be able to override without pje> actually subclassing, then you want Shared to be a DataSkin pje> Property Sheet, so that they will have the option of pje> overriding your defaults with SkinScript or another attribute pje> provider. Yeah.. now that I think about it a little more clearly, it makes sense to define this in the Specialist itself. This way all the instances in a ToDoManager would share the same set of 'doers', but different ToDoManagers could keep their own custom set. >> - I'm trying to reconcile PJE's methodology of Domain Logic, >> Presentation Logic, Data Management Implementation Logic, and >> User Interface Implementation Logic. Can you (or Phillip) label >> each of the DTML methods as to which category they fall into? >> And state why, even if it seems obvious? pje> In the ZClass: pje> index_html - presentation, because it displays things the pje> object knows pje> editInstanceForm - presentation, because it is strictly pje> display pje> editInstance - primarily domain, but mixes some presentation pje> in. If instead of displaying an OK button, it just did a pje> redirect, I'd consider it a pure domain. Note, by the way, pje> that it's not wrong to mix the two, it's just usually more pje> reusable to keep presentation code out of domain methods if pje> you want to be able to call them from code or XML-RPC and pje> such. Good! This is the kind of feedback I need! So I can pass in a redirection URL so that the domain code can work in different environments easily. pje> In the Specialist (btw, stric: pje> index_html: UI implementation, because it implements a pje> non-object specific UI (i.e. "display all to-do's"). pje> newToDoForm: UI implementation, because it's a non-specific pje> object UI. pje> addNewToDo: DM implementation, polluted by a bit of UI. :) pje> It implements the data management aspect of creating a new pje> instance. It calls the Specialist's newItem() method, but it pje> could have directly called a newItem() method on one of the pje> Specialist's Racks, or done something else to create the pje> instance. pje> deleteInstances: DM implementation, again with a touch of UI. pje> It implements the data management aspect of creating a new pje> instance. Instead of doing manage_delete on each item, this pje> could have been implemented as an SQLMethod that did a DELETE pje> WHERE operation using the id's that were given (if the data pje> store was an SQL database, of course). OK.. I'll go back and try to 'clean out' the UI pollution to illustrate that separation better. >> - How does this product (simple though it is) exemplify the >> RIPP approach? pje> I'm not sure that you can say it *exemplifies* the RIPP pje> approach, although it certainly goes along with that pje> approach. My hesitation is mainly that it doesn't really pje> show any of RIPP's major benefits, which are associated with pje> framework re-use and integration. For that, you really need pje> to have more than one kind of object, with some kind of pje> collaboration taking place. Hmm.. can anyone thing of a good collaboration 'partner' for a simple ToDo list? If it's not too complex.. I'd be happy to add it. thanks, -steve P.S. my first alpha of EMarket based on ZPatterns is just about ready. I'm sure it's full of similar pollution. This would be a great place for a design review. ;-) ___ Zope-Dev maillist - [EMAIL PROTECTED] http://lists.zope.org/mailman/listinfo/zope-dev ** No cross posts or HTML encoding! ** (Related lists - http://lists.zope.org/mailman/listinfo/zope-announce http://lists.zope.org/mailman/listinfo/zope )
Re: [Zope-dev] Accessors for DataSkin attributes (was Re: [Zope-dev] Success!
> "pje" == Phillip J Eby <[EMAIL PROTECTED]> writes: pje> It is *not* undesirable to have ZClasses be subclasses of pje> your core logic base class. Just make sure they *also* pje> subclass DataSkin, or that you use the metaclass definition pje> stuff above. You've actually got a pretty decent approach pje> going there. Hmmm.. again, maybe I'm reading too much into the DropZone example, but I seem to recall there that subclassing was pretty much explicitly discouraged. Did I misinterpret that? ''' Notice that we do not subclass SkyDiver from a Customer class and a ResourceUser class. What we are doing is saying is that Customer is a role that a Party (person or organization) plays in an accounting system, and ResourceUser is a role that a Party plays in a resource scheduling system. SkyDiver, then should implement a Party interface, allowing it to be used as a Customer or ResourceUser. Thus, SkyDiver can be used by any framework that needs to collaborate with a Party object, although it may have a new role in which the party will be used. For example, if I later add a curriculum management system to cover my skydiver training courses, I will want SkyDiver to fill the Student role. ''' OK.. allow me to summarize my very latest thought. Subclassing is OK withing my own framework. It's OK to require users of my framework to create ZClasses that subclass from my core logic Python classes, and from DataSkin. If we need integration between frameworks, we can handle that in SkinScript to share attributes between Specialist, or anthing else that might be helpful in providing the needed information. Does that sound right? pje> One question, though. Why the derivation from Folder? Oh... this was a case where my object, in addition to 'simple' properties also needed to 'contain' other stuff (files, images and the like...) making it a subclass of folder just got me that ability for 'free'. I could also have used ObjectManager, but making it folder just reduces the amount of 'UI' effort needed for the management interface of the contained stuff. I could have just created a plain folder with the same 'id' as my DataSkin, and 'associated' they two, but it made some sort of sense to keep them all together. -steve ___ Zope-Dev maillist - [EMAIL PROTECTED] http://lists.zope.org/mailman/listinfo/zope-dev ** No cross posts or HTML encoding! ** (Related lists - http://lists.zope.org/mailman/listinfo/zope-announce http://lists.zope.org/mailman/listinfo/zope )
Re: [Zope-dev] LoginManager ownership bug!
Jonas Juselius wrote: > > Do you have any clue about the ownership bug in the LoginManager? I find it > quite strange that an unowned object becomes owned whenever Zope is restarted > (or when a method is added...). I suspect that the problem is within the > ZPatterns modules, since it handles the persistance of the LoginManager... > This is how the LoginManager is inited and ownership is set: No, sorry. What I did while hacking on LM was create it in a subfolder, mess with it until it worked right, then (as superuser) copy it, switch to the root folder, delete the acl_users folder there, and paste the LM (also named acl_users, of course). After that, it just worked, so I never encountered your particular problem. Michael Bernstein. ___ Zope-Dev maillist - [EMAIL PROTECTED] http://lists.zope.org/mailman/listinfo/zope-dev ** No cross posts or HTML encoding! ** (Related lists - http://lists.zope.org/mailman/listinfo/zope-announce http://lists.zope.org/mailman/listinfo/zope )
[Zope-dev] Re: [Zope-ZEO] How to get rid of the cPickle and asyncore depende ncy hassles
[Jim] > I heard that ExtensionClass didn't work with Python 2.0. [Toby] > It looks like a little work is needed to support 2.0's garbage collection of > cyclic trash - but thats not enabled by default. Apart from that, everything > works very well. (In some ways, better than 1.5.2) Which 2.0 are you using? GC has been enabled in the recent betas and will almost certainly be enabled in the release. If ExtensionClass needs work to play nicely with GC then I would be happy to take a look at it. Where can I get the latest version? Neil ___ Zope-Dev maillist - [EMAIL PROTECTED] http://lists.zope.org/mailman/listinfo/zope-dev ** No cross posts or HTML encoding! ** (Related lists - http://lists.zope.org/mailman/listinfo/zope-announce http://lists.zope.org/mailman/listinfo/zope )