Re: [Zope-dev] Help needed: why is this DTML not working in zope 2 ?
Argh!!! no, I made a typo error : it was <!--#var image_name-->.the syntax was good. Ok, I will use the new syntax in my new sites. But for my old site, I will not modify my ~500 dtml methods, except if there is a way to automate the change. Gilles -----Original Message----- From: Chris Withers <chrisw@nipltd.com> To: Gilles Lavaux <gilles.lavaux@esrin.esa.it> Cc: zope-dev@zope.org <zope-dev@zope.org> Date: Tuesday, July 04, 2000 1:33 PM Subject: Re: [Zope-dev] Help needed: why is this DTML not working in zope 2 ?
Gilles Lavaux wrote:
But I found something: In my 'PUBLIC_Doc' document I display image with a <!--# var image_name--> tag, my problem disappear if I use <!--#var "image_name"-->, someone can explain this??
Are you sure the space after the # isn't your problem?
I would STRONGLY recommend moving your code to the new syntax, especially if you are having problems.
You should be aware that plans are afoot to remove the old syntax...
cheers,
Chris
_______________________________________________ Zope-Dev maillist - Zope-Dev@zope.org 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 )
Gilles Lavaux wrote:
Argh!!!
no, I made a typo error : it was <!--#var image_name-->.the syntax was good. Ok, I will use the new syntax in my new sites. But for my old site, I will not modify my ~500 dtml methods, except if there is a way to automate the change.
You can write a pretty simple external method to walk your Zope object heirarchy looking for DTML Methods and DTML documents, then altering the syntax. Shouldn't take more than an hour to write and debug and test and document, if you've written stuff in Python before. I'm off to a meeting for a few hours, but harrass me later and I'll send to the list a proof-of-concept external method to get you started. -- Steve Alexander Software Engineer Cat-Box limited http://www.cat-box.net
Steve Alexander wrote:
Gilles Lavaux wrote:
Argh!!!
no, I made a typo error : it was <!--#var image_name-->.the syntax was good. Ok, I will use the new syntax in my new sites. But for my old site, I will not modify my ~500 dtml methods, except if there is a way to automate the change.
You can write a pretty simple external method to walk your Zope object heirarchy looking for DTML Methods and DTML documents, then altering the syntax. Shouldn't take more than an hour to write and debug and test and document, if you've written stuff in Python before.
I'm off to a meeting for a few hours, but harrass me later and I'll send to the list a proof-of-concept external method to get you started.
An external method for automated change from old syntax to new syntax follows. * Use at your own risk * No warranty implied or given * Use on a copy of your main Zope site * Back up data.fs three times before starting * Not guarenteed not to spin your processor and never terminate * Run on a copy of Zope in debug mode (-D) to see the print statements * Barely tested, if at all -------- import re def convert_dtml(self): """Convert DTML Methods and DTML Documents from old syntax to new syntax. Warning: recursive! Might just eat all your stack. Does not work on subclasses of DTML Method and DTML Document. Preserves normal comments, and handles instances of "-->" in quotes. """ print 'convert_dtml: id=%s' % self.title_and_id() if hasattr(self, 'meta_type') and \ (self.meta_type == 'DTML Method' or \ self.meta_type == 'DTML Document'): convert(self) # should this be "isPrincipiaFolderish"? if hasattr(self, 'isAnObjectManager') and self.isAnObjectManager: for v in self.objectValues(): v.convert_dtml() _convert_regex = re.compile('<!--#(/?)(([^"-]+?|"[^"]*?"|-[^-])+?)-->') def convert(dtml_item): print 'converting...' title = dtml_item.title # like document_src, but doesn't require RESPONSE data = dtml_item.PrincipiaSearchSource() print '----data----' print data newdata = _convert_regex.sub('<\g<1>dtml-\g<2>>', data) print '----newdata----' print newdata print '----end----' dtml_item.manage_edit(newdata, title) -------- -- Steve Alexander Software Engineer Cat-Box limited http://www.cat-box.net
Steve Alexander wrote:
An external method for automated change from old syntax to new syntax follows.
* Use at your own risk * No warranty implied or given * Use on a copy of your main Zope site * Back up data.fs three times before starting * Not guarenteed not to spin your processor and never terminate * Run on a copy of Zope in debug mode (-D) to see the print statements * Barely tested, if at all
_convert_regex = re.compile('<!--#(/?)(([^"-]+?|"[^"]*?"|-[^-])+?)-->')
Actually, I missed something in the original regex, above. (Funny how I noticed just after I pressed the 'send' button!) It should read like this: _convert_regex = re.compile('''<!--#(/?)(([^"-]+?|"[^"]*?"|'[^']*?'|-[^-])+?)-->''') The whole thing again -- same disclaimers apply, only more so :-) -------- import re def convert_dtml(self): """Convert DTML Methods and DTML Documents from old syntax to new syntax. Warning: recursive! This assumes that DTML Method and DTML Document haven't been subclassed. """ print 'convert_dtml: id=%s' % self.title_and_id() if hasattr(self, 'meta_type') and \ (self.meta_type == 'DTML Method' or \ self.meta_type == 'DTML Document'): convert(self) # should this be "isPrincipiaFolderish"? if hasattr(self, 'isAnObjectManager') and self.isAnObjectManager: for v in self.objectValues(): v.convert_dtml() _convert_regex = re.compile('''<!--#(/?)(([^"-]+?|"[^"]*?"|'[^']*?'|-[^-])+?)-->''') def convert(dtml_item): print 'converting...' title = dtml_item.title # like document_src, but doesn't require RESPONSE data = dtml_item.PrincipiaSearchSource() print '----data----' print data newdata = _convert_regex.sub('<\g<1>dtml-\g<2>>', data) print '----newdata----' print newdata print '----end----' dtml_item.manage_edit(newdata, title) -------- -- Steve Alexander Software Engineer Cat-Box limited http://www.cat-box.net
participants (2)
-
Gilles Lavaux -
Steve Alexander