Development¶
For full SDK integration documentation docs, see:
Development setup¶
A working development setup is provided with this package. To run it:
docker compose -f docker/docker-compose.yaml create --remove-orphans
docker compose -f docker/docker-compose.yaml start
make start61
This will start Collabora and build and start Plone. You will need to
define a host alias host.docker.internal, see below.
The collective.collabora:default profile configures the registry record
collective.collabora.collabora_server_url to point at the Collabora server URL.
No localhost¶
Use host.docker.internal instead of localhost.
Important
For this package to work you cannot access your Plone site on localhost.
Plone provides its own URL to Collabora, and Collabora performs callbacks on that URL. Obviously if Collabora tries to access localhost, it will reach itself and not Plone. Protections against this misconfiguration are built into the code.
Instead, add an alias in your /etc/hosts:
172.17.0.1 host.docker.internal
which binds to the docker bridge IP. This will enable COOL to connect to Plone.
Using a proxy to avoid CORS mode¶
The docker example deployment provided, also starts an Nginx server configured
to listen on http://host.docker.internal, which then proxies to both Plone
and Collabora.
To make that work for Collabora, you will need to manually configure the registry
record collective.collabora.server_url to http://host.docker.internal/collabora.
See Avoiding CORS in the deployment configuration section.
Adapting to custom file fields¶
The IStoredFile interface and adapters feature file_field_name powered
getattr/setattr access to the underlying file field of the context object.
This is intended to make it easier to support objects whose file field has
a name which is different from file: just subclass and provide the correct
file_field_name in your subclass; you won’t have to copy any of the actual logic.
Building, testing and CI¶
This package uses tox to drive buildout and test runners.
See the provided Makefile for some usage pointers.
To build and test all environments:
make all
To run a single development server:
make start61
To run all tests for only that environment:
tox -e py312-Plone61
To run a single test in a single environment and spawn a debugger:
tox -e py312-Plone61 -- -t your_test_substring -D -x
To run all linters in parallel:
tox -p -f lint
Github CI testing is configured in:
.github/workflows/plone-package.yml
For the tox CLI documentation, see:
Contributing¶
Please open an issue on Github if you have a problem. Provide a full description of the problem you’re encountering, including all necessary steps to reproduce.
To fix an issue, open a PR. Please make sure all tests pass locally:
tox -p
Running the tests locally ensures, that your changes do not break backward compatibility with older Plone versions running on Python 2.7.
Note
The Github actions CI runs only Python 3.x tests. It does not run Python 2.7 tests.