def tearDownApp(self): """Undo Zope 2 startup by unsetting the global state it creates. """ import Zope2 Zope2.app()._p_jar.close() Zope2._began_startup = 0 Zope2.DB = None Zope2.bobo_application = None Zope2.zpublisher_transactions_manager = None Zope2.zpublisher_validated_hook = None Zope2.zpublisher_exception_hook = None Zope2.__bobo_before__ = None import App.config try: self._testingHome except AttributeError: pass else: config = App.config.getConfiguration() config.testinghome = self._testingHome App.config.setConfiguration(config) del self._testingHome import ZPublisher.WSGIPublisher ZPublisher.WSGIPublisher._MODULES.clear() for k, v in self._publisher_globals.items(): setattr(ZPublisher.WSGIPublisher, k, v)
def tearDownApp(self): """Undo Zope 2 startup by unsetting the global state it creates. """ import Zope2 Zope2.app()._p_jar.close() Zope2._began_startup = 0 Zope2.DB = None Zope2.bobo_application = None Zope2.zpublisher_transactions_manager = None Zope2.zpublisher_validated_hook = None Zope2.zpublisher_exception_hook = None Zope2.__bobo_before__ = None import App.config if hasattr(self, '_testingHome'): config = App.config.getConfiguration() config.testinghome = self._testingHome App.config.setConfiguration(config) del self._testingHome # Clear out the app reference cached in get_module_info's # 'modules' parameter default dict. (waaaaa) import ZPublisher.Publish defaults = ZPublisher.Publish.get_module_info.func_defaults if defaults: d = list(defaults) d[0] = {} ZPublisher.Publish.get_module_info.func_defaults = tuple(d)
def setUp(self): import transaction self.guarded_getattr = guarded_getattr_py transaction.manager.begin() self.app = makerequest(Zope2.app()) try: # Set up a manager user self.uf = self.app.acl_users self.uf._doAddUser('manager', 'secret', ['Manager'], []) self.login('manager') # Set up objects in the root that we want to aquire self.app.manage_addFolder('plain_folder') self.app._setObject('error_log2', ProtectedSiteErrorLog()) # We also want to be able to acquire simple attributes self.app.manage_addProperty(id='simple_type', type='string', value='a string') # Set up a subfolder and the objects we want to acquire from self.app.manage_addFolder('subfolder') self.folder = self.app.subfolder self.folder._setObject('allowed', AllowedItem()) self.folder._setObject('denied', DeniedItem()) self.folder._setObject('protected', ProtectedItem()) except: self.tearDown() raise
def process(name, swhome, ihome): admin_username = name os.environ['INSTANCE_HOME'] = ihome if sys.platform == 'win32': sys.path.insert(0, os.path.join(swhome, 'Zope', 'lib', 'python')) sys.path.insert(1, os.path.join(swhome, 'Python', 'lib')) sys.path.insert(2, swhome) else: os.environ['SOFTWARE_HOME'] = swhome sys.path.insert(0, swhome) # have to set up env first try: # Zope 2.8 on, Zope is now 'Zope2' and 'zope' is the Zope 3 # libs. import Zope2 as Zope except ImportError: import Zope configfile = os.path.join(ihome, 'etc', 'zope.conf') # nuke remaining command line arguments sys.argv = sys.argv[:1] # for 2.7 run configure Zope.configure(configfile) app = Zope.app() from Testing import makerequest app = makerequest.makerequest(app) from Products.CMFPlone.PloneInitialize import create out = create(app, admin_username) return out
def __init__(self): self.instancehome = os.environ.get("INSTANCE_HOME") configfile = os.environ.get("CONFIG_FILE") if configfile is None and self.instancehome is not None: configfile = os.path.join(self.instancehome, "etc", "zope.conf") if configfile is None: raise RuntimeError("CONFIG_FILE env not set") print "CONFIG_FILE=", configfile print "INSTANCE_HOME=", self.instancehome self.configfile = configfile try: from Zope2 import configure except ImportError: from Zope import configure configure(configfile) try: import Zope2 app = Zope2.app() except ImportError: import Zope app = Zope.app() from Testing.makerequest import makerequest self.app = makerequest(app) try: self._make_permissive() print "Permissive security installed" except: print "Permissive security NOT installed" self._pwd = self.portal or self.app try: from zope.component import getSiteManager from zope.component import getGlobalSiteManager try: from zope.app.component.hooks import setSite except ImportError: from zope.component.hooks import setSite if self.portal is not None: setSite(self.portal) gsm = getGlobalSiteManager() sm = getSiteManager() if sm is gsm: print "ERROR SETTING SITE!" except: # XXX: What exceptions is this supposed to catch? pass
def hist(n): import Zope2 app=Zope2.app() import cPickle pickler=cPickle.Pickler(open("h%s.hist" % n, 'w')) h=app.cat._catalog.indexes['PrincipiaSearchSource'].histogram() pickler.dump(list(h.items()))
def main(): import Zope2 app = Zope2.app() parser = OptionParser() parser.add_option('-u', '--user', dest='username', default='admin') parser.add_option('-x', '--extension-profiles', dest='extension_profiles', default='') parser.add_option('-i', '--input', dest='input_directory', default='') parser.add_option('-d', '--dest-folder', dest='dest_folder', default='sites') parser.add_option('-t', '--timestamp', dest='timestamp', action='store_true') parser.add_option('-v', '--verbose', dest='verbose', action='store_true', default=False) options, args = parser.parse_args() options.app = app import_site(options)
def setNodeText(self, jid, node, text): transaction.begin() app = Zope2.app() try: try: portal = app.unrestrictedTraverse(self.portal_id, None) if portal is None: raise DSCException( 'Portal with id %s not found' % self.portal_id) setSite(portal) acl_users = getToolByName(portal, 'acl_users') user_id = JID(jid).user user = acl_users.getUserById(user_id) if user is None: raise DSCException( 'Invalid user %s' % user_id) newSecurityManager(None, user) ct = getToolByName(portal, 'portal_catalog') uid, html_id = node.split('#') item = ct.unrestrictedSearchResults(UID=uid) if not item: raise DSCException( 'Content with UID %s not found' % uid) item = ICollaborativelyEditable(item[0].getObject()) item.setNodeTextFromHtmlID(html_id, text) transaction.commit() except: transaction.abort() raise finally: noSecurityManager() setSite(None) app._p_jar.close() return text
def product_packages(): """Returns all product packages including the regularly defined zope2 packages and those without the Products namespace package. """ old_product_packages = {} for x in dir(Products): m = getattr(Products, x) if isinstance(m, types.ModuleType): old_product_packages[x] = m packages = {} app = Zope2.app() try: products = app.Control_Panel.Products for product_id in products.objectIds(): product = products[product_id] if hasattr(product, 'package_name'): pos = product.package_name.rfind('.') if pos > -1: packages[product_id] = __import__( product.package_name, globals(), {}, product.package_name[pos + 1:]) else: packages[product_id] = __import__(product.package_name) elif old_product_packages.has_key(product_id): packages[product_id] = old_product_packages[product_id] finally: app._p_jar.close() return packages
def getNodeText(self, jid, node): app = Zope2.app() text = '' try: portal = app.unrestrictedTraverse(self.portal_id, None) if portal is None: raise DSCException('Portal with id %s not found' % self.portal_id) setSite(portal) acl_users = getToolByName(portal, 'acl_users') user_id = unescapeNode(JID(jid).user) user = acl_users.getUserById(user_id) if user is None: raise DSCException('Invalid user %s' % user_id) newSecurityManager(None, user) ct = getToolByName(portal, 'portal_catalog') uid, html_id = node.split('#') item = ct.unrestrictedSearchResults(UID=uid) if not item: raise DSCException('Content with UID %s not found' % uid) item = ICollaborativelyEditable(item[0].getObject()) text = item.getNodeTextFromHtmlID(html_id) finally: noSecurityManager() setSite(None) return text
def setUp(self): self._trap_warning_output() zcml.load_config('meta.zcml', Products.Five) zcml.load_config('configure.zcml', Products.Five) zcml.load_config('configure.zcml', Products.GenericSetup) zcml.load_config('configure.zcml', Products.CMFCore) zcml.load_config('configure.zcml', Products.CMFDefault) zcml.load_config('configure.zcml', Products.DCWorkflow) self._oldSkindata = Skinnable.SKINDATA.copy() transaction.begin() app = self.app = makerequest(Zope2.app()) # Log in as a god :-) newSecurityManager(None, UnrestrictedUser('god', 'god', ['Manager'], '') ) factory = app.manage_addProduct['CMFDefault'].addConfiguredSite factory('CalendarTest', 'CMFDefault:default', snapshot=False, extension_ids=('CMFCalendar:default',)) self.Site = app.CalendarTest self.Tool = app.CalendarTest.portal_calendar # sessioning setup if getattr(app, 'temp_folder', None) is None: temp_folder = MountedTemporaryFolder('temp_folder') app._setObject('temp_folder', temp_folder) if getattr(app.temp_folder, 'session_data', None) is None: session_data = TransientObjectContainer('session_data') app.temp_folder._setObject('session_data', session_data) app.REQUEST.set_lazy( 'SESSION', app.session_data_manager.getSessionData )
def main(argv=sys.argv): if len(sys.argv) != 4: raise Exception("Must specify configuration path, site name and days") site_name = sys.argv[2] days = int(sys.argv[3]) now = datetime.datetime.now() argv = argv filepath = sys.argv[1] os.environ['ZOPE_CONFIG'] = filepath sys.argv = [''] from Zope2.Startup.run import configure configure(os.environ['ZOPE_CONFIG']) app = spoofRequest(Zope2.app()) request = app.REQUEST site = app.unrestrictedTraverse(site_name) setSite(site) storage = IGarbageStorage(site) if storage and isInstalled(site=site): expunge = [] for key, item in storage.garbagecan_contents(): delta = now - item.garbagecan_date if delta.days > days: expunge.append(key) for key in expunge: storage.expunge(key) if AUDIT: notify( AuditableActionPerformedEvent(site, request, 'Expunge (script)', key.split(':')[0])) transaction.commit()
def main(app=None, args=None): full_args = args if args is not None: full_args = args + sys.argv[1:] args = parser.parse_args(full_args) if args.upgrade_profiles: args.upgrade_all_profiles = False elif not (args.upgrade_portal or args.upgrade_all_profiles): parser.error('The supplied options would not upgrade any profiles') if app is None: import Zope2 from App import config if config._config is None: if not args.zope_conf: parser.error( 'Must give the "--zope-conf" option when not used as a ' 'zopectl "run" script.') Zope2.configure(args.zope_conf) app = Zope2.app() elif args.zope_conf: parser.error( 'Do not give the "--zope-conf" option when used as a ' 'zopectl "run" script.') root = logging.getLogger() root.setLevel(logging.INFO) stderr_handler, = [h for h in root.handlers if getattr(h, 'stream', None) is sys.__stderr__] stderr_handler.setLevel(logging.INFO) stderr_handler.addFilter(zodbupdate.main.duplicate_filter) log_file = logging.FileHandler(args.log_file) log_file.addFilter(zodbupdate.main.duplicate_filter) log_file.setFormatter(utils.formatter) root.addHandler(log_file) kw = dict( paths=args.portal_paths, upgrade_portal=args.upgrade_portal, upgrade_all_profiles=args.upgrade_all_profiles, upgrade_profiles=args.upgrade_profiles) if args.disable_link_integrity: kw['enable_link_integrity_checks'] = False from AccessControl import SpecialUsers from AccessControl.SecurityManagement import newSecurityManager newSecurityManager(None, SpecialUsers.system) from Testing.makerequest import makerequest app = makerequest(app) runner = app.restrictedTraverse('@@collective.upgrade.form') try: runner.upgrade(**kw) except: transaction.abort() runner.logger.exception('Exception running the upgrades.') pdb.post_mortem(sys.exc_info()[2]) raise
def initialize(context): """Initializer called when used as a Zope 2 product.""" root = Zope2.app() sites = root.objectValues("Plone Site") version = os.environ.get("EEA_KGS_VERSION", "") if not version: return changed = False for site in sites: anno = queryAdapter(site, IAnnotations) if not anno: continue if not anno.get("EEA_KGS_VERSION", None): anno["EEA_KGS_VERSION"] = OOBTree() changed = True if not anno["EEA_KGS_VERSION"].get(version, None): anno["EEA_KGS_VERSION"][version] = datetime.now() changed = True if changed: transaction.get().note('eea.design: updating EEA_KGS_VERSION') try: transaction.commit() except Exception as err: logger.warn("EEA_KGS_VERSION already updated elsewhere: %s", err) transaction.abort() else: logger.info("EEA_KGS_VERSION updated to: %s", version)
def setup(lib_python): try: os.remove(os.path.join(lib_python, '..', '..', 'var', 'Data.fs')) except: pass import Zope2 import Products import AccessControl.SecurityManagement app=Zope2.app() Products.ZCatalog.ZCatalog.manage_addZCatalog(app, 'cat', '') from Products.ZCTextIndex.ZCTextIndex import PLexicon from Products.ZCTextIndex.Lexicon import Splitter, CaseNormalizer app.cat._setObject('lex', PLexicon('lex', '', Splitter(), CaseNormalizer()) ) class extra: doc_attr = 'PrincipiaSearchSource' lexicon_id = 'lex' index_type = 'Okapi BM25 Rank' app.cat.addIndex('PrincipiaSearchSource', 'ZCTextIndex', extra) transaction.commit() system = AccessControl.SpecialUsers.system AccessControl.SecurityManagement.newSecurityManager(None, system) app._p_jar.close()
def index(): os.environ['STUPID_LOG_FILE'] = '' os.environ['STUPID_LOG_SEVERITY'] = '-111' import Zope2, Products.ZCatalog.ZCatalog import AccessControl.SecurityManagement, AccessControl.SpecialUsers app = Zope2.app() Products.ZCatalog.ZCatalog.manage_addZCatalog(app, 'cat', '') try: app.cat.threshold = atoi(sys.argv[2]) except IndexError: app.cat.threashold = 1000 from Products.ZCTextIndex.ZCTextIndex \ import PLexicon from Products.ZCTextIndex.Lexicon \ import Splitter, CaseNormalizer app.cat._setObject('lex', PLexicon('lex', '', Splitter(), CaseNormalizer())) class extra: doc_attr = 'PrincipiaSearchSource' lexicon_id = 'lex' index_type = 'Okapi BM25 Rank' app.cat.addIndex('PrincipiaSearchSource', 'ZCTextIndex', extra) transaction.commit() system = AccessControl.SpecialUsers.system AccessControl.SecurityManagement.newSecurityManager(None, system) r = RE() r.PARENTS = [app.cat, app] print do(Zope2.DB, indexf, (app, )) #hist(sys.argv[2]) Zope2.DB.close()
def getNodeText(self, jid, node): app = Zope2.app() text = '' try: portal = app.unrestrictedTraverse(self.portal_id, None) if portal is None: raise DSCException( 'Portal with id %s not found' % self.portal_id) setSite(portal) acl_users = getToolByName(portal, 'acl_users') user_id = unescapeNode(JID(jid).user) user = acl_users.getUserById(user_id) if user is None: raise DSCException( 'Invalid user %s' % user_id) newSecurityManager(None, user) ct = getToolByName(portal, 'portal_catalog') uid, html_id = node.split('#') item = ct.unrestrictedSearchResults(UID=uid) if not item: raise DSCException( 'Content with UID %s not found' % uid) item = ICollaborativelyEditable(item[0].getObject()) text = item.getNodeTextFromHtmlID(html_id) finally: noSecurityManager() setSite(None) return text
def hist(n): import Zope2 app = Zope2.app() import cPickle pickler = cPickle.Pickler(open("h%s.hist" % n, 'w')) h = app.cat._catalog.indexes['PrincipiaSearchSource'].histogram() pickler.dump(list(h.items()))
def testSetUp(self): """Do not mess up here with another stacked demo storage!!!""" import Zope2 environ = { 'SERVER_NAME': 'localhost', 'SERVER_PORT': str(self['port']), } app = z2.addRequestContainer( Zope2.app(), environ=environ) request = app.REQUEST request['PARENTS'] = [app] # Make sure we have a zope.globalrequest request try: from zope.globalrequest import setRequest setRequest(request) except ImportError: pass self['app'] = app self['request'] = request self['portal'] = portal = self['app'][PLONE_SITE_ID] transaction.commit() self.setUpEnvironment(portal) transaction.commit() LayerMixin.testSetUp(self) transaction.commit()
def __call__(self, config_file, run_as, server_url=None, context_path=None, portal_id=None, **environ): Zope2.Startup.run.configure(config_file) environ['SERVER_URL'] = server_url self.app = makerequest(Zope2.app(), environ=environ) setHooks() if portal_id is not None: self.portal = self.app[portal_id] else: portals = self.app.objectValues('Plone Site') if len(portals) > 1: log.warn('More than one portal - using first one') self.portal = portals[0] setSite(self.portal) self.app.REQUEST.other['PARENTS'] = [self.portal, self.app] self.app.REQUEST.other['VirtualRootPhysicalPath'] = ( '', self.portal.id) log.setLevel(logging.INFO) handler = logging.StreamHandler(sys.stdout) formatter = logging.Formatter( "%(asctime)s - %(name)s - %(levelname)s - %(message)s") handler.setFormatter(formatter) log.addHandler(handler) with api.env.adopt_user(username=run_as): if context_path is not None: self.context = self.portal.restrictedTraverse(context_path) else: self.context = self.portal self.run() transaction.commit()
def product_packages(): """Returns all product packages including the regularly defined zope2 packages and those without the Products namespace package. """ old_product_packages = {} for x in dir(Products): m = getattr(Products, x) if isinstance(m, types.ModuleType): old_product_packages[x] = m packages = {} app = Zope2.app() try: products = app.Control_Panel.Products for product_id in products.objectIds(): product = products[product_id] if hasattr(product, 'package_name'): pos = product.package_name.rfind('.') if pos > -1: packages[product_id] = __import__(product.package_name, globals(), {}, product.package_name[pos+1:]) else: packages[product_id] = __import__(product.package_name) elif old_product_packages.has_key(product_id): packages[product_id] = old_product_packages[product_id] finally: try: app._p_jar.close() except: # don't fret if the app connection is attached to an ongoing session pass return packages
def setUp(self): import transaction self.guarded_getattr = guarded_getattr_py transaction.manager.begin() self.app = makerequest(Zope2.app()) try: # Set up a manager user self.uf = self.app.acl_users self.uf._doAddUser('manager', 'secret', ['Manager'], []) self.login('manager') # Set up objects in the root that we want to aquire self.app.manage_addFolder('plain_folder') # We also want to be able to acquire simple attributes self.app.manage_addProperty(id='simple_type', type='string', value='a string') # Set up a subfolder and the objects we want to acquire from self.app.manage_addFolder('subfolder') self.folder = self.app.subfolder self.folder._setObject('allowed', AllowedItem()) self.folder._setObject('denied', DeniedItem()) self.folder._setObject('protected', ProtectedItem()) except Exception: self.tearDown() raise
def markMinisites(minisite_paths): app = Zope2.app() if not minisite_paths: return # we suppose plone is in first level of zope portal_path = filter(None, minisite_paths[0].split("/"))[0] plonesite = app.get(portal_path) if not plonesite: return setSite(plonesite) # plone.api do not work here catalog = plonesite.portal_catalog brains = catalog({"object_provides": IMinisiteRoot.__identifier__}) for brain in brains: obj = brain.getObject() noLongerProvides(obj, IMinisiteRoot) logger.debug("{0} unmark as minisite".format(obj.absolute_url())) for minisite_path in minisite_paths: try: minisite_root = api.content.get(minisite_path) docker_compose_hostname = os.environ.get("HOSTNAME") or "" except: # noqa # if folder path is not publish minisite_root = None if (minisite_root and minisite_root.portal_type != "Link" and "instance1" in docker_compose_hostname): alsoProvides(minisite_root, IMinisiteRoot) notify(MinisiteMarkedEvent(minisite_root)) logger.debug("{0} folder mark as minisite".format(minisite_path)) commit()
def get_plone_site(PLONE): import Zope2 app = Zope2.app() from Testing.ZopeTestCase import utils utils._Z2HOST = HOST path = PLONE.split('/') app = utils.makerequest(app) app.REQUEST['PARENTS'] = [app] app.REQUEST.other['VirtualRootPhysicalPath'] = path from zope.globalrequest import setRequest setRequest(app.REQUEST) from AccessControl.SpecialUsers import system as user from AccessControl.SecurityManagement import newSecurityManager newSecurityManager(None, user) _site = app[path[-1]] site = _site.__of__(app) from zope.site.hooks import setSite setSite(site) return site
def setUp(self): self._oldSkindata = Skinnable.SKINDATA.copy() transaction.begin() app = self.app = makerequest(Zope2.app()) # Log in as a god :-) newSecurityManager(None, UnrestrictedUser('god', 'god', ['Manager'], '')) factory = app.manage_addProduct['CMFDefault'].addConfiguredSite factory('CalendarTest', 'CMFDefault:default', snapshot=False, extension_ids=('CMFCalendar:default', )) self.Site = app.CalendarTest self.Tool = app.CalendarTest.portal_calendar # sessioning setup if getattr(app, 'temp_folder', None) is None: temp_folder = MountedTemporaryFolder('temp_folder') app._setObject('temp_folder', temp_folder) if getattr(app.temp_folder, 'session_data', None) is None: session_data = TransientObjectContainer('session_data') app.temp_folder._setObject('session_data', session_data) app.REQUEST.set_lazy('SESSION', app.session_data_manager.getSessionData)
def testSetUp(self): import Zope2 import transaction # Override zodbDB from the layer setup. Since it was set up by # this layer, we can't just assign a new shadow. We therefore keep # track of the original so that we can restore it on tear-down. self['zodbDB'] = zodb.stackDemoStorage(self.get('zodbDB'), name='FunctionalTest') # Save the app environ = { 'SERVER_NAME': self['host'], 'SERVER_PORT': str(self['port']), } app = addRequestContainer(Zope2.app(), environ=environ) request = app.REQUEST request['PARENTS'] = [app] # Make sure we have a zope.globalrequest request try: from zope.globalrequest import setRequest setRequest(request) except ImportError: pass # Start a transaction transaction.begin() # Save resources for the test self['app'] = app self['request'] = request
def _registerPackage(module_, init_func=None): """Registers the given python package as a Zope 2 style product """ if not hasattr(module_, '__path__'): raise ValueError("Must be a package and the " \ "package must be filesystem based") app = Zope2.app() try: product = initializeProduct(module_, module_.__name__, module_.__path__[0], app) product.package_name = module_.__name__ if init_func is not None: newContext = ProductContext(product, app, module_) init_func(newContext) finally: try: import transaction transaction.commit() finally: app._p_jar.close()
def testSetUp(self): import Zope2 import transaction # Open a new app and save it as the resource ``app``. environ = { 'SERVER_NAME': self['host'], 'SERVER_PORT': str(self['port']), } app = addRequestContainer(Zope2.app(), environ=environ) request = app.REQUEST request['PARENTS'] = [app] # Make sure we have a zope.globalrequest request try: from zope.globalrequest import setRequest setRequest(request) except ImportError: pass # Start a transaction transaction.begin() # Save resources for tests to access self['app'] = app self['request'] = request
def setUp(self): super(ZPTMacros, self).setUp() zope.component.provideAdapter(DefaultTraversable, (None,)) transaction.begin() self.app = makerequest(Zope2.app()) f = self.app.manage_addProduct['PageTemplates'].manage_addPageTemplate self._addPT = f self.title = 'title of page template' self.text = """ <metal:block use-macro="template/macros/themacro"> <p metal:fill-slot="theslot"> This is in the slot </p> </metal:block> <tal:block condition="nothing"> <div metal:define-macro="themacro"> <h1>This is the header</h1> <p metal:define-slot="theslot"> This will be replaced </p> </div> </tal:block> """ self.result = """<div>
def setUp(self): self._trap_warning_output() transaction.begin() app = self.app = makerequest(Zope2.app()) # Log in as a god :-) newSecurityManager( None, UnrestrictedUser('god', 'god', ['Manager'], '') ) app.manage_addProduct['CMFDefault'].manage_addCMFSite('CalendarTest') self.Site = app.CalendarTest manage_addExternalMethod(app.CalendarTest, id='install_events', title="Install Events", module="CMFCalendar.Install", function="install") ExMethod = app.restrictedTraverse('/CalendarTest/install_events') ExMethod() self.Tool = app.CalendarTest.portal_calendar self.Site.clearCurrentSkin() self.Site.setupCurrentSkin(app.REQUEST) # sessioning setup if getattr(app, 'temp_folder', None) is None: temp_folder = MountedTemporaryFolder('temp_folder') app._setObject('temp_folder', temp_folder) if getattr(app.temp_folder, 'session_data', None) is None: session_data = TransientObjectContainer('session_data') app.temp_folder._setObject('session_data', session_data) app.REQUEST.set_lazy( 'SESSION', app.session_data_manager.getSessionData )
def main(): import Zope2 app = Zope2.app() sys.argv = [__file__] + sys.argv[3:] options, args = parser.parse_args() options.app = app import_site(options)
def setUp(self): transaction.begin() self.app = makerequest(Zope2.app()) f = self.app.manage_addProduct['PageTemplates'].manage_addPageTemplate self._addPT = f self.title = 'title of page template' self.text = 'text of page template'
def zopectl_entry(self, arg): options = parser.parse_args(arg.split(" ") if arg else []) logging.basicConfig(level=logging.INFO) make_wsgi_app({}, self.options.configfile) app = Zope2.app() verify_zodb(app._p_jar._db._storage, debug=options.debug)
def setUp(self): self._trap_warning_output() transaction.begin() app = self.app = makerequest(Zope2.app()) # Log in as a god :-) newSecurityManager(None, UnrestrictedUser('god', 'god', ['Manager'], '')) app.manage_addProduct['CMFDefault'].manage_addCMFSite('CalendarTest') self.Site = app.CalendarTest manage_addExternalMethod(app.CalendarTest, id='install_events', title="Install Events", module="CMFCalendar.Install", function="install") ExMethod = app.restrictedTraverse('/CalendarTest/install_events') ExMethod() self.Tool = app.CalendarTest.portal_calendar self.Site.clearCurrentSkin() self.Site.setupCurrentSkin(app.REQUEST) # sessioning setup if getattr(app, 'temp_folder', None) is None: temp_folder = MountedTemporaryFolder('temp_folder') app._setObject('temp_folder', temp_folder) if getattr(app.temp_folder, 'session_data', None) is None: session_data = TransientObjectContainer('session_data') app.temp_folder._setObject('session_data', session_data) app.REQUEST.set_lazy('SESSION', app.session_data_manager.getSessionData)
def setUp(self): super().setUp() useChameleonEngine() zope.component.provideAdapter(DefaultTraversable, (None, )) transaction.begin() self.app = makerequest(Zope2.app()) f = self.app.manage_addProduct['PageTemplates'].manage_addPageTemplate self._addPT = f self.title = 'title of page template' self.text = """ <metal:block use-macro="template/macros/themacro"> <p metal:fill-slot="theslot"> This is in the slot </p> </metal:block> <tal:block condition="nothing"> <div metal:define-macro="themacro"> <h1>This is the header</h1> <p metal:define-slot="theslot"> This will be replaced </p> </div> </tal:block> """ self.result = """<div>
def get_plone_site(): import Zope2 app = Zope2.app() from Testing.ZopeTestCase import utils utils._Z2HOST = HOST path = PLONE.split('/') app = utils.makerequest(app) app.REQUEST['PARENTS'] = [app] app.REQUEST.other['VirtualRootPhysicalPath'] = path from zope.globalrequest import setRequest setRequest(app.REQUEST) from AccessControl.SpecialUsers import system as user from AccessControl.SecurityManagement import newSecurityManager newSecurityManager(None, user) _site = app[path[-1]] site = _site.__of__(app) from zope.site.hooks import setSite setSite(site) return site
def run_it(module): cwd = os.getcwd() conf_path = None lookup_paths = [ '/opt/plone/parts/client1/etc/zope.conf', os.path.join(cwd, 'parts/instance/etc/zope.conf'), os.path.join(cwd, 'parts/client1/etc/zope.conf'), ] for path in lookup_paths: if os.path.exists(path): conf_path = path break if conf_path is None: raise Exception('Could not find zope.conf in {}'.format(lookup_paths)) from Zope2 import configure configure(conf_path) import Zope2 app = Zope2.app() from Testing.ZopeTestCase.utils import makerequest app = makerequest(app) app.REQUEST['PARENTS'] = [app] from zope.globalrequest import setRequest setRequest(app.REQUEST) from AccessControl.SpecialUsers import system as user from AccessControl.SecurityManagement import newSecurityManager newSecurityManager(None, user) from zope.dottedname.resolve import resolve mod = resolve('castle.cms.cron.' + module) mod.run(app)
def _executeAsUser(context_path, portal_path, uf_path, user_id, func, *args, **kwargs): """Reconstruct environment and execute func.""" transaction = Zope2.zpublisher_transactions_manager # Supports isDoomed transaction.begin() app = Zope2.app() result = None try: try: portal = app.unrestrictedTraverse(portal_path, None) if portal is None: raise BadRequest( 'Portal path %s not found' % '/'.join(portal_path)) setSite(portal) if uf_path: acl_users = app.unrestrictedTraverse(uf_path, None) if acl_users is None: raise BadRequest( 'Userfolder path %s not found' % '/'.join(uf_path)) user = acl_users.getUserById(user_id) if user is None: raise BadRequest('User %s not found' % user_id) newSecurityManager(None, user) context = portal.unrestrictedTraverse(context_path, None) if context is None: raise BadRequest( 'Context path %s not found' % '/'.join(context_path)) # Create a request to work with import sys from ZPublisher.HTTPResponse import HTTPResponse from ZPublisher.HTTPRequest import HTTPRequest response = HTTPResponse(stdout=sys.stdout) env = {'SERVER_NAME':'fake_server', 'SERVER_PORT':'80', 'REQUEST_METHOD':'GET'} request = HTTPRequest(sys.stdin, env, response) # Set values from original request original_request = kwargs.get('original_request') if original_request: for k,v in original_request.items(): request.set(k, v) context.REQUEST = request result = func(context, *args, **kwargs) del context.REQUEST #Avoid "can't pickle file objects" transaction.commit() except: transaction.abort() raise finally: noSecurityManager() setSite(None) app._p_jar.close() return result
def setUp(self): self['zodbDB'] = zodb.stackDemoStorage(self.get('zodbDB'), name='PASLDAPLayer') self['app'] = z2.addRequestContainer(Zope2.app(self['zodbDB'].open()), environ=None) self.setUpZCML() self.setUpProducts(self['app']) self.setUpDefaultContent(self['app'])
def init_site_loggers(): """ Called once on App startup """ import Zope2 for ob in Zope2.app().objectValues(): if INySite.providedBy(ob): try: create_site_logger(ob) except Exception: log.exception("Exception creating site logger for %r", ob)
def init_site_loggers(): """ Called once on App startup """ import Zope2 for ob in Zope2.app().objectValues(): if INySite.providedBy(ob): try: create_site_logger(ob) except Exception, e: log.exception("Exception creating site logger for %r", ob)
def setUp(self): self.app = makerequest(Zope2.app()) try: uf = self.app.acl_users uf._doAddUser('manager', 'secret', ['Manager'], []) user = uf.getUserById('manager').__of__(uf) newSecurityManager(None, user) except Exception: self.tearDown() raise
def getApp(*args, **kwargs): if Zope2.bobo_application is None: orig_argv = sys.argv sys.argv = [''] res = Zope2.app(*args, **kwargs) sys.argv = orig_argv return res # should set bobo_application # man, freaking zope2 is weird return Zope2.bobo_application(*args, **kwargs)
def runscript(zopeconf, script_name, *extra_args): make_wsgi_app({}, zopeconf) app = Zope2.app() app = makerequest(app) app.REQUEST['PARENTS'] = [app] setRequest(app.REQUEST) newSecurityManager(None, user) scriptglobals = {'__name__': '__main__', 'app': app} with open(script_name) as script: scriptcode = script.read() exec(compile(scriptcode, script_name, 'exec'), scriptglobals)
def main(app=None, args=None): full_args = args if args is not None: full_args = args + sys.argv[1:] options, args = parser.parse_args(full_args) if args: parser.error('Unrecognized args given: %r' % args) if app is None: import Zope2 from App import config if config._config is None: if not options.zope_conf: parser.error( 'Must give the "--zope-conf" option when not used as a ' 'zopectl "run" script.') Zope2.configure(options.zope_conf) app = Zope2.app() elif options.zope_conf: parser.error('Do not give the "--zope-conf" option when used as a ' 'zopectl "run" script.') root = logging.getLogger() root.setLevel(logging.INFO) stderr_handler, = [ h for h in root.handlers if getattr(h, 'stream', None) is sys.__stderr__ ] stderr_handler.setLevel(logging.INFO) stderr_handler.addFilter(zodbupdate.main.duplicate_filter) log_file = logging.FileHandler(options.log_file) log_file.addFilter(zodbupdate.main.duplicate_filter) log_file.setFormatter(utils.formatter) root.addHandler(log_file) kw = dict(paths=options.portal_path) if options.disable_link_integrity: kw['enable_link_integrity_checks'] = False from AccessControl import SpecialUsers from AccessControl.SecurityManagement import newSecurityManager newSecurityManager(None, SpecialUsers.system) from Testing.makerequest import makerequest app = makerequest(app) runner = app.restrictedTraverse('@@collective.upgrade.form') try: runner.upgrade(**kw) except: transaction.abort() runner.logger.exception('Exception running the upgrades.') pdb.post_mortem(sys.exc_info()[2]) raise
def setUp(self): transaction.begin() self.app = makerequest(Zope2.app()) try: self.app.manage_addFolder('folder') self.app.folder.manage_addProduct['SiteAccess'].manage_addSiteRoot(title = 'SiteRoot', base = 'http://test_base', path = '/test_path') self.app.REQUEST.set('PARENTS', [self.app]) self.app.REQUEST.traverse('/folder') except: self.tearDown()
def setUp(self): transaction.begin() self.app = makerequest(Zope2.app()) try: if not hasattr(self.app, 'error_log'): # If ZopeLite was imported, we have no default error_log from Products.SiteErrorLog.SiteErrorLog import SiteErrorLog self.app._setObject('error_log', SiteErrorLog()) self.app.manage_addDTMLMethod('doc', '') except: self.tearDown()
def initmaili(n): import Zope2 app = Zope2.app() try: import Products.BTreeFolder.BTreeFolder except: app.manage_addFolder(n) else: Products.BTreeFolder.BTreeFolder.manage_addBTreeFolder(app, n) transaction.commit() app._p_jar.close()