[Zope] patch to ZopePageTemplate.py
Florent Guillaume
fg@nuxeo.com
Sun, 29 Sep 2002 19:28:19 +0200
This patch makes sense (even if it can be made slightly shorter --
text=None is a valid argument to ZopePageTemplate). The best way to
contribute it is to add a Collector issue at
http://collector.zope.org/Zope with your patch attached.
Thanks,
Florent
In article <JHEOKEOOLIGLDHCMAHMOIEEIECAA.mark@mceahern.com> you write:
> I patched /zope/lib/python/Products/PageTemplates/ZopePageTemplate.py to
> allow adding a Page Template to Zope via ZPublisher.Client. The reason I
> had to patch it is that when you add a Page Template via ZPublisher.Client,
> the text and title arguments are ignored and so the resulting Page Template
> has the default content rather than the content you specified.
>
> I've appended my patch as well as a script that shows how I was using
> ZPublisher.Client to add a Page Template below. I'd be very interested to
> hear any feedback on this approach. If the patch makes sense, how do I
> contribute it to Zope (if merely posting it here isn't sufficient)?
>
> Thanks,
>
> // mark
>
> Here's the patch:
>
> *** ZopePageTemplate.py.orig Sat Sep 28 09:31:44 2002
> --- ZopePageTemplate.py.fixed Sat Sep 28 09:32:09 2002
> ***************
> *** 316,326 ****
> file = REQUEST.form.get('file')
> headers = getattr(file, 'headers', None)
> if headers is None or not file.filename:
> ! zpt = ZopePageTemplate(id)
> else:
> zpt = ZopePageTemplate(id, file, headers.get('content_type'))
>
> self._setObject(id, zpt)
>
> try: u = self.DestinationURL()
> except: u = REQUEST['URL1']
> --- 316,338 ----
> file = REQUEST.form.get('file')
> headers = getattr(file, 'headers', None)
> if headers is None or not file.filename:
> ! # 20020928 MMcEahern
> ! # Patch to allow adding PageTemplate content via
> ! # ZPublisher.Client interface.
> ! if text is None:
> ! zpt = ZopePageTemplate(id)
> ! else:
> ! zpt = ZopePageTemplate(id, text)
> else:
> zpt = ZopePageTemplate(id, file, headers.get('content_type'))
>
> self._setObject(id, zpt)
> + # 20020928 MMcEahern
> + # Patch to allow adding PageTemplate title via
> + # ZPublisher.Client interface.
> + if title:
> + ob = getattr(self, id)
> + ob.pt_setTitle(title)
>
> try: u = self.DestinationURL()
> except: u = REQUEST['URL1']
>
>
> ************ End of patch **************
>
> Here's how I'm adding a Page Template:
>
> #!/usr/local/zope/bin/python
>
> __doc__ = \
> """
> This is an experimental script for adding Page Templates. You may need to
> adjust the shebang line above to match your Zope--or, of course, just call
> this explicitly with your Zope's python.
>
> Other hard-coded stuff you may want to adjust is noted.
> """
>
> # --------------------------------------------------------------------------
> ---
> # Standard library imports
> # --------------------------------------------------------------------------
> ---
> import sys
> import time
> import os
>
> # --------------------------------------------------------------------------
> ---
> # BEGIN: Hard-coded stuff you may need to adjust.
> # --------------------------------------------------------------------------
> ---
> python_path = '/usr/local/zope/lib/python'
> username = None
> password = None
> base_url = "http://www.foobar.com/somefolder"
> # --------------------------------------------------------------------------
> ---
> # END: Hard-coded stuff you may need to adjust.
> # --------------------------------------------------------------------------
> ---
>
> # --------------------------------------------------------------------------
> ---
> # Zope imports
> # --------------------------------------------------------------------------
> ---
> # We can't import this until we modify sys.path.
> sys.path.insert(0, python_path)
> import ZPublisher.Client
>
> # --------------------------------------------------------------------------
> ---
> # Add a page template
> # --------------------------------------------------------------------------
> ---
> pt_url = "manage_addProduct/PageTemplates"
>
> # 2-step, get the manage_addProduct object for PT, then add it.
> url = os.path.join(base_url, pt_url)
> z = ZPublisher.Client.Object(url, username=username, password=password)
> try:
> # Use time.time() as a quick and dirty way to get a unique id.
> id = str(time.time())
> # Distinguish title from id.
> title = "%s - title" % id
> text = "<div class='content'></div>"
> z.manage_addPageTemplate(id=id, title=title, text=text)
> except ZPublisher.Client.ServerError, e:
> redirect_prefix = "3"
> if not str(e).startswith(redirect_prefix):
> raise
>
> -
>
>
> _______________________________________________
> Zope maillist - Zope@zope.org
> 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 )
>
--
Florent Guillaume, Nuxeo (Paris, France)
+33 1 40 33 79 87 http://nuxeo.com mailto:fg@nuxeo.com