diff --git a/Makefile b/Makefile
index 0f64a30d52..18e989cc30 100644
--- a/Makefile
+++ b/Makefile
@@ -3,7 +3,7 @@
SHELL := /bin/bash
CURRENT_DIR:=$(shell dirname $(realpath $(lastword $(MAKEFILE_LIST))))
-version = 3.7
+version = 3
# We like colors
# From: https://coderwall.com/p/izxssa/colored-makefile-for-golang-projects
diff --git a/performance.jmx b/performance.jmx
index 2bdf608828..81bc645f6c 100644
--- a/performance.jmx
+++ b/performance.jmx
@@ -977,6 +977,33 @@
+
+
+
+
+ false
+ application/json
+ =
+ true
+ Accept
+
+
+
+
+
+
+
+ /Plone/${testfolder-read}/document?fullobjects
+ GET
+ true
+ false
+ true
+ false
+
+
+
+
+
@@ -1395,6 +1422,731 @@
+
+ continue
+
+ false
+ 1
+
+ 1
+ 1
+ 1463570296000
+ 1463570296000
+ false
+
+
+ true
+
+
+
+
+
+
+ false
+
+ =
+ true
+
+
+
+ localhost
+ 12345
+ http
+
+ /Plone/${testfolder}/
+ 4
+
+
+
+
+
+
+
+ Accept
+ application/json
+
+
+
+
+
+ false
+
+
+
+
+
+
+
+
+
+
+ /Plone/${testfolder-read}/volto-page/image1/@@images/image/large
+ GET
+ true
+ false
+ true
+ false
+
+
+
+
+
+
+
+
+
+
+
+
+
+ /Plone/${testfolder-read}/volto-page/image2/@@images/image/large
+ GET
+ true
+ false
+ true
+ false
+
+
+
+
+
+
+
+
+
+
+
+
+
+ /Plone/${testfolder-read}/volto-page/image3/@@images/image/large
+ GET
+ true
+ false
+ true
+ false
+
+
+
+
+
+
+
+
+
+
+
+
+
+ /Plone/${testfolder-read}/volto-page/image4/@@images/image/large
+ GET
+ true
+ false
+ true
+ false
+
+
+
+
+
+
+
+
+
+
+
+
+
+ /Plone/${testfolder-read}/volto-page/image5/@@images/image/large
+ GET
+ true
+ false
+ true
+ false
+
+
+
+
+
+
+
+
+
+
+
+
+
+ /Plone/${testfolder-read}/volto-page/image6/@@images/image/large
+ GET
+ true
+ false
+ true
+ false
+
+
+
+
+
+
+
+
+
+
+
+
+
+ /Plone/${testfolder-read}/volto-page/image7/@@images/image/large
+ GET
+ true
+ false
+ true
+ false
+
+
+
+
+
+
+
+
+
+
+
+
+
+ /Plone/${testfolder-read}/volto-page/image8/@@images/image/large
+ GET
+ true
+ false
+ true
+ false
+
+
+
+
+
+
+
+
+
+
+
+
+
+ /Plone/${testfolder-read}/volto-page/image9/@@images/image/large
+ GET
+ true
+ false
+ true
+ false
+
+
+
+
+
+
+
+
+
+
+
+
+
+ /Plone/${testfolder-read}/volto-page/image10/@@images/image/large
+ GET
+ true
+ false
+ true
+ false
+
+
+
+
+
+
+
+
+
+
+
+
+
+ /Plone/${testfolder-read}/volto-page/image11/@@images/image/preview
+ GET
+ true
+ false
+ true
+ false
+
+
+
+
+
+
+
+
+
+
+
+
+
+ /Plone/${testfolder-read}/volto-page/image12/@@images/image/preview
+ GET
+ true
+ false
+ true
+ false
+
+
+
+
+
+
+
+
+
+
+
+
+
+ /Plone/${testfolder-read}/volto-page/image13/@@images/image/preview
+ GET
+ true
+ false
+ true
+ false
+
+
+
+
+
+
+
+
+
+
+
+
+
+ /Plone/${testfolder-read}/volto-page/image14/@@images/image/preview
+ GET
+ true
+ false
+ true
+ false
+
+
+
+
+
+
+
+
+
+
+
+
+
+ /Plone/${testfolder-read}/volto-page/image15/@@images/image/preview
+ GET
+ true
+ false
+ true
+ false
+
+
+
+
+
+
+
+
+
+
+
+
+
+ /Plone/${testfolder-read}/volto-page/image16/@@images/image/preview
+ GET
+ true
+ false
+ true
+ false
+
+
+
+
+
+
+
+
+
+
+
+
+
+ /Plone/${testfolder-read}/volto-page/image17/@@images/image/preview
+ GET
+ true
+ false
+ true
+ false
+
+
+
+
+
+
+
+
+
+
+
+
+
+ /Plone/${testfolder-read}/volto-page/image18/@@images/image/preview
+ GET
+ true
+ false
+ true
+ false
+
+
+
+
+
+
+
+
+
+
+
+
+
+ /Plone/${testfolder-read}/volto-page/image19/@@images/image/preview
+ GET
+ true
+ false
+ true
+ false
+
+
+
+
+
+
+
+
+
+
+
+
+
+ /Plone/${testfolder-read}/volto-page/image20/@@images/image/preview
+ GET
+ true
+ false
+ true
+ false
+
+
+
+
+
+
+
+
+
+
+
+
+
+ /Plone/${testfolder-read}/volto-page/image21/@@images/image
+ GET
+ true
+ false
+ true
+ false
+
+
+
+
+
+
+
+
+
+
+
+
+
+ /Plone/${testfolder-read}/volto-page/image22/@@images/image
+ GET
+ true
+ false
+ true
+ false
+
+
+
+
+
+
+
+
+
+
+
+
+
+ /Plone/${testfolder-read}/volto-page/image23/@@images/image
+ GET
+ true
+ false
+ true
+ false
+
+
+
+
+
+
+
+
+
+
+
+
+
+ /Plone/${testfolder-read}/volto-page/image24/@@images/image
+ GET
+ true
+ false
+ true
+ false
+
+
+
+
+
+
+
+
+
+
+
+
+
+ /Plone/${testfolder-read}/volto-page/image25/@@images/image
+ GET
+ true
+ false
+ true
+ false
+
+
+
+
+
+
+
+
+
+
+
+
+
+ /Plone/${testfolder-read}/volto-page/image26/@@images/image
+ GET
+ true
+ false
+ true
+ false
+
+
+
+
+
+
+
+
+
+
+
+
+
+ /Plone/${testfolder-read}/volto-page/image27/@@images/image
+ GET
+ true
+ false
+ true
+ false
+
+
+
+
+
+
+
+
+
+
+
+
+
+ /Plone/${testfolder-read}/volto-page/image28/@@images/image
+ GET
+ true
+ false
+ true
+ false
+
+
+
+
+
+
+
+
+
+
+
+
+
+ /Plone/${testfolder-read}/volto-page/image29/@@images/image
+ GET
+ true
+ false
+ true
+ false
+
+
+
+
+
+
+
+
+
+
+
+
+
+ /Plone/${testfolder-read}/volto-page/image30/@@images/image
+ GET
+ true
+ false
+ true
+ false
+
+
+
+
+
+
+
+ false
+
+ saveConfig
+
+
+ true
+ true
+ true
+
+ true
+ true
+ true
+ true
+ false
+ true
+ true
+ false
+ false
+ false
+ true
+ false
+ false
+ false
+ true
+ 0
+ true
+ true
+ true
+ true
+ true
+ true
+
+
+
+
+
+
+ false
+
+ saveConfig
+
+
+ true
+ true
+ true
+
+ true
+ true
+ true
+ true
+ false
+ true
+ true
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ 0
+ true
+ true
+
+
+
+
+
+
+ false
+
+ saveConfig
+
+
+ true
+ true
+ true
+
+ true
+ true
+ true
+ true
+ false
+ true
+ true
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ 0
+ true
+ true
+
+
+
+
+
+
continue
diff --git a/plone-5.2.x.cfg b/plone-5.2.x.cfg
index 4614964389..c8025c7080 100644
--- a/plone-5.2.x.cfg
+++ b/plone-5.2.x.cfg
@@ -4,3 +4,6 @@ extends =
http://dist.plone.org/release/5.2.1/versions.cfg
find-links += http://dist.plone.org/thirdparty/
versions=versions
+
+[versions]
+plone.restapi =
\ No newline at end of file
diff --git a/src/plone/restapi/tests/image.jpeg b/src/plone/restapi/tests/image.jpeg
new file mode 100644
index 0000000000..e6ee81681a
Binary files /dev/null and b/src/plone/restapi/tests/image.jpeg differ
diff --git a/src/plone/restapi/tests/performance.py b/src/plone/restapi/tests/performance.py
index cc9513f764..4bb7725e58 100644
--- a/src/plone/restapi/tests/performance.py
+++ b/src/plone/restapi/tests/performance.py
@@ -2,6 +2,7 @@
from datetime import datetime
from plone.app.textfield.value import RichTextValue
from plone.dexterity.interfaces import IDexterityContent
+from plone.namedfile.file import NamedBlobImage
from Products.CMFCore.utils import getToolByName
from six.moves import range
from zope.component.hooks import getSite
@@ -36,8 +37,7 @@ def set_image(obj):
from plone.namedfile.file import NamedBlobImage
filename = os.path.join(os.path.dirname(__file__), u"image.png")
- obj.image = NamedBlobImage(
- data=open(filename, "rb").read(), filename=filename)
+ obj.image = NamedBlobImage(data=open(filename, "rb").read(), filename=filename)
else:
filename = os.path.join(os.path.dirname(__file__), u"image.png")
obj.setImage(open(filename, "rb").read())
@@ -74,13 +74,11 @@ def step_setup_content(context):
portal = getSite()
# Testfolder WRITE
- portal.invokeFactory("Folder", id="testfolder-write",
- title="Testfolder Write")
+ portal.invokeFactory("Folder", id="testfolder-write", title="Testfolder Write")
publish(portal["testfolder-write"])
# Testfolder READ
- portal.invokeFactory("Folder", id="testfolder-read",
- title="Testfolder Read")
+ portal.invokeFactory("Folder", id="testfolder-read", title="Testfolder Read")
publish(portal["testfolder-read"])
portal = portal["testfolder-read"]
@@ -105,8 +103,7 @@ def step_setup_content(context):
publish(portal.folder)
# Folder with 10 Items
- portal.invokeFactory(
- "Folder", id="folder-with-10-items", title="Folder 10")
+ portal.invokeFactory("Folder", id="folder-with-10-items", title="Folder 10")
folder10 = portal["folder-with-10-items"]
set_description(folder10)
publish(folder10)
@@ -117,8 +114,7 @@ def step_setup_content(context):
publish(folder10["doc{}".format(i)])
# Folder with 100 Items
- portal.invokeFactory(
- "Folder", id="folder-with-100-items", title="Folder 100")
+ portal.invokeFactory("Folder", id="folder-with-100-items", title="Folder 100")
folder100 = portal["folder-with-100-items"]
set_description(folder100)
publish(folder100)
@@ -129,8 +125,7 @@ def step_setup_content(context):
publish(folder100["doc{}".format(i)])
# Folder with 1000 Items
- portal.invokeFactory(
- "Folder", id="folder-with-1000-items", title="Folder 1000")
+ portal.invokeFactory("Folder", id="folder-with-1000-items", title="Folder 1000")
folder1000 = portal["folder-with-1000-items"]
set_description(folder1000)
publish(folder1000)
@@ -141,8 +136,11 @@ def step_setup_content(context):
publish(folder1000["doc{}".format(i)])
# Folder with 10 Items and next/previous enabled
- portal.invokeFactory("Folder", id="folder-with-10-items-next-prev-enabled",
- title="Folder 10 (next/prev enabled)")
+ portal.invokeFactory(
+ "Folder",
+ id="folder-with-10-items-next-prev-enabled",
+ title="Folder 10 (next/prev enabled)",
+ )
folder10np = portal["folder-with-10-items-next-prev-enabled"]
folder10np.nextPreviousEnabled = True
set_description(folder10np)
@@ -202,3 +200,326 @@ def step_setup_content(context):
portal.invokeFactory("File", id="file", title="File")
set_description(portal.file)
set_file(portal.file)
+
+ # Volto Page with images
+ portal.invokeFactory("Folder", id="volto-page", title="Volto Page")
+ volto_page = portal.get("volto-page")
+ publish(volto_page)
+ for i in range(1, 31):
+ volto_page.invokeFactory(
+ "Image", id="image{}".format(i), title="Image {}".format(i)
+ )
+ image_file = os.path.join(os.path.dirname(__file__), u"image.jpeg")
+ with open(image_file, "rb") as f:
+ image_data = f.read()
+ volto_page.get("image{}".format(i)).image = NamedBlobImage(
+ data=image_data, contentType="image/jpeg", filename=u"image.jpeg"
+ )
+
+ # Volto
+ # portal.invokeFactory("Document", id="volto", title="Volto")
+ # portal.volto.description = LOREMIPSUM_TEXT_PARAGRAPH
+ volto_page.blocks = {
+ "0d57ccc7-8ceb-4b8f-bf95-5919eb859925": {
+ "@type": "text",
+ "text": {
+ "blocks": [
+ {
+ "data": {},
+ "depth": 0,
+ "entityRanges": [],
+ "inlineStyleRanges": [],
+ "key": "4q33c",
+ "text": "Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. ",
+ "type": "unstyled",
+ }
+ ],
+ "entityMap": {},
+ },
+ },
+ "2172b929-70de-416b-b345-b98916a9726f": {
+ "@type": "image",
+ "alt": "jamie-street-PzGiZBpv72Y-unsplash.jpg",
+ "url": "http://localhost:8080/Plone/page/jamie-street-pzgizbpv72y-unsplash.jpg",
+ },
+ "23dd130c-d90e-48d8-ab5a-9fb85a2136a4": {
+ "@type": "image",
+ "alt": "anastasia-petrova-xu2WYJek5AI-unsplash.jpg",
+ "url": "http://localhost:8080/Plone/page/anastasia-petrova-xu2wyjek5ai-unsplash.jpg",
+ },
+ "23e99d38-da30-441b-8713-bbbad4344a85": {
+ "@type": "image",
+ "alt": "matt-artz-oSly6rQh7YA-unsplash.jpg",
+ "url": "http://localhost:8080/Plone/page/matt-artz-osly6rqh7ya-unsplash.jpg",
+ },
+ "24b5b799-d755-4e43-97f5-e240d6b3b7df": {
+ "@type": "image",
+ "alt": "christopher-windus-ys_PVhkEC6c-unsplash.jpg",
+ "url": "http://localhost:8080/Plone/page/christopher-windus-ys_pvhkec6c-unsplash.jpg",
+ },
+ "28b1c856-4ecd-4c43-bce5-9be127f29a34": {
+ "@type": "text",
+ "text": {
+ "blocks": [
+ {
+ "data": {},
+ "depth": 0,
+ "entityRanges": [],
+ "inlineStyleRanges": [],
+ "key": "c0mrv",
+ "text": "Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. ",
+ "type": "unstyled",
+ }
+ ],
+ "entityMap": {},
+ },
+ },
+ "2e005fdb-a109-4148-b78c-855dab1e83a9": {
+ "@type": "text",
+ "text": {
+ "blocks": [
+ {
+ "data": {},
+ "depth": 0,
+ "entityRanges": [],
+ "inlineStyleRanges": [],
+ "key": "b6u11",
+ "text": "Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. ",
+ "type": "unstyled",
+ }
+ ],
+ "entityMap": {},
+ },
+ },
+ "367aacb2-8124-43ce-8989-c9394b71ba97": {
+ "@type": "image",
+ "alt": "hector-j-rivas-QNc9tTNHRyI-unsplash.jpg",
+ "url": "http://localhost:8080/Plone/page/hector-j-rivas-qnc9ttnhryi-unsplash.jpg",
+ },
+ "374bcb3f-d6c7-4ec0-9a26-aa9ee148a22a": {
+ "@type": "text",
+ "text": {
+ "blocks": [
+ {
+ "data": {},
+ "depth": 0,
+ "entityRanges": [],
+ "inlineStyleRanges": [],
+ "key": "6o8vv",
+ "text": "Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. ",
+ "type": "unstyled",
+ }
+ ],
+ "entityMap": {},
+ },
+ },
+ "38076104-d93a-4e25-b2b6-7917be41dd48": {
+ "@type": "image",
+ "alt": "jukan-tateisi-bJhT_8nbUA0-unsplash.jpg",
+ "url": "http://localhost:8080/Plone/page/jukan-tateisi-bjht_8nbua0-unsplash.jpg",
+ },
+ "4664c4dc-89a2-4dd0-9267-ab4ff65af757": {
+ "@type": "image",
+ "alt": "max-kukurudziak-MedRVIJX2P0-unsplash.jpg",
+ "url": "http://localhost:8080/Plone/page/max-kukurudziak-medrvijx2p0-unsplash.jpg",
+ },
+ "4b07582a-771a-4ce9-92bf-456e33134dd3": {
+ "@type": "image",
+ "alt": "daniel-cheung-cPF2nlWcMY4-unsplash.jpg",
+ "url": "http://localhost:8080/Plone/page/daniel-cheung-cpf2nlwcmy4-unsplash.jpg",
+ },
+ "5c4e9474-0ccb-45a4-a91d-5eba411e43ef": {
+ "@type": "text",
+ "text": {
+ "blocks": [
+ {
+ "data": {},
+ "depth": 0,
+ "entityRanges": [],
+ "inlineStyleRanges": [],
+ "key": "98gs2",
+ "text": "Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. ",
+ "type": "unstyled",
+ }
+ ],
+ "entityMap": {},
+ },
+ },
+ "6ab1e289-f46a-495f-b07d-6967c436e369": {
+ "@type": "text",
+ "text": {
+ "blocks": [
+ {
+ "data": {},
+ "depth": 0,
+ "entityRanges": [],
+ "inlineStyleRanges": [],
+ "key": "f0er1",
+ "text": "Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. ",
+ "type": "unstyled",
+ }
+ ],
+ "entityMap": {},
+ },
+ },
+ "7471143d-70da-493c-b3c5-56a021407bed": {"@type": "title"},
+ "7550e1c3-03b9-432a-bdd1-2d2f33ef6d68": {
+ "@type": "image",
+ "alt": "clem-onojeghuo-RfAEjh_J6e0-unsplash.jpg",
+ "url": "http://localhost:8080/Plone/page/clem-onojeghuo-rfaejh_j6e0-unsplash.jpg",
+ },
+ "828b9212-2b98-4192-92bd-ac6acc08b01f": {
+ "@type": "image",
+ "alt": "daniel-von-appen-tb4heMa-ZRo-unsplash.jpg",
+ "url": "http://localhost:8080/Plone/page/daniel-von-appen-tb4hema-zro-unsplash.jpg",
+ },
+ "82b244cc-25fd-41c7-91bd-d8aea6540b61": {
+ "@type": "image",
+ "alt": "cristina-gottardi-Pl8ZMtFiyi8-unsplash.jpg",
+ "url": "http://localhost:8080/Plone/page/cristina-gottardi-pl8zmtfiyi8-unsplash.jpg",
+ },
+ "976bea21-fe53-477f-b1a8-47fd51d88492": {
+ "@type": "text",
+ "text": {
+ "blocks": [
+ {
+ "data": {},
+ "depth": 0,
+ "entityRanges": [],
+ "inlineStyleRanges": [],
+ "key": "3m6c5",
+ "text": "Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. ",
+ "type": "unstyled",
+ }
+ ],
+ "entityMap": {},
+ },
+ },
+ "9d1f39db-dfe5-4315-9306-1be2738e0068": {
+ "@type": "text",
+ "text": {
+ "blocks": [
+ {
+ "data": {},
+ "depth": 0,
+ "entityRanges": [],
+ "inlineStyleRanges": [],
+ "key": "4q22n",
+ "text": "Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. ",
+ "type": "unstyled",
+ }
+ ],
+ "entityMap": {},
+ },
+ },
+ "a1fafe33-f85f-46fa-919a-19111a8bde52": {
+ "@type": "image",
+ "alt": "doug-linstedt-q07oPCdhPlw-unsplash.jpg",
+ "url": "http://localhost:8080/Plone/page/doug-linstedt-q07opcdhplw-unsplash.jpg",
+ },
+ "c513539d-3b75-4f36-baa3-7145324f79ff": {
+ "@type": "text",
+ "text": {
+ "blocks": [
+ {
+ "data": {},
+ "depth": 0,
+ "entityRanges": [],
+ "inlineStyleRanges": [],
+ "key": "1l2bg",
+ "text": "Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. ",
+ "type": "unstyled",
+ }
+ ],
+ "entityMap": {},
+ },
+ },
+ "cce67a5b-3dae-4e78-9352-7ccb24bb16a5": {
+ "@type": "image",
+ "alt": "christian-regg-jOicNGJIwZA-unsplash.jpg",
+ "url": "http://localhost:8080/Plone/page/christian-regg-joicngjiwza-unsplash.jpg",
+ },
+ "d43abdc7-29c4-4cae-b3ed-443c87c449cd": {
+ "@type": "text",
+ "text": {
+ "blocks": [
+ {
+ "data": {},
+ "depth": 0,
+ "entityRanges": [],
+ "inlineStyleRanges": [],
+ "key": "8iog5",
+ "text": "Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. ",
+ "type": "unstyled",
+ }
+ ],
+ "entityMap": {},
+ },
+ },
+ "dc517784-5cfc-4cf8-8fad-15fd154cd43a": {
+ "@type": "image",
+ "alt": "john-barkiple-l090uFWoPaI-unsplash.jpg",
+ "url": "http://localhost:8080/Plone/page/john-barkiple-l090ufwopai-unsplash.jpg",
+ },
+ "e44ec113-a62d-4913-89d0-ba8d7e50d248": {
+ "@type": "image",
+ "alt": "denny-muller-jLjfAWwHdB8-unsplash.jpg",
+ "url": "http://localhost:8080/Plone/page/denny-muller-jljfawwhdb8-unsplash.jpg",
+ },
+ }
+ volto_page.blocks_layout = {
+ "items": [
+ "7471143d-70da-493c-b3c5-56a021407bed",
+ "7550e1c3-03b9-432a-bdd1-2d2f33ef6d68",
+ "23dd130c-d90e-48d8-ab5a-9fb85a2136a4",
+ "cce67a5b-3dae-4e78-9352-7ccb24bb16a5",
+ "24b5b799-d755-4e43-97f5-e240d6b3b7df",
+ "82b244cc-25fd-41c7-91bd-d8aea6540b61",
+ "4b07582a-771a-4ce9-92bf-456e33134dd3",
+ "828b9212-2b98-4192-92bd-ac6acc08b01f",
+ "e44ec113-a62d-4913-89d0-ba8d7e50d248",
+ "a1fafe33-f85f-46fa-919a-19111a8bde52",
+ "367aacb2-8124-43ce-8989-c9394b71ba97",
+ "2172b929-70de-416b-b345-b98916a9726f",
+ "dc517784-5cfc-4cf8-8fad-15fd154cd43a",
+ "38076104-d93a-4e25-b2b6-7917be41dd48",
+ "23e99d38-da30-441b-8713-bbbad4344a85",
+ "4664c4dc-89a2-4dd0-9267-ab4ff65af757",
+ "374bcb3f-d6c7-4ec0-9a26-aa9ee148a22a",
+ "c513539d-3b75-4f36-baa3-7145324f79ff",
+ "28b1c856-4ecd-4c43-bce5-9be127f29a34",
+ "6ab1e289-f46a-495f-b07d-6967c436e369",
+ "2e005fdb-a109-4148-b78c-855dab1e83a9",
+ "d43abdc7-29c4-4cae-b3ed-443c87c449cd",
+ "5c4e9474-0ccb-45a4-a91d-5eba411e43ef",
+ "976bea21-fe53-477f-b1a8-47fd51d88492",
+ "9d1f39db-dfe5-4315-9306-1be2738e0068",
+ "0d57ccc7-8ceb-4b8f-bf95-5919eb859925",
+ ]
+ }
+ publish(volto_page)
+ volto_page.reindexObject()
+
+ # # add images
+ # from os import listdir
+ # from os.path import isfile, join
+
+ # currentdir = os.path.dirname(__file__)
+ # base_image_path = os.path.join(currentdir, "performance")
+ # filenames = [
+ # f for f in listdir(base_image_path) if isfile(join(base_image_path, f))
+ # ]
+ # for filename in filenames:
+ # imagepath = os.path.join(base_image_path, filename)
+ # volto_page.invokeFactory("Image", id=filename, title=filename)
+ # import sys
+ # import pdb
+
+ # for attr in ("stdin", "stdout", "stderr"):
+ # setattr(sys, attr, getattr(sys, "__%s__" % attr))
+ # pdb.set_trace()
+ # portal.volto[filename].image = NamedBlobImage(
+ # data=open(filename, "r").read(),
+ # filename=imagepath,
+ # contentType="image/jpeg",
+ # )