plone / plone/plone.exportimport

Import breaks if there isn't a global request

Open
#63 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Dominant language
Python
Stars
2
Forks
3
Avg merge
21h 16m
Merged PRs (30d)
1

Description

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

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start with kitconcept/deepl/setuphandlers/initial.py and the import_data path in plone/exportimport/importers/content.py, then reproduce the profile setup through plone.app.robotframework's robot server. Determine how the importer behaves without a global request and verify that the example-content import completes successfully in that context.

Written by the indexing model from the issue text.

Assessment

Tech stack
python
Domain
backend
Issue type
Bug
Difficulty
3/5
Estimated time
1-2 days
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
42/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.