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", + # )