Exemple #1
0
    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)
Exemple #2
0
    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)
Exemple #3
0
    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)
Exemple #4
0
    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)
Exemple #5
0
    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
Exemple #6
0
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
Exemple #8
0
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()))
Exemple #9
0
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
Exemple #11
0
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
Exemple #13
0
    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 )
Exemple #14
0
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()
Exemple #15
0
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
Exemple #16
0
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)
Exemple #17
0
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()
Exemple #18
0
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
Exemple #20
0
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()))
Exemple #21
0
 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()
Exemple #22
0
    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()
Exemple #23
0
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
Exemple #24
0
    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
Exemple #25
0
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 __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
Exemple #27
0
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()
Exemple #28
0
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
Exemple #29
0
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)
Exemple #30
0
    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)
Exemple #31
0
    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
Exemple #32
0
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()
Exemple #33
0
    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>
Exemple #35
0
    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'
Exemple #38
0
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)
Exemple #39
0
    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)
Exemple #40
0
    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
Exemple #41
0
    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 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>
Exemple #43
0
 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 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
Exemple #45
0
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)
Exemple #46
0
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
Exemple #47
0
 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'])
Exemple #48
0
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)
Exemple #49
0
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 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
Exemple #52
0
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)
Exemple #54
0
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
Exemple #55
0
    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()
Exemple #56
0
 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()
Exemple #57
0
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()