[Zope-dev] Re: [Zope3-dev] ZScheduler
Hi Nikolay, Alan I also did some work done while and after the Rotterdam Sprint in Dez. 2002. The packages didn't get refactored since before NameGeddon and are not at all usable with a current cvs-checkout. The overall design (Interfaces, Structure) and the implementation of the Schedule/Task might be of interest, allthough one might use utitlities instead of Services to . I attached the sources of the prototype that worked with Zope3 early 2003 for refactoring or as example if anyone is interested. i'm online as [EMAIL PROTECTED]/#zope3-dev for any questions about the prototype. cheers Ulrich On Thu, 2004-04-01 at 06:29, Nikolay Kim wrote: > Hi Alan, > > i'm author of ZopeScheduler product, lets coordinate our work > > > > > ___ > Zope3-dev mailing list > [EMAIL PROTECTED] > http://mail.zope.org/mailman/listinfo/zope3-dev Zope3TasksPrototype.tgz Description: application/compressed-tar ___ Zope-Dev maillist - [EMAIL PROTECTED] http://mail.zope.org/mailman/listinfo/zope-dev ** No cross posts or HTML encoding! ** (Related lists - http://mail.zope.org/mailman/listinfo/zope-announce http://mail.zope.org/mailman/listinfo/zope )
Re: [Zope-dev] Idea: Awaking Zope to Life
Hi Leonardo, > Check your transaction boundaries. One of the reasons that most > solutions are based on an external request is that the Zope request > handler starts a transaction in the begining of the request and commits > it at the end (or rolls it back if there's an exception). this is basically done by get_transaction().begin/commit/rollback + cleanup per executed MicroThread. We have played a lot with Zope-Transactions I think this is manageable .. Thanks for the Hint :) > Nice idea. It certainly opens a lot of possibilities (and maybe a huge > can of worms :-). Hope you can pull it off :-) Thats one of the points I could think of too .. to really make all this work, one must probably simulate different users, that "run" the processes and plug into the security-machinery .. I haven't explored this in detail yet. thank for your reply Ulrich Eck net-labs Systemhaus GmbH Ebersberger Str. 46 85570 Markt Schwaben fon: +49-8121-4747-11 fax: +49-8121-4747-77 email: [EMAIL PROTECTED] http://www.net-labs.de ___ 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] Idea: Awaking Zope to Life
Hi Chris, thanks for your hint .. > You may also be interested in http://cvs.zope.org/Products/Scheduler/ > (it has a dependency on http://cvs.zope.org/Products/Event/ and a Zope >> = than 2.6b1). > > It relies on an external "clock" process to tickle it every so often, > but you could of course kick off a Zope thread to do this... > I have looked over the sources. this Product avoids much of the trouble through calling from an external-xmlrpc-source .. that behaves like a normal http-request (auth, contexts, threading,...) I think i want a higher resolution timer with less overhead (main-loop). .. I will explore this territory during the next weeks .. thanks Ulrich Eck net-labs Systemhaus GmbH Ebersberger Str. 46 85570 Markt Schwaben fon: +49-8121-4747-11 fax: +49-8121-4747-77 email: [EMAIL PROTECTED] http://www.net-labs.de ___ 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] Idea: Awaking Zope to Life
Hi there, I just had an Idea and want to hear your comments on the following: Zope is a Request-Based System. It has no internal scheduling functions except one installs Xron. I have written a MicroThread Scheduler using python2.2 generators that supply cooperative Multithreading. Now the point: I want to integrate this Scheduler as one Thread (like Xron) to Zope as "Service" where clients could register a callback with parameters which are called regularly with a certain priority. Zope's Persistent Object Database would morph to an completely persistent Program that handles requests too. One could use it to implement better Workflow capabilities, or an Event Sytem (a client would register a Thread that checks for incoming messages and handles them). Many more things could be done .. What are the pitfalls i can run into, when trying to implement this ?? I could think of concurrency issues, problem with threads, context, security .. any concrete hints ?? What do you think about that ?? Ulrich Eck net-labs Systemhaus GmbH Ebersberger Str. 46 85570 Markt Schwaben fon: +49-8121-4747-11 fax: +49-8121-4747-77 email: [EMAIL PROTECTED] http://www.net-labs.de ___ 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] ZPT & Plain Text
Hi out there :) >> >> How would you do repeating texts or conditional texts like this? I mean, >> perhaps it's obvious; I haven't played enough with ZPT yet. > Just for your info: there is one product that tries to address this problem: TERRY http://www.zope.org/Members/lalo/TextTemplates It is a modified version of TAL that doesn't use XML but a custom syntax: %(tal:content="here/fgcolor" black)% I don't now, if this makes things easier, but it would ensure at least the use of TALES and has similar usage. > >> I also think this looks rather unnatural when doing email templates or >> SQL templates. > > I used to think that, I'm quickly changing positions. Perhaps the only > option I'd like is a check box somewhere on the template object saying > something like "always include tal:omit-tag by default. Then I reckon it > could do for everything :-) > > cheers, > > Chris -- more and more a ZPT-ONLY! fan each day... YES :))) One Template-Language for all: ZPT .. and one Expression Syntax as well: TALES .. cheers Ulrich Eck --- net-labs Systemhaus GmbH Ebersberger Str. 46 85570 Markt Schwaben fon: +49-8121-4747-11 fax: +49-8121-4747-77 email: [EMAIL PROTECTED] http://www.net-labs.de ___ 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] Patching Zope Products .. again
sorry for bothering you again .. I'ld like to release the CMFZPatternsPatch as Patch but still have troubles with that. I have this in my __init__.py of the PatchProduct: ### CMFCore.PortalFolder ### import Products.CMFCore.DynamicType def PortalFolder__init__( self, id, title='' ): CustomizerFolder.__init__(self,id) self.id = id self.title = title import Products.CMFCore.PortalFolder Products.CMFCore.PortalFolder.PortalFolder.__bases__ = tuple([CustomizerFolder,Products.CMFCore.DynamicType.DynamicType]) Products.CMFCore.PortalFolder.PortalFolder.__init__ = PortalFolder__init__ reload(Products.CMFCore) raise "testerror",str(Products.CMFCore.PortalFolder.PortalFolder.__bases__) I tried this with and without the reload and when I start zope to see the bases I get: 2001-07-12T12:59:44 ERROR(200) Zope Couldn't import Products.CMFZPatternsPatch Traceback (innermost last): File /usr/share/zope/lib/python/OFS/Application.py, line 528, in import_products (Object: string) File /usr/share/zope/lib/python/Products/CMFZPatternsPatch/__init__.py, line 140, in ? testerror: (, ) so .. the __bases__ don't get updated .. or did i miss something ?? thanks for your help Ulrich Eck net-labs ___ 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] Patching Zope Products .. next Question
> Would this approach be appropriate? > > http://dev.zope.org/Members/Caseman/Dynamic_HotFix_News/Dynamic_Hotfix > > > You can hotpatch the __bases__ attribute of the derived class. > > ok .. I tried several different versions of patching .. 1st Try: Created a new class in the patch that subclassed the ZPatterns-Stuff directly: ### CMFCore.PortalFolder ### import CMFCore class PortalFolder( CustomizerFolder, CMFCore.PortalFolder.PortalFolder): """ Implements portal content management, but not UI details. """ meta_type = 'Portal Folder' portal_type = 'Folder' def __init__( self, id, title='' ): CustomizerFolder.__init__(self,id) self.id = id self.title = title CMFCore.PortalFolder.PortalFolder = PortalFolder InitializeClass(CMFCore.PortalFolder.PortalFolder) This works fine except the DataSkin-derived classes don't show up in the CustomizerFolder for customization (they're not properly initialized) 2nd Try: modify __bases__ directly .. ### CMFCore.PortalFolder ### def PortalFolder__init__( self, id, title='' ): CustomizerFolder.__init__(self,id) self.id = id self.title = title import Products.CMFCore.PortalFolder Products.CMFCore.PortalFolder.PortalFolder.__bases__ = tuple((CustomizerFolder,) + Products.CMFCore.PortalFolder.PortalFolder.__bases__) # the next line works only if i use the im_func # otherwise i get this error: # Error Type: TypeError # Error Value: unbound Python method must be called with PlugInContainer 1st argument Products.CMFCore.PortalFolder.PortalFolder.__init__ = PortalFolder__init__.im_func InitializeClass(Products.CMFCore.PortalFolder.PortalFolder) this one doesn't do anything ... do you see the failure .. have a hint what I'm doing wrong ??? thanks for your patience Ulrich Eck net-labs ___ 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] Patching Zope Products .. next Question
> can I do this with: > -- > import Products.CMFCore.PortalContent > > <> > > InitializeClass(<>) > Products.CMFCore.PortalContent.PortalContent = <> > -- ok this works but there is another tricky thing now ... I need to patch two products: CMFCore and CMFDefault. first i patch CMFCore and I think this works (at least a portalfolder is a customizerfolder :) I have now 2 new Classes PortalFolder and PortalContent .. but the CMFDefault.Document for example is still subclassed from CMFCore.PortalContent (the default) and therefore doesn't behave like a dataskin .. any ideas ? is the order in wich the modules are loaded known or changeable ?? if this doesn't work .. I need to release the patches as diffs or tarballs replacing CMFDefault and Core .. not as nice as just patching them .. thanks Ulrich Eck ___ 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] Patching Zope Products Question
> Ulrich Eck wrote: > > > > I'm not shure however, what format this should be distributed .. for unix a > > CMF-ZPatterns-Patch > > would probably be best .. other plattforms do not have this .. any comments ?? > > Make it into a Product that patches the CMF classes at runtime. > > See Zope Hotfixes fot a template to work from. > I have for example this modification of PortalContent: ## added for ZPatterns from Products.ZPatterns.DataSkins import DataSkin ## changed for ZPatterns class PortalContent(DataSkin, DynamicType, SimpleItem): """ Base class for portal objects. """ . so I need to completely replace the Products.CMFCore.PortalContent.PortalContent with a new class defined (mainly copied from original) in the __init__ of the Patch? can I do this with: -- import Products.CMFCore.PortalContent <> InitializeClass(<>) Products.CMFCore.PortalContent.PortalContent = <> -- Is it the same to replace a class in a module than replacing a method/attribute in a Class ?? thanks Ulrich Eck ___ 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] HowTo: Make an Image/File a DataSkin ???
> > You might need to do it like this: > >DataSkin.inheritedAttribute('__init__')(self, id) > can you give me a hint what this actually does or where it comes from (ExtensionClass.Base or Persistence...)? when do I need to use this and how is it compareable to DataSkin.__init__(self,id) or DataSkin.__init__.im_func(self,id) ?? I have tried the above and it didn't work in this case .. now I have the DataSkin Method the first that a PortalImage is subclassed from and needed to overlay _setId() to coop with Image.__name and DataSkin.id .. it works .. but I have no idea what drawbacks this could have. thanks for your help .. I nearly got it .. cu Ulrich Eck ___ 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] HowTo: Make an Image/File a DataSkin ???
Hello .. sorry I bother you again with my ZPatterns related Questions .. I just try it once again ;-) I have a Folder w/Customizer in that I want to store Objects of type Image or File (CMFDefault.Image to be correct) in it. The inline doku of CMFDefault.File/Image says the following: -- class File(OFS.Image.File , PortalContent , DefaultDublinCoreImpl ): """ A Portal-managed File """ # The order of base classes is very significant in this case. # Image.File does not store it's id in it's 'id' attribute. # Rather, it has an 'id' method which returns the contents of the # instnace's __name__ attribute. Inheriting in the other order # obscures this method, resulting in much pulling of hair and # gnashing of teeth and fraying of nerves. Don't do it. # # Really. # # Note that if you use getId() to retrieve an object's ID, you will avoid # this problem altogether. getId is the new way, accessing .id is # deprecated. -- this is fairly true. I needed to make the DataSkin the "first" subclass of File to ensure the datamanager-machinery will work (not_found v_dm) for example: class File(DataSkin , OFS.Image.File , PortalContent , DefaultDublinCoreImpl ): this basically works fine except when I rename this object the different behaviour of Dataskin (stores its id in self.id) and Image/File (stores its id in self.__name__ and recommends the use of ob.getId() to get the id). Has anyone used a Image/File/ExtFile class for combining it with ZPatterns.DataSkin and perhaps give me a hint ?? thanks Ulrich Eck net-labs ___ 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] Using Threads in Zope-Product
Hi zopistas, I currently work on a PythonProduct called JobManager. The purpose of this Product is, that one can define a hierachical set of PythonScripts (Jobs with SubJobs) that are executed in seperate Threads by call or scheduled. This is intended for use with expensive Database-Update or my ServiceManager (XML-RPC Server/Client) which need to much time to complete, that a user can't / doesn't want to wait for completion. Now there is some trikyness in programming Threads in zope .. because I wanted the thread-instances to be accessible throug zope as long as they are running - ZODB uses the module thread (start_new_thread, aquire/release_lock) - Scheduler (i found it in DC-CVS) is probably not finished and uses thread as well. the thread instance is not accessible from Zope as far as i can see - ZExternalNewManager uses the module threading (Thread(...)) the thread-instance is stored as volatile attribute (_v_threadinstance) Using the threading library would be most convinient but the Objects from threading are not pickable. I need Locks and would like to have Conditions to control the behavior of the JobManager, so I tried to make a copy of threading and added Persistence .. (derived all classes from ZODB.Persistent, but doesn't work) with no success. Is it basically possible .. does it make sense to store the instance of a Thread as an attribute of a ZODB-stored Object ??? If yes .. what changes are neccesary to make threading persistant If no .. has anybody else done such a thing with success ?? any comment welcome thanks Ulrich Eck net-labs ___ 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] xmlrpc: Syntax error at line 34: illegal character in content --> Look at what I found out
Hi chris, hi dieter, I also have this problem with using xmlrpc from a python client with zope. > > RuntimeError: Syntax error at line 34: illegal character in content > > This was the bane of one of our projects to the point where Andy re-wrote > ZMailIn to no-longer use XML-RPC. > > It's to do with stuff-which-should-probably-be-entities but we never tracked > down what wasn't encoding something when it should have done. > I'd blame the marshalling code in xmlrpclib.py myself. > > If you ever fix this, do let us know :-) > I have a Zope 2.3.1 server running as well as a Zope 2.3.2. I developed an Service-Framework on the first and then tried to install it on the 2.3.2 .. it failed I printed out the raw data of the transmission and they differ: When I call the function on Zope-2.3.1 i get this response: - OK - when I call the same function on the same backend on Zope-2.3.2 I get the following: - X-Powered-By: Zope (www.zope.org), Python (www.python.org) Content-Length: 128 Connection: close Content-Type: text/xml OK - There is some header-information in the body (that perhaps shoudn't be there) Where there any changes in Zope 2.3.1 -> 2.3.2 in the Publishing part ?? With the second response the xmllib-parser won't work as we see. any suggestions to that ?? did you guy's updated to Zope-2.3.2 recently ?? thanks for any response and hope this helps a bit .. Ulrich Eck net-labs ___ 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] ImapClient 0.1.1 released
The latest version of ImapClient has been released. http://www.zope.org/Members/jack-e/ImapClient If you're interested, please test it and give feedback that I can improve it. It is mainly developed for use with Cyrus-Imap 2.xx but should work with others. It is based on code from Worldpilot but behaves like a Zope-Folder. ImapClient is a Python Product. It is has following features: * manage multiple Imap-Mailboxes in one Client * ImapFolders are BTree-Folders stored persistantly in ZODB * Messages are cached in ZODB, but Header are checked every Request * Message-Objects grant access to all Information from the Imap Server * ImapACLs are supported * Sieve Scripts can be managed * Attachements are properly decoded an can be downloaded/viewed * Use ZMI or custom UI Thats all for now Ulrich Eck net-labs aka jack-e ___ 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] Trouble with ZODB when switching betweenZope-releases with Python 1.5 and Python2.0
yes I removed all .pyc files with rm -Rf *.pyc :) thanks Ulrich Eck - Original Message - From: "Bill Anderson" <[EMAIL PROTECTED]> To: "ZOPE-DEV Mailingliste" <[EMAIL PROTECTED]> Sent: Thursday, April 05, 2001 4:43 PM Subject: Re: [Zope-dev] Trouble with ZODB when switching betweenZope-releases with Python 1.5 and Python2.0 > On 05 Apr 2001 12:28:34 +0200, Ulrich Eck wrote: > > hi out there, > > > > I recently tried Zope-2.3.1b3 with Python 2.0 and it worked so far ... > > except some of the known issues at compile time .. > > > > I had trouble with a few products including ParsedXML so I switched back > > to Python 1.5.2 and updated to Zope-2.3.1 > > > > I did not replace my Data.fs. > > > > Everything works fine .. except when i want to browse one of my > > test-directories > > where I have many Instances of different Products I get this Error: > > > > When you switched python versions, did you use a cleanzope tree? > > if not (or just to clean it out) try deleting all the .pyc files in your > zope tree. I've seen this error when distributing .pyc files from 2.0 > machines to 1.52 machines. > > cd $ZOPEHOME > find * |grep .pyc$ |xargs rm > > i use thiswhenever I seem to be having an issue, just to clear out > potential problems there (have had that before). > > Bill > > > > ___ > 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] BTrees Documentation avaliable ??
Is documentation for the new BTrees available ?? thanks Ulrich Eck ___ 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] Trouble with ZODB when switching between Zope-releases with Python 1.5 and Python2.0
hi out there, I recently tried Zope-2.3.1b3 with Python 2.0 and it worked so far ... except some of the known issues at compile time .. I had trouble with a few products including ParsedXML so I switched back to Python 1.5.2 and updated to Zope-2.3.1 I did not replace my Data.fs. Everything works fine .. except when i want to browse one of my test-directories where I have many Instances of different Products I get this Error: --- ZopeERROR Error Type: UnpicklingError Error Value: invalid load key, 'X'. --- Traceback (innermost last): File /usr/share/Zope-2.3.1/lib/python/ZPublisher/Publish.py, line 223, in publish_module File /usr/share/Zope-2.3.1/lib/python/ZPublisher/Publish.py, line 187, in publish File /usr/share/Zope-2.3.1/lib/python/Zope/__init__.py, line 221, in zpublisher_exception_hook (Object: Traversable) File /usr/share/Zope-2.3.1/lib/python/ZPublisher/Publish.py, line 171, in publish File /usr/share/Zope-2.3.1/lib/python/ZPublisher/mapply.py, line 160, in mapply (Object: manage_main) File /usr/share/Zope-2.3.1/lib/python/ZPublisher/Publish.py, line 112, in call_object (Object: manage_main) File /usr/share/Zope-2.3.1/lib/python/Shared/DC/Scripts/Bindings.py, line 324, in __call__ (Object: manage_main) File /usr/share/Zope-2.3.1/lib/python/Shared/DC/Scripts/Bindings.py, line 354, in _bindAndExec (Object: manage_main) File /usr/share/Zope-2.3.1/lib/python/App/special_dtml.py, line 236, in _exec (Object: manage_main) File /usr/share/Zope-2.3.1/lib/python/DocumentTemplate/DT_In.py, line 666, in renderwob (Object: objectItems) File /usr/share/Zope-2.3.1/lib/python/DocumentTemplate/DT_In.py, line 761, in sort_sequence (Object: objectItems) File /usr/share/Zope-2.3.1/lib/python/ZODB/Connection.py, line 533, in setstate UnpicklingError: (see above) --- and stderr says: 2001-04-05T09:35:45 ERROR(200) ZODB Couldn't load state for '\000\000\000\000\000\001\034\377' Traceback (innermost last): File /usr/share/Zope-2.3.1/lib/python/ZODB/Connection.py, line 533, in setstate UnpicklingError: invalid load key, 'X'. --- It seems, that there is one Instance in a undefined state which is probably caused by the differences in pickling between Python 1.5 and 2.0. Is there a way to find out which object causes this error and delete it ???? thanks for your help Ulrich Eck net-labs ___ 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] Need Help: Can I use Folder w/Customizer to implement a ImapClient ???
hi ZPattern-Freaks out there, i want to write an ImapClient for CyrusImap as Zope-Product. - Handle several Mailboxes - Use Zope-Management for IMAP-Folder-Management and ACL/Security - Use Custom-Interface as Mailclient The Final Structue I want to have. It should act like a standart Zope Folder-Tree: - ImapClient ( holds Connection-Objects toIMAP-Mailboxes, Storage=ZODB) |- ImapRootFolder ( Connection-Object and Root-Folder , Storage=ZODB) | |-ImapFolder (a folder on the imapserver, not persitantly stored) | | |-ImapFolder (..) | | | | ... | | |-ImapMessage (a message on the imapserver, not persitantly stored) | |-ImapMessage (..) |- ImapRootFolder (..) | |-ImapFolder (..) | | |-ImapFolder (..) | | | | ... | | |-ImapMessage (..) | |-ImapMessage (..) after big thougths about whether to use an Implementation like - ZLDAPConnection * A Root Connection Object class ZLDAPConnection (Acquisition.Implicit,Persistent, OFS.SimpleItem.Item,...) * the nodes ar stored in a Tree of Entries class Entry(Acquisition.Implicit,OFS.SimpleItem.Item) or LocalFS does quite the same ... BUT: I want to be able to "skin" every meta_type separately, but I cannot just use Acquisition because of duplicates like "index_html" --- - Use a Specialist AFAIK a Rack can only serve one meta-type It's hard to implement the Folder Structure in racks --- - Use a Folder w/Customizer this pretty looks like the one to use ... but phillip told me some time ago,that I can use it only with persistant ZODB-Storage like other zope-objects - just use Dataskins with factory. So I decided to give it a try. I now have an ImapClient (CustomizerFolder) which stores ImapRootFolder(Dataskin,Acquisition.Implicit,Folder) the RootFolder emulates an ObjectManager to serve the Folders retrieved from the IMAP-Server. The ImapFolder-Objects are stored in an Attribute Children which is a List. and are created like this: def IMAPFolderFactory(client,Name,FullName="", PaddedName=""): handle = ImapDataSkins.ImapFolder(Name) handle._setRack(client.aq_inner.aq_parent._getDataManagerFor(handle)) handle.__dict__['_rackMounted'] = 0 handle = handle.__of__(client) handle.setup(Name,FullName,PaddedName) return handle Now I have an Tree I can browse in the ZMI ... BUT ... "I lose contact to Zope" when i browse down into the first object wich is not persistantly stored. I allthough don't get the "mapped Attributes/Methods" from the Customizer. Is there a possiblity to use the CustomizerFolder with not ZODB-Objects - What Methods need to be implemented that this could work any help appreciated .. don't want to stop halfway ;-) .. thanks Ulrich Eck ___ 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] SAP DB <--> ZODB ?
Hi steve .. I have already a tiny version of ZsapdbDA which basically works. I had contact to the maintainer of the python-module for sapdb. and he handed out a nearly python DBI 2.0 compatible interface. there might be some problems with the python-module and linux/python/threads .. i didn't test this issue very much. The Zsapdbda is basically working .. there are some issues concernig Type-Conversion and Exception-handling has to be refined. ZsapdbDA is a remake of ZMySQLDA/DCOracle. I have uploaded this product as an 0.0.1-alpha-preview .. you know what i mean :) http://www.zope.org/Members/jack-e/ZsapdbDA So feel free to use this for further development .. i don't have any time right now. hope this helps cu Ulrich Eck - Original Message - From: "Steve Alexander" <[EMAIL PROTECTED]> To: <[EMAIL PROTECTED]> Sent: Friday, March 09, 2001 4:20 PM Subject: [Zope-dev] SAP DB <--> ZODB ? > I just heard that the SAP DB has gone Free and Open Source. > > > > SAP DB is an open, SQL-based, relational database management system that >provides high availability and performance scaling from small to very > large >implementations. > > In addition, SAP DB goes beyond relational database technology by offering > object orientation as well as support for managing unstructured data. It > supports open standards including SQL, JDBC and ODBC; access from Perl and > Python; and HTTP-based services with HTML or XML content. SAP DB is platform > independent, so users can deploy it for a wide array of projects. > >Since 1994, the SAP e-Business Solution is available on SAP DB > technology. > Today SAP DB is being used by nearly 800 customers. > > On October 5, 2000, at Linux World SAP DB was announced to be made > available > as Open Source software using the GNU General Public License for the > database > kernel and the GNU Lesser General Public License for clients and programming > interfaces. > > > http://freshmeat.net/projects/sapdb/ > > I'd never heard of SAP DB before, although I've heard of SAP. > > This looks as if it would be good for a ZODB storage. > > -- > Steve Alexander > Software Engineer > Cat-Box limited > > > ___ > 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] Zope-2.3a2 and Loginmanager
hi out there, i just setup a box with Zope-2.3a2 and Loginmanager. didn't work because of Changes in AccessControl.User: - Super doesn't exist anymore (is emergency_user the replacement ??) - Zope-2.3a2 installs itself with a file "inituser" as access-file, AccessControl.User.py refers to "access" in line 372: info = readUserAccessFile('access') <--- is this a bug ??? - it seems, that there is now some work done in the User.py which was "hacked" in LoginManager.py (line 130-150) anyone any ideas about that ??? would like to test my work on Zope-2.3a2 but need the Loginmanger thanks in advance jac-e
Re: [Zope-dev] ZPatterns: persistant objects hold DataSkin-Items -> KeyError: _v_dm_
hi Philip ... > >so for a database app that handles multiple tables > >it isnt useful to handle with a FwCS. > > Um, not necessarily. You can create regular Folders under the FwCS if you > want to keep them seperate. You can even use BTreeFolders or other > ObjectManagers, if you like. All that's required is that they support the > ObjectManager protocol. So you can have a folder for each meta_type. Of > course, the primary storage of the object has to be the ZODB. > > this is not really what i plan to do .. the main storage is the sql-database in this case .. if another application needs something else we can change it using other methods in our racks or customizers. > >I'll switch back to a Specialist which has many racks as data-providers > >which i can choose the right one with a method that has a "meta-type" > >parameter. > > > >is this right so far ?? > > Pretty much, although I'm not sure why you want to pick by meta type, since > one of the major reasons for having a Specialist is for the rest of the > application not to know about specific meta types. > I renamed my Product now to ZWorkflowManager which is a bit clearer. we want to develop pluggable parts for "big-multi-feature-app" like a network-inventory/documentation tools as part of the hole. in every part there are predefined Workflows e.g. a network-doc-tool has a Workflow: < add at least 1 Physical Port> and so on ... to ensure reusability of the hole process I want to support several Metatype with my WorkflowManager which is derived from a Specialist now. these are for example form-rendering, property-validation (with plugins) and property-updates as well as creating new obects of every supported type via on the fly generated Workflows (defined through dependencies between Metatypes) Right now i my ZWorkflowManager is derived from a Specialist. It has Racks which hold every supported Metatype in a rack for it own. Those can be generated with a widzard which creates a ZClass_for_Dataskin all needed ZSQL-Method an a default-SkinScript for a DataBase Table It has a PluginContainer for Validators which can e.g. validate a certain ipaddress against lexical and logical rules. Every Plugin supports one or more different check_types e.g. string :), ipaddress, subnet, phone/faxnumber, ... Therefor I would need an extension of the DataSkinAttributePropertySheet which uses one more field in the _properties Dictionary and another for label definition of on-the-fly generated forms e.g. I_properties = ( {'id':'title','type':'string','mode':'w','check_type':'ipaddress','label':'I P-Address'}, ) can i Extend a DataSkinAttributePropertySheet by extending its basic attributes and modifying its manage_workspace(..) method to support my extensions ?? The ZWorkflowManager can reender new/edit-forms, delete-screens, views and search-forms/results for every Meta_Type stored in a rack of itself. perhaps there will be something like LinkToParentWorkflowManager :) my ZWorkflowManager provides the functionality to analyse and validate all metatypes attributes via check_types and hopefully a fitting validator-method in the Validators PluginContainer. The ApplicationIntegrator then can easily build different userscreens, browse-methods with related Information in the Specialist which serves a userinterface for the hole app in realation to network-doc-stuff. Is this the right design for an application i want to build ?? cya Ulrich Eck ___ 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: persistant objects hold DataSkin-Items -> KeyError: _v_dm_
> > >I'm searching for something that handles a newItem(,key) function > >that is provided > >from the FwCS who decides which object-type is created and gets those > >attributes from the customizer > > Just use the normal Zope "add list" to create one manually, or call the > appropriate constructors (e.g. SomeZClass.createInObjectManager()). > after a while I think I got it now. I use a FcWS as a Folder like usual in Zope and if i create an object of a type which is "customized" certain attributes will be set through the customizer. so for a database app that handles multiple tables it isnt useful to handle with a FwCS. First I thought there is the same "magic" as if i ..getItem() with a specialist .. in a FwCS Due to the Folders Rules, there can only by one object with the same id at a time in one FwCS .. I'll switch back to a Specialist which has many racks as data-providers which i can choose the right one with a method that has a "meta-type" parameter. is this right so far ?? Ulrich Eck ___ 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: persistant objects hold DataSkin-Items -> KeyError: _v_dm_
after one more day of source-code-reading i got that far: When I want to use a Folder /w Customizer (FwCS) I cannot/don't need to use Specialists. i create a FwCS and put my 'Framework' in it. if i want to access (get/new) an object handled by a customizer i can ask FwCS._getDataManagerFor(client,default) for my datamanager (DM) Do I need to implement methods like createItem/retrieveItem/_v_itemConstructor as well or how do i "get" my objects ?? If I have an object whose metatype is handled via customizer/skinscript/sqlmethod it'll probably work managing attributes .. I'm searching for something that handles a newItem(,key) function that is provided from the FwCS who decides which object-type is created and gets those attributes from the customizer did I get this right so far ?? is there an example those newItem(,key) - getItem(,key) ?? thanks Ulrich Eck > > > >a) tell my TransactionManager that my attribute "ds_object" is not pickeable > >(e.g. call it _v_ds_object) > > and how to know if zope is restarted ?!?!? > >or > >b) store this object persistantly in my TO without showing it in the > >folder-structure but behave like a DSO > > set/get attributes through Skinscripts > > Yes. Use a Folder w/Customization Support above your transactions. When > you access TO.ds_object, the DataSkin will search for a DataManager and > find one in the FwCS, assuming you've configured one. > > Note that this is mutually exlcusive to using Specialists to store the > DataSkins. In the FwCS approach, you configure Customizers for each > meta_type of objects you'll be dealing with. You can then give them > SkinScript, etc. to configure behaviors. Also, this approach requires use > of the ZODB to store at least the "shell" (class reference and ID) of each > DataSkin. But since your application is ZODB-dependent already, this is > not an issue. > > Personally, I'd suggest that if you want to take advantage of ZPatterns' > database independence, you should instead restructure your app so that your > TO's are themselves DataSkins, stored in a Specialist. Right now, you have > a very heavy dependence on the ZODB. ___ 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] ZPatterns: persistant objects hold DataSkin-Items -> KeyError: _v_dm_
hi out there, i use zpatterns/specialists for a Network-Documentation Tool. I'm writing a Product which controls the relations between specialists and manages multible actions (edit/new/delete) for ZPatterns DataSkinObjects (DSO). I have a Product-Instance of ZTWM (ZTransactionWorkflowManager) in my application root which is a Folder by itself and holds as folder-objects its 'Transactions' (in this case a Transaction starts at the first edit-action and lasts til the last submit of a form with valid entries - e.g finish transaction.) It behaves like a Wizard (PTK) with next/back/cancel/finish buttons and reads out the DataSkinPropertysheet for creating the edit/new forms on the fly. One can also define relations between the specialists an they are used to edit Foreign Keys. small painting here: \application-root --\(specialist for persons) --\ (specialist for komponents) --\(my TransactionWorkflowMangager - Folder) \<1>(first transaction -Folder) ---\<1> (first transaction object - Folder) | ds_object (attribute which references the DSO) | more info on the current Transaction object ---\<2> (second Transaction object) | ds_object (attribute which references the DSO) | more info on the current Transaction object \<2> (second Transaction) ... so far about how it should work .. For each TransactionObject (TO) I save the Object I retrieved with "specialist.getItem(id) == DataSkinObject(DSO)" as attribute "ds_object" to the TransactionObject. After I restarted Zope and want to replay/finish a transaction, i get an KeyError, Value _v_dm_ the prefix _v_ stands for not pickeable (afaik) dm for datamanager ?!? ok .. i put a TO in the Transaction, get the actual DSO, call the transactionmanagers editor function and a form with correct values is displayed, i can edit this form and call the DSO manage_changeProperties method from the transactionmanager. when i don't finish a transaction and restart zope i still have my transactions with proper values saved in my TransactionManager - except the property "ds_object" wich was assigned to the DSO at TO-creation when i try to set/get an attribute i get the KeyError of "_v_dm " ... I can deal arround that if i reget the DSO from the specialist in every function which deals with DSO's. is there a better way to a) tell my TransactionManager that my attribute "ds_object" is not pickeable (e.g. call it _v_ds_object) and how to know if zope is restarted ?!?!? or b) store this object persistantly in my TO without showing it in the folder-structure but behave like a DSO set/get attributes through Skinscripts hope that i described clearly enough where my problem is ... thanks for your reply Ulrich Eck net-labs ___ 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] ZPatterns: using PythonMethods from Skinscript
hi out there, this is my first posting on this list. Right now I think this is the right place to ask details about ZPatterns. I think a ZPatterns-Mailinglist should be set up, where people like me, working hard to get the "Zen of ZPatterns" can discuss questions related to USING ZPatterns. Here my first little problem: I've a db_sequence specialist who serves the Framework with db_id's for new Records like: >>> newid = db_sequence.getItem('').nextid The Attribute nextid is provided by a Skinscript-Method: WITH getNextId(seq_name=self.id) COMPUTE seq_name=seq_name,nextid=_.int(nextid) "getNextId()" is a PythonMethod and uses ZSQL-Methods to compute the NextId while Locking the Table: PARAMETER: self, seq_name self.sql_Lock()nid = 1for cur_id in self.sql_NextIdGet(seq_name=seq_name): nid = cur_id.nextid + 1 self.sql_NextIdUpdate(seq_name=seq_name,nextid=nid) break else: self.sql_NextIdCreate(seq_name=seq_name,nextid=1) self.sql_Unlock() return {'seq_name':seq_name, 'nextid':nid} # HERE'S MY PROBLEM I THINK I tried to return nearly everything expect a certain instance of a "special getNextId-Return-Object" e.g. return nid / return (seq_name,nid) ... I tried serveral ways to reach my return values in the SSMethod: ... COMPUTE nextid=nextid or nextid=self.nextid or nextid=RESULT ... Finally i tried to follow what happens during a get-call of an Attribute in the source .. no success .. except when i use some Dummy ZSQL-Method which does the following and works (but this is not the way to do it ..)"select as nextid, as seq_name" can someone give some advice or enlighten me about the Namespace I'm in, at SSMethods Attribute providers at execution-time ?!? My Second "little" Problem: i'm not the first one who had problems to manage data with rdbms and zpatterns. i can get Attributes through SSMethods easily and now tried to setup ADD/CHANGE/DELETED Rules to manage data. Here my SSMethod for this(getEventById/insertEvent/updateEvent are ZSQL-Methods): WITH QUERY getEventById(id=self.id) COMPUTE sid=_.int(id),name,time_start WHEN OBJECT ADDED CALL insertEvent(id=self.sid)WHEN OBJECT ADDED,CHANGED STORE sid,name,time_start USING updateEvent(id=self.sid,name=self.name,time_start=self.time_start) I access the Item through loadAttribute: "sid" I set up a ZClass derived from Dataskin which acts as Storage-Class. I call and get back an empty object without any attributes (propertysheet-problem??) the record in the database is created (but only because I reduced the ZSQL-Insert Method to id-parm only) this again seems to be a Problem of the namespace I'm in while the _objectAdded() ... method. - Do I need a PropertySheet when I only want to access/change/create/delete Items/Attributes from a RDBMS ?? If yes: Which one (CommonInterfaceProp/DataSkinProp) If no: how do i Access/Change my Properties ?? - and another Question related to this: Which object fires the Trigger-Event (ADDED/CHANGED/DELETED) .. is it the PropertySheet itself ??? lots of questions still there but these are the points i really tried to get working .. but i did'nt.. hope that there is an answer .. thanks in advance Ulrich Eck net-labs