Skip to content

Import breaks if there isn't a global request #63

@davisagli

Description

@davisagli

This is from an add-on with a GS profile which tries to import content. When it is run by plone.app.robotframework's robot server, there is no global request set up.

Traceback:

Traceback (most recent call last):
  File "/Users/davisagli/Work/kitconcept-deepl/backend/.venv/bin/robot-server", line 10, in <module>
    sys.exit(server())
             ~~~~~~^^
  File "/Users/davisagli/Work/kitconcept-deepl/backend/.venv/lib/python3.13/site-packages/plone/app/robotframework/server.py", line 225, in server
    start(args.layer)
    ~~~~~^^^^^^^^^^^^
  File "/Users/davisagli/Work/kitconcept-deepl/backend/.venv/lib/python3.13/site-packages/plone/app/robotframework/server.py", line 54, in start
    zsl.start_zope_server(zope_layer_dotted_name)
    ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/davisagli/Work/kitconcept-deepl/backend/.venv/lib/python3.13/site-packages/plone/app/robotframework/server.py", line 279, in start_zope_server
    setup_layer(new_layer)
    ~~~~~~~~~~~^^^^^^^^^^^
  File "/Users/davisagli/Work/kitconcept-deepl/backend/.venv/lib/python3.13/site-packages/plone/app/robotframework/server.py", line 360, in setup_layer
    setup_layer(base, setup_layers)
    ~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^
  File "/Users/davisagli/Work/kitconcept-deepl/backend/.venv/lib/python3.13/site-packages/plone/app/robotframework/server.py", line 373, in setup_layer
    layer.setUp()
    ~~~~~~~~~~~^^
  File "/Users/davisagli/Work/kitconcept-deepl/backend/.venv/lib/python3.13/site-packages/plone/app/robotframework/testing.py", line 248, in setUp
    super().setUp()
    ~~~~~~~~~~~~~^^
  File "/Users/davisagli/Work/kitconcept-deepl/backend/.venv/lib/python3.13/site-packages/plone/app/testing/helpers.py", line 378, in setUp
    self.setUpPloneSite(portal)
    ~~~~~~~~~~~~~~~~~~~^^^^^^^^
  File "/Users/davisagli/Work/kitconcept-deepl/backend/.venv/lib/python3.13/site-packages/plone/app/robotframework/testing.py", line 243, in setUpPloneSite
    self.applyProfile(portal, name)
    ~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^
  File "/Users/davisagli/Work/kitconcept-deepl/backend/.venv/lib/python3.13/site-packages/plone/app/testing/helpers.py", line 436, in applyProfile
    return applyProfile(
        portal,
    ...<4 lines>...
        blacklisted_steps,
    )
  File "/Users/davisagli/Work/kitconcept-deepl/backend/.venv/lib/python3.13/site-packages/plone/app/testing/helpers.py", line 125, in applyProfile
    setupTool.runAllImportStepsFromProfile(
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
        profileId,
        ^^^^^^^^^^
    ...<3 lines>...
        blacklisted_steps=blacklisted_steps,
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    )
    ^
  File "/Users/davisagli/Work/kitconcept-deepl/backend/.venv/lib/python3.13/site-packages/Products/GenericSetup/tool.py", line 393, in runAllImportStepsFromProfile
    result = self._runImportStepsFromContext(
        purge_old=purge_old,
    ...<3 lines>...
        blacklisted_steps=blacklisted_steps,
        dependency_strategy=dependency_strategy)
  File "/Users/davisagli/Work/kitconcept-deepl/backend/.venv/lib/python3.13/site-packages/Products/GenericSetup/tool.py", line 1513, in _runImportStepsFromContext
    self._doRunHandler(post_handler)
    ~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^
  File "/Users/davisagli/Work/kitconcept-deepl/backend/.venv/lib/python3.13/site-packages/Products/GenericSetup/tool.py", line 1360, in _doRunHandler
    return handler_function(self)
  File "/Users/davisagli/Work/kitconcept-deepl/backend/src/kitconcept/deepl/setuphandlers/initial.py", line 23, in create_example_content
    for line in importer.import_site(EXAMPLE_CONTENT_FOLDER):
                ~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/davisagli/Work/kitconcept-deepl/backend/.venv/lib/python3.13/site-packages/plone/exportimport/importers/__init__.py", line 58, in import_site
    report.append(importer.import_data(path))
                  ~~~~~~~~~~~~~~~~~~~~^^^^^^
  File "/Users/davisagli/Work/kitconcept-deepl/backend/.venv/lib/python3.13/site-packages/plone/exportimport/importers/content.py", line 168, in import_data
    self.request[settings.IMPORT_PATH_KEY] = base_path
    ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^
TypeError: 'NoneType' object does not support item assignment

plone.exportimport could handle this better by getting the request from site.REQUEST

Or maybe we should fix it in plone.app.robotframework

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions