Coder Social home page Coder Social logo

Comments (3)

davisagli avatar davisagli commented on June 21, 2024

The current situation is that you can implement an IBlockFieldDeserializationTransformer adapter to do it for the specific blocks and fields where it is needed. For example plone.volto has one that handles fields named columns, hrefList, or slides: https://github.com/plone/plone.volto/blob/main/src/plone/volto/transforms.py#L45

The idea of handling this generically might be okay as long as:
a. the performance impact is not too bad
b. the volto team isn't concerned about the backwards incompatibility (transforming fields that were not transformed before)

I would feel better if it were based on a block schema so that we could do it only for the fields that we know are referencing object paths, rather than using a heuristic based on field name.

from plone.restapi.

JeffersonBledsoe avatar JeffersonBledsoe commented on June 21, 2024

@davisagli Fairly new to using the block transforms so forgive me for any lack of understanding:

a. the performance impact is not too bad

This is my biggest concern with the change. There's an initial PR linked to this issue if anybody wanted to test this against their bigger blocks

b. the volto team isn't concerned about the backwards incompatibility (transforming fields that were not transformed before)

While the actual data would change, a resolveuid should still return the same URL for a working link right? Would this be breaking or not?

I would feel better if it were based on a block schema so that we could do it only for the fields that we know are referencing object paths, rather than using a heuristic based on field name.

Completely agreed. However, we don't really have the notion of a URL field right? The only hint is the widget in the frontend when using Volto. Would we need some kind of formal schema (e.g. #923 or plone/volto#2252) support for blocks to achieve this?

For more specific use cases, I agree that it's probably best to have specific adapters for more specific use cases, but I image most sites would want resolveuid rather than just storing the path.

from plone.restapi.

davisagli avatar davisagli commented on June 21, 2024

@JeffersonBledsoe I will try to take another look at this during the Beethoven Sprint. I'm not too worried about the performance impact or backwards compatibility, and it would certainly help avoid the need for lots of custom adapters.

I also have an idea about storing some information during resolveuid deserialization to be used by the linkintegrity retriever instead of walking the blocks again, which could help recuperate any loss of performance.

One important note: we need a similar change to the serializer to make sure the resolveuid URLs actually get resolved when getting blocks content.

from plone.restapi.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.