[Zope] Problem With External Method (was: Second Request:: Where Is This Module???)

beno zope at 2012.vi
Wed Aug 9 11:46:49 EDT 2006


Patrick Decat wrote:
>> Traceback (innermost last):
>>  Module ZPublisher.Publish, line 101, in publish
>>  Module ZPublisher.mapply, line 88, in mapply
>>  Module ZPublisher.Publish, line 39, in call_object
>>  Module App.Management, line 85, in manage_workspace
>> Redirect: http://202.71.106.119:7080/error_log/manage_main
The problem, apparently, raises it's head in the 3rd line of the 
traceback. The code there reads:

def call_object(object, args, request):
    result=apply(object,args) # Type s<cr> to step into published object.
    return result

So, I'm not sending the correct arguments to Zope. This is my first 
External Script in years (and I'd only written a couple before). So, 
please help me with this. The script is below in its (short) entirety. 
It works just fine from the command prompt. The idea is explained in the 
comments. Please help me understand how to pass it arguments.
TIA,
beno




"""
This function is to be used as a wrapper before passing to 
VirtualHostMonster so that I can convert URLs such as this:
http://footprints.2012.vi/War_Parties.Christianity.Americas.North_America.United_States.War.War_Crimes.index.pt?foo=bar
into
http://footprints.2012.vi/War_Parties/Christianity/Americas/North_America/United_States/War/War_Crimes.index.pt?foo=bar
I choose to use the former for purposes of getting my pages ranked by 
Google (since they dislike deep directory structures), but prefer the d
eep dir structure for my use in my Zope instance.
"""

import re
from urlparse import urlparse

def URL_Rewrite(old_url):
 item6 = ''
 item4 = ''
 testPound = re.compile('[a-z_A-Z0-9:\/\.]*[#][a-zA-Z0-9:\/\.]*')
 testQuestion = re.compile('[a-z_A-Z0-9:\/\.]*[\?][a-zA-Z0-9:\/\.]*')
 testEnding = re.compile('[a-zA-Z_0-9:\/\.#\?]*[p][t]')
 if re.match(testPound,old_url):
  item6 = '#'
 elif re.match(testQuestion,old_url):
  item6 = '?'
 if re.match(testEnding,old_url):
  item4 = '.pt'
 parts = urlparse(old_url)
 item0 = parts[0]
# The next rule is required because urlparse() deletes the '://'
 item0 = item0 + '://'
 item1 = parts[1]
 item2 = '/x/c/s/j/en-us'
 subPartsOf2 = re.split('.pt',parts[2])
 item3 = re.sub('\.','/',subPartsOf2[0])
# The other sub-part is an empty string
# The next rule is required because for some reason a ';' gets added by 
urlparse()
 item3 = re.sub(';','',item3)
 item5 = parts[3]
 item7 = parts[4]
 item8 = parts[5]
 new_url = item0 + item1 + item2 + item3 + item4 + item5 + item6 + item7 
+ item8
 return new_url




More information about the Zope mailing list