Note that there are some explanatory texts on larger screens.

plurals
  1. PO
    primarykey
    data
    text
    <p>here's the (<strong>very</strong> dirty) code I use to manage my plone app from the debug shell. It may requires some updates depending on your versions of Zope and Plone.</p> <pre><code>from sys import stdin, stdout, exit import base64 from thread import get_ident from ZPublisher.HTTPRequest import HTTPRequest from ZPublisher.HTTPResponse import HTTPResponse from ZPublisher.BaseRequest import RequestContainer from ZPublisher import Publish from AccessControl import ClassSecurityInfo, getSecurityManager from AccessControl.SecurityManagement import newSecurityManager from AccessControl.User import UnrestrictedUser def loginAsUnrestrictedUser(): """Exemple of use : old_user = loginAsUnrestrictedUser() # Manager stuff loginAsUser(old_user) """ current_user = getSecurityManager().getUser() newSecurityManager(None, UnrestrictedUser('manager', '', ['Manager'], [])) return current_user def loginAsUser(user): newSecurityManager(None, user) def makerequest(app, stdout=stdout, query_string=None, user_pass=None): """Make a request suitable for CMF sites &amp; Plone - user_pass = "user:pass" """ # copy from Testing.makerequest resp = HTTPResponse(stdout=stdout) env = {} env['SERVER_NAME'] = 'lxtools.makerequest.fr' env['SERVER_PORT'] = '80' env['REQUEST_METHOD'] = 'GET' env['REMOTE_HOST'] = 'a.distant.host' env['REMOTE_ADDR'] = '77.77.77.77' env['HTTP_HOST'] = '127.0.0.1' env['HTTP_USER_AGENT'] = 'LxToolsUserAgent/1.0' env['HTTP_ACCEPT']='image/gif, image/x-xbitmap, image/jpeg, */* ' if user_pass: env['HTTP_AUTHORIZATION']="Basic %s" % base64.encodestring(user_pass) if query_string: p_q = query_string.split('?') if len(p_q) == 1: env['PATH_INFO'] = p_q[0] elif len(p_q) == 2: (env['PATH_INFO'], env['QUERY_STRING'])=p_q else: raise TypeError, '' req = HTTPRequest(stdin, env, resp) req['URL1']=req['URL'] # fix for CMFQuickInstaller # # copy/hacked from Localizer __init__ patches # first put the needed values in the request req['HTTP_ACCEPT_CHARSET'] = 'latin-9' #req.other['AcceptCharset'] = AcceptCharset(req['HTTP_ACCEPT_CHARSET']) # req['HTTP_ACCEPT_LANGUAGE'] = 'fr' #accept_language = AcceptLanguage(req['HTTP_ACCEPT_LANGUAGE']) #req.other['AcceptLanguage'] = accept_language # XXX For backwards compatibility #req.other['USER_PREF_LANGUAGES'] = accept_language #req.other['AcceptLanguage'] = accept_language # # Plone stuff #req['plone_skin'] = 'Plone Default' # # then store the request in Publish._requests # with the thread id id = get_ident() if hasattr(Publish, '_requests'): # we do not have _requests inside ZopeTestCase Publish._requests[id] = req # add a brainless session container req['SESSION'] = {} # # ok, let's wrap return app.__of__(RequestContainer(REQUEST = req)) def debug_init(app): loginAsUnrestrictedUser() app = makerequest(app) return app </code></pre> <p>This lives in a wshelpers Zope product. Once the debug shell launched, it's just a matter of;</p> <pre><code>&gt;&gt; from Products.wshelpers import wsdebug &gt;&gt; app = wsdebug.debug_init(app) &gt;&gt; # now you're logged in as admin </code></pre>
    singulars
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. VO
      singulars
      1. This table or related slice is empty.
    2. VO
      singulars
      1. This table or related slice is empty.
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload