Metadata-Version: 2.4
Name: eea.api.layout
Version: 3.5
Summary: RestAPI @layout endpoint
Home-page: https://github.com/eea/eea.api.layout
Author: European Environment Agency: IDM2 A-Team
Author-email: eea-edw-a-team-alerts@googlegroups.com
License: GPL version 2
Keywords: EEA Add-ons Plone Zope
Classifier: Environment :: Web Environment
Classifier: Framework :: Plone
Classifier: Framework :: Plone :: Addon
Classifier: Framework :: Plone :: 4.3
Classifier: Framework :: Plone :: 5.2
Classifier: Framework :: Plone :: 6.0
Classifier: Programming Language :: Python
Classifier: Programming Language :: Python :: 2.7
Classifier: Programming Language :: Python :: 3.7
Classifier: Programming Language :: Python :: 3.8
Classifier: Programming Language :: Python :: 3.9
Classifier: Operating System :: OS Independent
Classifier: License :: OSI Approved :: GNU General Public License v2 (GPLv2)
Description-Content-Type: text/x-rst
Requires-Dist: setuptools
Provides-Extra: test
Requires-Dist: plone.app.testing; extra == "test"
Dynamic: author
Dynamic: author-email
Dynamic: classifier
Dynamic: description
Dynamic: description-content-type
Dynamic: home-page
Dynamic: keywords
Dynamic: license
Dynamic: provides-extra
Dynamic: requires-dist
Dynamic: summary

==========================
eea.api.layout
==========================
.. image:: https://ci.eionet.europa.eu/buildStatus/icon?job=eea/eea.api.layout/develop
  :target: https://ci.eionet.europa.eu/job/eea/job/eea.api.layout/job/develop/display/redirect
  :alt: Develop
.. image:: https://ci.eionet.europa.eu/buildStatus/icon?job=eea/eea.api.layout/master
  :target: https://ci.eionet.europa.eu/job/eea/job/eea.api.layout/job/master/display/redirect
  :alt: Master

The eea.api.layout is a Plone add-on

.. contents::


Main features
=============

1. Dexterity Content-Types **@layout** endpoint
2. **volto.blocks.fixed.layout** behavior with auto-sync support

Documentation
=============

* `Fixed Layout Block Synchronizer <https://github.com/eea/eea.api.layout/blob/develop/eea/api/layout/serializer/sync.rst>`_

Install
=======

* Add eea.api.layout to your eggs section in your buildout and
  re-run buildout::

    [buildout]
    eggs +=
      eea.api.layout

* You can download a sample buildout from:

  - https://github.com/eea/eea.api.layout/tree/master/buildouts/plone4
  - https://github.com/eea/eea.api.layout/tree/master/buildouts/plone5

* Or via docker::

    $ docker run --rm -p 8080:8080 -e ADDONS="eea.api.layout" plone

* Install *eea.api.layout* within Site Setup > Add-ons


Buildout installation
=====================

- `Plone 4+ <https://github.com/eea/eea.api.layout/tree/master/buildouts/plone4>`_
- `Plone 5+ <https://github.com/eea/eea.api.layout/tree/master/buildouts/plone5>`_


Source code
===========

- `Plone 4+ on github <https://github.com/eea/eea.api.layout>`_
- `Plone 5+ on github <https://github.com/eea/eea.api.layout>`_


Eggs repository
===============

- https://pypi.python.org/pypi/eea.api.layout
- http://eggrepo.eea.europa.eu/simple


Plone versions
==============
It has been developed and tested for Plone 4 and 5. See buildouts section above.


How to contribute
=================
See the `contribution guidelines (CONTRIBUTING.md) <https://github.com/eea/eea.api.layout/blob/master/CONTRIBUTING.md>`_.

Copyright and license
=====================

eea.api.layout (the Original Code) is free software; you can
redistribute it and/or modify it under the terms of the
GNU General Public License as published by the Free Software Foundation;
either version 2 of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
for more details.

You should have received a copy of the GNU General Public License along
with this program; if not, write to the Free Software Foundation, Inc., 59
Temple Place, Suite 330, Boston, MA 02111-1307 USA.

The Initial Owner of the Original Code is European Environment Agency (EEA).
Portions created by Eau de Web are Copyright (C) 2009 by
European Environment Agency. All Rights Reserved.


Funding
=======

EEA_ - European Environment Agency (EU)

.. _EEA: https://www.eea.europa.eu/

Secret Scanning
===============

This repository uses the Betterleaks GitHub Action to scan the current
repository content on every push and pull request. The scan uses the rules in
``.gitleaks.toml`` and uploads a ``betterleaks-report`` artifact when a finding
is detected.

If the optional SMTP secrets are configured, failed scans also send an email to
the last commit committer. The workflow expects these repository or
organization secrets:

- ``SMTP_URL``
- ``SMTP_PORT`` (optional, defaults to ``25``)
- ``SMTP_EMAIL``
- ``SMTP_PASSWORD`` (optional if the SMTP server does not require authentication)

Port ``465`` is sent with direct TLS; other ports use the default SMTP
handshake. The email includes a short finding summary from the redacted
Betterleaks report, including the redacted matched line from each finding.

There are three common outcomes:

1. Everything is OK. The ``Betterleaks / Scan for secrets`` check is green and
   no action is needed. Regular references to runtime values are OK, for example::

     token_from_cookie = request.cookies.get("auth_token")

2. A real secret was found. The check is red and the workflow log asks you to
   download the ``betterleaks-report`` artifact. Open the artifact from the
   GitHub Actions run and check the reported file, line and rule. Remove the
   committed value, move it to the proper secret store, and rotate it if it was
   exposed. A report entry looks like this::

     {
       "RuleID": "secret-literal-assignment",
       "File": "src/config.py",
       "StartLine": 12,
       "Secret": "[REDACTED]"
     }

3. The finding is a false positive. Keep the value only if it is clearly not
   sensitive, such as a test fixture, placeholder, or public example. Add
   ``betterleaks:allow`` on the same line and include a short explanation in the
   pull request::

     test_password = "admin"  #betterleaks:allow

Do not add ``betterleaks:allow`` to real credentials.

Changelog
=========

3.5 - (2026-07-13)
---------------------------
* Change: fix: SonarQube report - refs #305404
  [avoinea]

3.4 - (2026-04-14)
---------------------------
* Change: Add unit tests for serializer blocks logic
  [avoinea]

3.3 - (2025-11-18)
---------------------------
* Change: Replace Python linting to ruff
  [mihaidobrescu1111 = refs #286821]
* Change: Add plone6 tests
  [mihaidobrescu1111 = refs #293593]

3.2 - (2021-11-11)
---------------------------
* Change: Fixed package classifiers and python_requires
  [avoinea refs #139888]

3.1 - (2021-09-27)
---------------------------
* Change: Add `fields` to fixed layout properties (Metadata Section Block)
  [avoinea refs #139536]

3.0 - (2021-04-09)
---------------------------
* Feature: Add "Dexterity Fixed Layout" Control Panel to be able to configure fixed layout block properties and read-only block properties
  [avoinea]

2.3 - (2021-04-09)
---------------------------
* Feature: Apply ExtendedFixedLayoutSync by default on all blocks
  [avoinea]

2.2 - (2021-04-05)
---------------------------
* Feature: Add support for accordionPanel block and propagate readOnlySettings to sub-blocks
  [avoinea]

2.1 - (2021-04-03)
---------------------------
* Internal: Add doctests for fixed layout sync multi-adapter IFixedLayoutBlockSerializationSync
  [avoinea]

2.0 - (2021-04-02)
---------------------------
* Feature: Add "volto.blocks.fixed.layout" behavior with auto-sync support
  [avoinea]

1.0 - (2021-03-19)
------------------
* Blocks **@layout** endpoint
  [avoinea]
