Skip to content

Instantly share code, notes, and snippets.

@jean
Created April 18, 2013 06:14
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save jean/5410552 to your computer and use it in GitHub Desktop.
Save jean/5410552 to your computer and use it in GitHub Desktop.
Setup Plone for invokeFactory
# Setup Plone for invokeFactory ... there must be a better way
from zope.component.hooks import setSite
setSite(plone)
from sys import stdin, stdout
from ZPublisher.HTTPRequest import HTTPRequest
from ZPublisher.HTTPResponse import HTTPResponse
from ZPublisher.BaseRequest import RequestContainer
def hacked_makerequest(stdout=None, environ={}):
resp = HTTPResponse(stdout=stdout)
environ.setdefault('SERVER_NAME', 'foo')
environ.setdefault('SERVER_PORT', '80')
environ.setdefault('REQUEST_METHOD', 'GET')
req = HTTPRequest(stdin, environ, resp)
req._steps = ['noobject'] # Fake a published object.
req['ACTUAL_URL'] = req.get('URL') # Zope 2.7.4
from zope.publisher.browser import setDefaultSkin
setDefaultSkin(req)
requestcontainer = RequestContainer(REQUEST = req)
return requestcontainer
plone.REQUEST = hacked_makerequest()
# Before you commit, remember:
del plone.REQUEST
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment