django-shop icon indicating copy to clipboard operation
django-shop copied to clipboard

ProductRetrieveView:param:with_direct_siblings if True return product_pre, product_next to the context and direct_siblings in serializer

Open haricot opened this issue 4 years ago • 2 comments

Same things as the linked pull request #734 but reviewed in a simpler way.

haricot avatar Apr 07 '20 17:04 haricot

Otherwise change ProductRetrieveView.as_view in myshop.cms_app.CatalogListApp should be sufficient and in this case this pull request can be closed.

haricot avatar Apr 07 '20 20:04 haricot

Thanks for this pull request. Rendering the previous and next siblings of a product, may really be useful in some situations. Just some points I would have done differently:

  • Instead of using a tag named one_product, I would use something such as with_direct_siblings.
  • Don't change the semantics of the method get_object(), this should always return one and only one product. Instead add another method named say get_object_with_direct_siblings() .

But in general looking at your code, how does this view function behave, if someone filters by a certain product tag, or uses the search input field? Where is that information kept while rendering the product's detail view?

For this we have three possible solutions. Add this filtering information to the session, or to a cookie or as a request parameter. The latter generates ugly URLs for the detail view. Session could be problematic, because in django-SHOP the session_id is generated only after adding the first product to the cart, or as logged in user. So the remaining possibility is a cookie.

Let's discuss this on a chat.

jrief avatar Apr 07 '20 22:04 jrief