gitextract_ql1pgvwn/ ├── .github/ │ └── workflows/ │ ├── ci.yml │ └── semgroup-rules.yml ├── .gitignore ├── LICENSE ├── README.md ├── pyproject.toml └── webshop/ ├── __init__.py ├── config/ │ └── __init__.py ├── hooks.py ├── modules.txt ├── patches/ │ ├── __init__.py │ ├── add_homepage_field.py │ ├── clear_cache_for_item_group_route.py │ ├── convert_to_website_item_in_item_card_group_template.py │ ├── copy_custom_field_filters_to_website_item.py │ ├── create_website_items.py │ ├── enable_allow_to_guest_view_for_item_group.py │ ├── fetch_thumbnail_in_website_items.py │ ├── make_homepage_products_website_items.py │ ├── populate_e_commerce_settings.py │ └── shopping_cart_to_ecommerce.py ├── patches.txt ├── public/ │ ├── .gitkeep │ ├── js/ │ │ ├── customer_reviews.js │ │ ├── init.js │ │ ├── override/ │ │ │ ├── homepage.js │ │ │ └── item.js │ │ ├── product_ui/ │ │ │ ├── grid.js │ │ │ ├── list.js │ │ │ ├── search.js │ │ │ └── views.js │ │ ├── shopping_cart.js │ │ └── wishlist.js │ ├── scss/ │ │ ├── webshop-web.bundle.scss │ │ └── webshop_cart.scss │ └── web.bundle.js ├── setup/ │ └── install.py ├── templates/ │ ├── __init__.py │ ├── generators/ │ │ ├── item/ │ │ │ ├── item.html │ │ │ ├── item_add_to_cart.html │ │ │ ├── item_configure.html │ │ │ ├── item_configure.js │ │ │ ├── item_details.html │ │ │ ├── item_image.html │ │ │ ├── item_inquiry.html │ │ │ ├── item_inquiry.js │ │ │ ├── item_reviews.html │ │ │ └── item_specifications.html │ │ └── item_group.html │ ├── includes/ │ │ ├── cart/ │ │ │ ├── address_card.html │ │ │ ├── address_picker_card.html │ │ │ ├── cart_address.html │ │ │ ├── cart_address_picker.html │ │ │ ├── cart_dropdown.html │ │ │ ├── cart_items.html │ │ │ ├── cart_items_dropdown.html │ │ │ ├── cart_items_total.html │ │ │ ├── cart_macros.html │ │ │ ├── cart_payment_summary.html │ │ │ ├── coupon_code.html │ │ │ └── place_order.html │ │ ├── macros.html │ │ ├── navbar/ │ │ │ └── navbar_items.html │ │ ├── order/ │ │ │ ├── order_macros.html │ │ │ └── order_taxes.html │ │ └── product_page.js │ └── pages/ │ ├── __init__.py │ ├── cart.html │ ├── cart.js │ ├── cart.py │ ├── customer_reviews.html │ ├── customer_reviews.py │ ├── order.html │ ├── order.js │ ├── order.py │ ├── product_search.html │ ├── product_search.py │ ├── wishlist.html │ └── wishlist.py ├── webshop/ │ ├── __init__.py │ ├── api.py │ ├── crud_events/ │ │ ├── __init__.py │ │ ├── item/ │ │ │ ├── __init__.py │ │ │ ├── invalidate_item_variants_cache.py │ │ │ ├── update_website_item.py │ │ │ └── validate_duplicate_website_item.py │ │ ├── price_list/ │ │ │ ├── __init__.py │ │ │ └── check_impact_on_cart.py │ │ ├── quotation/ │ │ │ ├── __init__.py │ │ │ └── validate_shopping_cart_items.py │ │ └── tax_rule/ │ │ ├── __init__.py │ │ └── validate_use_for_cart.py │ ├── doctype/ │ │ ├── __init__.py │ │ ├── homepage_featured_product/ │ │ │ ├── __init__.py │ │ │ ├── homepage_featured_product.json │ │ │ └── homepage_featured_product.py │ │ ├── item_review/ │ │ │ ├── __init__.py │ │ │ ├── item_review.js │ │ │ ├── item_review.json │ │ │ ├── item_review.py │ │ │ └── test_item_review.py │ │ ├── override_doctype/ │ │ │ ├── __init__.py │ │ │ ├── item.py │ │ │ ├── item_group.py │ │ │ └── payment_request.py │ │ ├── recommended_items/ │ │ │ ├── __init__.py │ │ │ ├── recommended_items.json │ │ │ └── recommended_items.py │ │ ├── webshop_settings/ │ │ │ ├── __init__.py │ │ │ ├── test_webshop_settings.py │ │ │ ├── webshop_settings.js │ │ │ ├── webshop_settings.json │ │ │ └── webshop_settings.py │ │ ├── website_item/ │ │ │ ├── __init__.py │ │ │ ├── templates/ │ │ │ │ ├── website_item.html │ │ │ │ └── website_item_row.html │ │ │ ├── test_website_item.py │ │ │ ├── website_item.js │ │ │ ├── website_item.json │ │ │ ├── website_item.py │ │ │ └── website_item_list.js │ │ ├── website_item_tabbed_section/ │ │ │ ├── __init__.py │ │ │ ├── website_item_tabbed_section.json │ │ │ └── website_item_tabbed_section.py │ │ ├── website_offer/ │ │ │ ├── __init__.py │ │ │ ├── website_offer.json │ │ │ └── website_offer.py │ │ ├── wishlist/ │ │ │ ├── __init__.py │ │ │ ├── test_wishlist.py │ │ │ ├── wishlist.js │ │ │ ├── wishlist.json │ │ │ └── wishlist.py │ │ └── wishlist_item/ │ │ ├── __init__.py │ │ ├── wishlist_item.json │ │ └── wishlist_item.py │ ├── legacy_search.py │ ├── product_data_engine/ │ │ ├── filters.py │ │ ├── query.py │ │ ├── test_item_group_product_data_engine.py │ │ └── test_product_data_engine.py │ ├── redisearch_utils.py │ ├── shopping_cart/ │ │ ├── __init__.py │ │ ├── cart.py │ │ ├── product_info.py │ │ ├── test_shopping_cart.py │ │ └── utils.py │ ├── utils/ │ │ ├── __init__.py │ │ ├── portal.py │ │ ├── product.py │ │ └── setup.py │ ├── variant_selector/ │ │ ├── __init__.py │ │ ├── item_variants_cache.py │ │ ├── test_variant_selector.py │ │ └── utils.py │ └── web_template/ │ ├── __init__.py │ ├── hero_slider/ │ │ ├── __init__.py │ │ ├── hero_slider.html │ │ └── hero_slider.json │ ├── item_card_group/ │ │ ├── __init__.py │ │ ├── item_card_group.html │ │ └── item_card_group.json │ ├── product_card/ │ │ ├── __init__.py │ │ ├── product_card.html │ │ └── product_card.json │ └── product_category_cards/ │ ├── __init__.py │ ├── product_category_cards.html │ └── product_category_cards.json └── www/ ├── __init__.py ├── all-products/ │ ├── __init__.py │ ├── index.html │ ├── index.js │ ├── index.py │ └── not_found.html └── shop-by-category/ ├── __init__.py ├── category_card_section.html ├── index.html ├── index.js └── index.py