SYMBOL INDEX (442 symbols across 70 files) FILE: webshop/patches/add_homepage_field.py function execute (line 5) | def execute(): FILE: webshop/patches/clear_cache_for_item_group_route.py function execute (line 4) | def execute(): FILE: webshop/patches/convert_to_website_item_in_item_card_group_template.py function execute (line 9) | def execute(): function generate_fields_to_edit (line 45) | def generate_fields_to_edit() -> List: function make_new_website_item (line 53) | def make_new_website_item(item: str) -> Union[str, None]: FILE: webshop/patches/copy_custom_field_filters_to_website_item.py function execute (line 6) | def execute(): FILE: webshop/patches/create_website_items.py function execute (line 6) | def execute(): FILE: webshop/patches/enable_allow_to_guest_view_for_item_group.py function execute (line 4) | def execute(): FILE: webshop/patches/fetch_thumbnail_in_website_items.py function execute (line 4) | def execute(): FILE: webshop/patches/make_homepage_products_website_items.py function execute (line 4) | def execute(): FILE: webshop/patches/populate_e_commerce_settings.py function execute (line 6) | def execute(): FILE: webshop/patches/shopping_cart_to_ecommerce.py function execute (line 5) | def execute(): FILE: webshop/public/js/customer_reviews.js class CustomerReviews (line 2) | class CustomerReviews { method constructor (line 3) | constructor() { method bind_button_actions (line 9) | bind_button_actions() { method write_review (line 14) | write_review() { method view_more (line 59) | view_more() { method get_user_review_html (line 92) | get_user_review_html(reviews) { method get_review_stars (line 123) | get_review_stars(rating) { FILE: webshop/public/js/product_ui/grid.js method constructor (line 8) | constructor(options) { method make (line 19) | make() { method get_image_html (line 37) | get_image_html(item, title) { method get_card_body_html (line 61) | get_card_body_html(item, title, settings) { method get_title (line 93) | get_title(item, title) { method get_wishlist_icon (line 104) | get_wishlist_icon(item) { method get_cart_indicator (line 116) | get_cart_indicator(item) { method get_price_html (line 124) | get_price_html(item) { method get_stock_availability (line 144) | get_stock_availability(item, settings) { method get_primary_button (line 164) | get_primary_button(item, settings) { FILE: webshop/public/js/product_ui/list.js method constructor (line 8) | constructor(options) { method make (line 19) | make() { method get_image_html (line 37) | get_image_html(item, title, settings) { method get_row_body_html (line 69) | get_row_body_html(item, title, settings) { method get_title_html (line 77) | get_title_html(item, title, settings) { method get_item_details (line 98) | get_item_details(item, settings) { method get_stock_availability (line 127) | get_stock_availability(item, settings) { method get_wishlist_icon (line 152) | get_wishlist_icon(item) { method get_primary_button (line 165) | get_primary_button(item, settings) { FILE: webshop/public/js/product_ui/search.js method constructor (line 2) | constructor(opts) { method setupSearchDropDown (line 13) | setupSearchDropDown() { method bindSearchAction (line 19) | bindSearchAction() { method setupSearchResultContainer (line 79) | setupSearchResultContainer() { method setupProductsContainer (line 93) | setupProductsContainer() { method setupCategoryContainer (line 102) | setupCategoryContainer() { method setupRecentsContainer (line 111) | setupRecentsContainer() { method getRecentSearches (line 126) | getRecentSearches() { method attachEventListenersToChips (line 130) | attachEventListenersToChips() { method setRecentSearches (line 146) | setRecentSearches(query) { method populateRecentSearches (line 163) | populateRecentSearches() { method populateResults (line 190) | populateResults(product_results) { method populateCategoriesList (line 215) | populateCategoriesList(category_results) { FILE: webshop/public/js/product_ui/views.js method constructor (line 7) | constructor(options) { method make (line 13) | make(from_filters=false) { method prepare_toolbar (line 19) | prepare_toolbar() { method prepare_view_toggler (line 30) | prepare_view_toggler() { method get_item_filter_data (line 39) | get_item_filter_data(from_filters=false) { method disable_view_toggler (line 94) | disable_view_toggler(disable=false) { method render_grid_view (line 99) | render_grid_view(items, settings) { method render_list_view (line 112) | render_list_view(items, settings) { method prepare_product_area_wrapper (line 124) | prepare_product_area_wrapper(view) { method get_query_filters (line 133) | get_query_filters() { method add_paging_section (line 149) | add_paging_section(settings) { method prepare_search (line 186) | prepare_search() { method render_view_toggler (line 209) | render_view_toggler() { method bind_view_toggler_actions (line 228) | bind_view_toggler_actions() { method set_view_state (line 252) | set_view_state() { method bind_paging_action (line 262) | bind_paging_action() { method re_render_discount_filters (line 278) | re_render_discount_filters(filter_data) { method get_discount_filter_html (line 290) | get_discount_filter_html(filter_data) { method restore_discount_filter (line 324) | restore_discount_filter() { method bind_discount_filter_action (line 341) | bind_discount_filter_action() { method bind_filters (line 366) | bind_filters() { method change_route_with_filters (line 439) | change_route_with_filters() { method restore_filters_state (line 460) | restore_filters_state() { method render_no_products_section (line 488) | render_no_products_section(error=false) { method render_item_sub_categories (line 506) | render_item_sub_categories(categories) { method get_query_string (line 527) | get_query_string(object) { method if_key_exists (line 538) | if_key_exists(obj) { FILE: webshop/public/js/shopping_cart.js method toggle_button_class (line 185) | toggle_button_class(button, remove, add) { method bind_add_to_cart_action (line 190) | bind_add_to_cart_action() { method freeze (line 220) | freeze() { method unfreeze (line 235) | unfreeze() { FILE: webshop/public/js/wishlist.js method bind_wishlist_action (line 82) | bind_wishlist_action() { method wishlist_action (line 90) | wishlist_action(btn) { method toggle_button_class (line 131) | toggle_button_class(button, remove, add) { method add_remove_from_wishlist (line 136) | add_remove_from_wishlist(action, args, success_action, failure_action, a... method redirect_guest (line 176) | redirect_guest() { method render_empty_state (line 182) | render_empty_state() { FILE: webshop/setup/install.py function after_install (line 9) | def after_install(): function copy_from_ecommerce_settings (line 19) | def copy_from_ecommerce_settings(): function drop_ecommerce_settings (line 51) | def drop_ecommerce_settings(): function remove_ecommerce_settings_doctype (line 55) | def remove_ecommerce_settings_doctype(): function add_custom_fields (line 65) | def add_custom_fields(): function navbar_add_products_link (line 196) | def navbar_add_products_link(): function say_thanks (line 213) | def say_thanks(): function run_patches (line 228) | def run_patches(): FILE: webshop/templates/generators/item/item_configure.js class ItemConfigure (line 1) | class ItemConfigure { method constructor (line 2) | constructor(item_code, item_name) { method show_configure_dialog (line 13) | show_configure_dialog() { method on_attribute_selection (line 57) | on_attribute_selection(e) { method show_range_input_for_all_fields (line 100) | show_range_input_for_all_fields() { method show_range_input_if_applicable (line 108) | show_range_input_if_applicable(fieldname) { method update_range_values (line 150) | update_range_values(attribute, range_value) { method show_remaining_optional_attributes (line 155) | show_remaining_optional_attributes() { method set_loading_status (line 174) | set_loading_status() { method set_item_found_status (line 182) | set_item_found_status(data) { method clear_status (line 187) | clear_status() { method get_html_for_item_found (line 191) | get_html_for_item_found({ filtered_items_count, filtered_items, exact_... method btn_add_to_cart (line 244) | btn_add_to_cart(e) { method btn_clear_values (line 260) | btn_clear_values() { method append_status_area (line 273) | append_status_area() { method get_next_attribute_and_values (line 286) | get_next_attribute_and_values(selected_attributes) { method get_attributes_and_values (line 293) | get_attributes_and_values() { method get_cache_key (line 299) | get_cache_key() { method call (line 303) | call(method, args) { function set_continue_configuration (line 313) | function set_continue_configuration() { FILE: webshop/templates/generators/item/item_inquiry.js function send_inquiry (line 47) | function send_inquiry() { FILE: webshop/templates/includes/product_page.js function get_item_code (line 131) | function get_item_code() { function find_closest_match (line 164) | function find_closest_match(selected_attribute, selected_attribute_value) { function get_selected_attributes (line 211) | function get_selected_attributes() { FILE: webshop/templates/pages/cart.js function show_terms (line 246) | function show_terms() { FILE: webshop/templates/pages/cart.py function get_context (line 9) | def get_context(context): FILE: webshop/templates/pages/customer_reviews.py function get_context (line 12) | def get_context(context): FILE: webshop/templates/pages/order.js function apply_loyalty_points (line 12) | function apply_loyalty_points() { FILE: webshop/templates/pages/order.py function get_context (line 10) | def get_context(context): function get_attachments (line 60) | def get_attachments(dt, dn): FILE: webshop/templates/pages/product_search.py function get_context (line 22) | def get_context(context): function get_product_list (line 27) | def get_product_list(search=None, start=0, limit=12): function get_product_data (line 36) | def get_product_data(search=None, start=0, limit=12): function search (line 67) | def search(query): function product_search (line 78) | def product_search(query, limit=10, fuzzy_search=True): function clean_up_query (line 120) | def clean_up_query(query): function convert_to_dict (line 124) | def convert_to_dict(redis_search_doc): function get_category_suggestions (line 129) | def get_category_suggestions(query): FILE: webshop/templates/pages/wishlist.py function get_context (line 13) | def get_context(context): function get_stock_availability (line 28) | def get_stock_availability(item_code, warehouse): function get_wishlist_items (line 45) | def get_wishlist_items(): function set_stock_price_details (line 65) | def set_stock_price_details(items, settings, selling_price_list): FILE: webshop/webshop/api.py function get_product_filter_data (line 16) | def get_product_filter_data(query_args=None): function get_guest_redirect_on_action (line 88) | def get_guest_redirect_on_action(): FILE: webshop/webshop/crud_events/item/invalidate_item_variants_cache.py function execute (line 7) | def execute(doc, method=None, old_name=None, new_name=None, merge=False): FILE: webshop/webshop/crud_events/item/update_website_item.py function execute (line 4) | def execute(doc, method=None): FILE: webshop/webshop/crud_events/item/validate_duplicate_website_item.py class DataValidationError (line 7) | class DataValidationError(frappe.ValidationError): function execute (line 11) | def execute(doc, method=None, old_name=None, new_name=None, merge=False): FILE: webshop/webshop/crud_events/price_list/check_impact_on_cart.py function execute (line 7) | def execute(doc, method=None): FILE: webshop/webshop/crud_events/quotation/validate_shopping_cart_items.py function execute (line 5) | def execute(doc, method=None): FILE: webshop/webshop/crud_events/tax_rule/validate_use_for_cart.py function execute (line 6) | def execute(doc, method=None): FILE: webshop/webshop/doctype/homepage_featured_product/homepage_featured_product.py class HomepageFeaturedProduct (line 8) | class HomepageFeaturedProduct(Document): FILE: webshop/webshop/doctype/item_review/item_review.py class UnverifiedReviewer (line 19) | class UnverifiedReviewer(frappe.ValidationError): class ItemReview (line 23) | class ItemReview(Document): method after_insert (line 24) | def after_insert(self): method after_delete (line 29) | def after_delete(self): function get_item_reviews (line 36) | def get_item_reviews(web_item, start=0, end=10, data=None): function get_queried_reviews (line 60) | def get_queried_reviews(web_item, start=0, end=10, data=None): function set_reviews_in_cache (line 120) | def set_reviews_in_cache(web_item, reviews_dict): function add_item_review (line 125) | def add_item_review(web_item, title, rating, comment=None): function get_customer (line 148) | def get_customer(silent=False): FILE: webshop/webshop/doctype/item_review/test_item_review.py class TestItemReview (line 22) | class TestItemReview(unittest.TestCase): method setUp (line 23) | def setUp(self): method tearDown (line 32) | def tearDown(self): method test_add_and_get_item_reviews_from_customer (line 43) | def test_add_and_get_item_reviews_from_customer(self): method test_add_item_review_from_non_customer (line 71) | def test_add_item_review_from_non_customer(self): method test_add_item_reviews_from_guest_user (line 83) | def test_add_item_reviews_from_guest_user(self): FILE: webshop/webshop/doctype/override_doctype/item.py class DataValidationError (line 7) | class DataValidationError(frappe.ValidationError): class WebshopItem (line 10) | class WebshopItem(Item): method on_update (line 11) | def on_update(self): method before_rename (line 16) | def before_rename(self, old_name, new_name, merge=False): method validate_duplicate_website_item_before_merge (line 20) | def validate_duplicate_website_item_before_merge(self, old_name, new_n... method after_rename (line 41) | def after_rename(self, old_name, new_name, merge): function invalidate_cache_for_item (line 48) | def invalidate_cache_for_item(doc): FILE: webshop/webshop/doctype/override_doctype/item_group.py class WebshopItemGroup (line 10) | class WebshopItemGroup(ItemGroup, WebsiteGenerator): method validate (line 19) | def validate(self): method on_update (line 24) | def on_update(self): method make_route (line 28) | def make_route(self): method on_trash (line 45) | def on_trash(self): method get_context (line 49) | def get_context(self, context): method has_website_permission (line 85) | def has_website_permission(self, ptype, user, verbose=False): function get_item_for_list_in_html (line 88) | def get_item_for_list_in_html(context): function get_parent_item_groups (line 99) | def get_parent_item_groups(item_group_name, from_item=False): function invalidate_cache_for (line 135) | def invalidate_cache_for(doc, item_group=None): function get_child_groups_for_website (line 144) | def get_child_groups_for_website(item_group_name, immediate=False, inclu... FILE: webshop/webshop/doctype/override_doctype/payment_request.py class PaymentRequest (line 9) | class PaymentRequest(OriginalPaymentRequest): method on_payment_authorized (line 10) | def on_payment_authorized(self, status=None): method get_gateway_details (line 45) | def get_gateway_details(args): FILE: webshop/webshop/doctype/recommended_items/recommended_items.py class RecommendedItems (line 8) | class RecommendedItems(Document): FILE: webshop/webshop/doctype/webshop_settings/test_webshop_settings.py class TestWebshopSettings (line 12) | class TestWebshopSettings(unittest.TestCase): method tearDown (line 13) | def tearDown(self): method test_tax_rule_validation (line 16) | def test_tax_rule_validation(self): method test_invalid_filter_fields (line 27) | def test_invalid_filter_fields(self): function setup_webshop_settings (line 43) | def setup_webshop_settings(values_dict): FILE: webshop/webshop/doctype/webshop_settings/webshop_settings.py class ShoppingCartSetupError (line 18) | class ShoppingCartSetupError(frappe.ValidationError): class WebshopSettings (line 22) | class WebshopSettings(Document): method onload (line 23) | def onload(self): method validate (line 29) | def validate(self): method after_save (line 44) | def after_save(self): method create_redisearch_indexes (line 47) | def create_redisearch_indexes(self): method validate_field_filters (line 55) | def validate_field_filters(filter_fields, enable_field_filters): method validate_attribute_filters (line 72) | def validate_attribute_filters(self): method validate_checkout (line 79) | def validate_checkout(self): method validate_search_index_fields (line 83) | def validate_search_index_fields(self): method validate_price_list_exchange_rate (line 109) | def validate_price_list_exchange_rate(self): method validate_tax_rule (line 137) | def validate_tax_rule(self): method get_tax_master (line 141) | def get_tax_master(self, billing_territory): method get_shipping_rules (line 147) | def get_shipping_rules(self, shipping_territory): method on_change (line 150) | def on_change(self): function validate_cart_settings (line 162) | def validate_cart_settings(doc=None, method=None): function get_shopping_cart_settings (line 166) | def get_shopping_cart_settings(): function is_cart_enabled (line 171) | def is_cart_enabled(): function show_quantity_in_website (line 175) | def show_quantity_in_website(): function check_shopping_cart_enabled (line 179) | def check_shopping_cart_enabled(): function show_attachments (line 184) | def show_attachments(): FILE: webshop/webshop/doctype/website_item/test_website_item.py class TestWebsiteItem (line 29) | class TestWebsiteItem(unittest.TestCase): method setUpClass (line 31) | def setUpClass(cls): method tearDownClass (line 42) | def tearDownClass(cls): method setUp (line 45) | def setUp(self): method test_index_creation (line 79) | def test_index_creation(self): method test_website_item_desk_item_sync (line 93) | def test_website_item_desk_item_sync(self): method test_publish_variant_and_template (line 133) | def test_publish_variant_and_template(self): method test_impact_on_merging_items (line 156) | def test_impact_on_merging_items(self): method test_website_item_breadcrumbs (line 177) | def test_website_item_breadcrumbs(self): method test_website_item_price_for_logged_in_user (line 213) | def test_website_item_price_for_logged_in_user(self): method test_website_item_price_for_guest_user (line 250) | def test_website_item_price_for_guest_user(self): method test_website_item_stock_when_out_of_stock (line 284) | def test_website_item_stock_when_out_of_stock(self): method test_website_item_stock_when_in_stock (line 331) | def test_website_item_stock_when_in_stock(self): method test_recommended_item (line 388) | def test_recommended_item(self): method test_recommended_item_for_guest_user (line 432) | def test_recommended_item_for_guest_user(self): function create_regular_web_item (line 480) | def create_regular_web_item(item_code=None, item_args=None, web_args=None): function make_web_item_price (line 496) | def make_web_item_price(**kwargs): function make_web_pricing_rule (line 517) | def make_web_pricing_rule(**kwargs): function create_user_and_customer_if_not_exists (line 547) | def create_user_and_customer_if_not_exists(email, first_name=None): FILE: webshop/webshop/doctype/website_item/website_item.py class WebsiteItem (line 36) | class WebsiteItem(WebsiteGenerator): method autoname (line 44) | def autoname(self): method onload (line 52) | def onload(self): method validate (line 55) | def validate(self): method on_update (line 81) | def on_update(self): method on_trash (line 85) | def on_trash(self): method validate_duplicate_website_item (line 90) | def validate_duplicate_website_item(self): method publish_unpublish_desk_item (line 100) | def publish_unpublish_desk_item(self, publish=True): method make_route (line 108) | def make_route(self): method update_template_item (line 121) | def update_template_item(self): method validate_website_image (line 132) | def validate_website_image(self): method make_thumbnail (line 166) | def make_thumbnail(self): method get_context (line 229) | def get_context(self, context): method set_selected_attributes (line 273) | def set_selected_attributes(self, variants, context, attribute_values_... method set_attribute_values (line 294) | def set_attribute_values(self, attributes, context, attribute_values_a... method set_metatags (line 319) | def set_metatags(self, context): method set_shopping_cart_data (line 340) | def set_shopping_cart_data(self, context): method copy_specification_from_item_group (line 350) | def copy_specification_from_item_group(self): method get_product_details_section (line 362) | def get_product_details_section(self, context): method get_tabs (line 370) | def get_tabs(self): method get_recommended_items (line 387) | def get_recommended_items(self, settings): function invalidate_item_variants_cache_for_website (line 425) | def invalidate_item_variants_cache_for_website(doc): function invalidate_cache_for_web_item (line 449) | def invalidate_cache_for_web_item(doc): function on_doctype_update (line 477) | def on_doctype_update(): function check_if_user_is_customer (line 482) | def check_if_user_is_customer(user=None): function make_website_item (line 502) | def make_website_item(doc, save=True): function has_website_permission_for_website_item (line 551) | def has_website_permission_for_website_item(doc, ptype, user, verbose=Fa... function has_website_permission_for_item_group (line 566) | def has_website_permission_for_item_group(doc, ptype, user, verbose=False): FILE: webshop/webshop/doctype/website_item_tabbed_section/website_item_tabbed_section.py class WebsiteItemTabbedSection (line 9) | class WebsiteItemTabbedSection(Document): FILE: webshop/webshop/doctype/website_offer/website_offer.py class WebsiteOffer (line 9) | class WebsiteOffer(Document): function get_offer_details (line 14) | def get_offer_details(offer_id): FILE: webshop/webshop/doctype/wishlist/test_wishlist.py class TestWishlist (line 14) | class TestWishlist(unittest.TestCase): method setUp (line 15) | def setUp(self): method tearDown (line 24) | def tearDown(self): method test_add_remove_items_in_wishlist (line 30) | def test_add_remove_items_in_wishlist(self): method test_add_remove_in_wishlist_multiple_users (line 62) | def test_add_remove_in_wishlist_multiple_users(self): FILE: webshop/webshop/doctype/wishlist/wishlist.py class Wishlist (line 9) | class Wishlist(Document): function add_to_wishlist (line 14) | def add_to_wishlist(item_code): function remove_from_wishlist (line 62) | def remove_from_wishlist(item_code): FILE: webshop/webshop/doctype/wishlist_item/wishlist_item.py class WishlistItem (line 9) | class WishlistItem(Document): FILE: webshop/webshop/legacy_search.py class ProductSearch (line 13) | class ProductSearch(FullTextSearch): method get_schema (line 16) | def get_schema(self): method get_id (line 25) | def get_id(self): method get_items_to_index (line 28) | def get_items_to_index(self): method get_document_to_index (line 39) | def get_document_to_index(self, item): method search (line 69) | def search(self, text, scope=None, limit=20): method parse_result (line 101) | def parse_result(self, result): function get_all_published_items (line 116) | def get_all_published_items(): function update_index_for_path (line 122) | def update_index_for_path(path): function remove_document_from_index (line 127) | def remove_document_from_index(path): function build_index_for_all_routes (line 132) | def build_index_for_all_routes(): FILE: webshop/webshop/product_data_engine/filters.py class ProductFiltersBuilder (line 8) | class ProductFiltersBuilder: method __init__ (line 9) | def __init__(self, item_group=None): method get_field_filters (line 17) | def get_field_filters(self): method get_filtered_link_doctype_records (line 84) | def get_filtered_link_doctype_records(self, field): method get_link_doctype_filters (line 99) | def get_link_doctype_filters(self, meta): method get_attribute_filters (line 114) | def get_attribute_filters(self): method get_discount_filters (line 144) | def get_discount_filters(self, discounts): FILE: webshop/webshop/product_data_engine/query.py class ProductQuery (line 12) | class ProductQuery: method __init__ (line 23) | def __init__(self): method query (line 46) | def query(self, attributes=None, fields=None, search_term=None, start=... method query_items (line 92) | def query_items(self, start=0): method query_items_with_attributes (line 125) | def query_items_with_attributes(self, attributes, start=0): method build_fields_filters (line 153) | def build_fields_filters(self, filters): method build_item_group_filters (line 179) | def build_item_group_filters(self, item_group): method build_search_filters (line 200) | def build_search_filters(self, search_term): method add_display_details (line 223) | def add_display_details(self, result, discount_list, cart_items): method get_price_discount_info (line 247) | def get_price_discount_info(self, item, price_object, discount_list): method get_stock_availability (line 262) | def get_stock_availability(self, item): method get_cart_items (line 285) | def get_cart_items(self): method filter_results_by_discount (line 309) | def filter_results_by_discount(self, fields, result): FILE: webshop/webshop/product_data_engine/test_item_group_product_data_engine.py class TestItemGroupProductDataEngine (line 14) | class TestItemGroupProductDataEngine(unittest.TestCase): method setUp (line 17) | def setUp(self): method tearDown (line 36) | def tearDown(self): method test_product_listing_in_item_group (line 39) | def test_product_listing_in_item_group(self): method test_products_in_multiple_item_groups (line 59) | def test_products_in_multiple_item_groups(self): method test_item_group_with_sub_groups (line 98) | def test_item_group_with_sub_groups(self): method test_item_group_page_with_descendants_included (line 132) | def test_item_group_page_with_descendants_included(self): FILE: webshop/webshop/product_data_engine/test_product_data_engine.py class TestProductDataEngine (line 18) | class TestProductDataEngine(unittest.TestCase): method setUpClass (line 22) | def setUpClass(cls): method tearDownClass (line 55) | def tearDownClass(cls): method test_product_list_ordering_and_paging (line 58) | def test_product_list_ordering_and_paging(self): method test_change_product_ranking (line 83) | def test_change_product_ranking(self): method test_product_list_field_filter_builder (line 105) | def test_product_list_field_filter_builder(self): method test_product_list_with_field_filter (line 134) | def test_product_list_with_field_filter(self): method test_product_list_attribute_filter_builder (line 153) | def test_product_list_attribute_filter_builder(self): method test_product_list_with_attribute_filter (line 165) | def test_product_list_with_attribute_filter(self): method test_product_list_discount_filter_builder (line 180) | def test_product_list_discount_filter_builder(self): method test_product_list_with_discount_filters (line 205) | def test_product_list_with_discount_filters(self): method test_product_list_with_api (line 241) | def test_product_list_with_api(self): method test_product_list_with_variants (line 260) | def test_product_list_with_variants(self): method test_custom_field_as_filter (line 280) | def test_custom_field_as_filter(self): function create_variant_web_item (line 329) | def create_variant_web_item(): FILE: webshop/webshop/redisearch_utils.py function get_indexable_web_fields (line 25) | def get_indexable_web_fields(): function is_redisearch_enabled (line 36) | def is_redisearch_enabled(): function is_search_module_loaded (line 42) | def is_search_module_loaded(): function if_redisearch_enabled (line 52) | def if_redisearch_enabled(function): function make_key (line 64) | def make_key(key): function create_website_items_index (line 69) | def create_website_items_index(): function to_search_field (line 105) | def to_search_field(field): function insert_item_to_index (line 113) | def insert_item_to_index(website_item_doc): function insert_to_name_ac (line 126) | def insert_to_name_ac(web_name, doc_name): function create_web_item_map (line 131) | def create_web_item_map(website_item_doc): function update_index_for_item (line 142) | def update_index_for_item(website_item_doc): function delete_item_from_index (line 149) | def delete_item_from_index(website_item_doc): function delete_from_ac_dict (line 163) | def delete_from_ac_dict(website_item_doc): function define_autocomplete_dictionary (line 170) | def define_autocomplete_dictionary(): function create_items_autocomplete_dict (line 190) | def create_items_autocomplete_dict(): function create_item_groups_autocomplete_dict (line 202) | def create_item_groups_autocomplete_dict(): function reindex_all_web_items (line 226) | def reindex_all_web_items(): function get_cache_key (line 238) | def get_cache_key(name): function get_fields_indexed (line 243) | def get_fields_indexed(): function raise_redisearch_error (line 253) | def raise_redisearch_error(): FILE: webshop/webshop/shopping_cart/cart.py class WebsitePriceListMissingError (line 20) | class WebsitePriceListMissingError(frappe.ValidationError): function set_cart_count (line 24) | def set_cart_count(quotation=None): function get_cart_quotation (line 35) | def get_cart_quotation(doc=None): function get_shipping_addresses (line 58) | def get_shipping_addresses(party=None): function get_billing_addresses (line 74) | def get_billing_addresses(party=None): function place_order (line 90) | def place_order(): function request_for_quotation (line 143) | def request_for_quotation(): function update_cart (line 156) | def update_cart(item_code, qty, additional_notes=None, with_items=False): function get_shopping_cart_menu (line 220) | def get_shopping_cart_menu(context=None): function add_new_address (line 228) | def add_new_address(doc): function create_lead_for_item_inquiry (line 238) | def create_lead_for_item_inquiry(lead, subject, message): function get_terms_and_conditions (line 275) | def get_terms_and_conditions(terms_name): function update_cart_address (line 280) | def update_cart_address(address_type, address_name): function guess_territory (line 321) | def guess_territory(): function decorate_quotation_doc (line 333) | def decorate_quotation_doc(doc): function _get_cart_quotation (line 369) | def _get_cart_quotation(party=None): function update_party (line 418) | def update_party(fullname, company_name=None, mobile_no=None, phone=None): function apply_cart_settings (line 446) | def apply_cart_settings(party=None, quotation=None): function set_price_list_and_rate (line 463) | def set_price_list_and_rate(quotation, cart_settings): function _set_price_list (line 485) | def _set_price_list(cart_settings, quotation=None): function set_taxes (line 508) | def set_taxes(quotation, cart_settings): function get_party (line 537) | def get_party(user=None): function get_debtors_account (line 615) | def get_debtors_account(cart_settings): function get_address_docs (line 654) | def get_address_docs( function apply_shipping_rule (line 687) | def apply_shipping_rule(shipping_rule): function _apply_shipping_rule (line 700) | def _apply_shipping_rule(party=None, quotation=None, cart_settings=None): function get_applicable_shipping_rules (line 715) | def get_applicable_shipping_rules(party=None, quotation=None): function get_shipping_rules (line 724) | def get_shipping_rules(quotation=None, cart_settings=None): function get_address_territory (line 750) | def get_address_territory(address_name): function show_terms (line 766) | def show_terms(doc): function apply_coupon_code (line 771) | def apply_coupon_code(applied_code, applied_referral_sales_partner): function remove_coupon_code (line 806) | def remove_coupon_code(): FILE: webshop/webshop/shopping_cart/product_info.py function get_product_info_for_website (line 17) | def get_product_info_for_website(item_code, skip_quotation_creation=False): function set_product_info_for_website (line 94) | def set_product_info_for_website(item): FILE: webshop/webshop/shopping_cart/test_shopping_cart.py class TestShoppingCart (line 23) | class TestShoppingCart(unittest.TestCase): method setUp (line 29) | def setUp(self): method tearDown (line 38) | def tearDown(self): method tearDownClass (line 44) | def tearDownClass(cls): method test_get_cart_new_user (line 47) | def test_get_cart_new_user(self): method test_get_cart_customer (line 69) | def test_get_cart_customer(self, customer="_Test Customer 2"): method test_add_to_cart (line 82) | def test_add_to_cart(self): method test_update_cart (line 113) | def test_update_cart(self): method test_remove_from_cart (line 126) | def test_remove_from_cart(self): method test_tax_rule (line 141) | def test_tax_rule(self): method test_add_item_variant_without_web_item_to_cart (line 186) | def test_add_item_variant_without_web_item_to_cart(self): method test_cart_without_checkout_and_draft_quotation (line 214) | def test_cart_without_checkout_and_draft_quotation(self): method create_tax_rule (line 233) | def create_tax_rule(self): method create_quotation (line 240) | def create_quotation(self): method remove_test_quotation (line 267) | def remove_test_quotation(self, quotation): method enable_shopping_cart (line 272) | def enable_shopping_cart(self): method disable_shopping_cart (line 309) | def disable_shopping_cart(self): method login_as_new_user (line 315) | def login_as_new_user(self): method login_as_customer (line 319) | def login_as_customer( method clear_existing_quotations (line 325) | def clear_existing_quotations(self): method create_user_if_not_exists (line 336) | def create_user_if_not_exists(self, email, first_name=None): function create_address_and_contact (line 353) | def create_address_and_contact(**kwargs): FILE: webshop/webshop/shopping_cart/utils.py function show_cart_count (line 8) | def show_cart_count(): function set_cart_count (line 18) | def set_cart_count(login_manager): function clear_cart_count (line 35) | def clear_cart_count(login_manager): function update_website_context (line 40) | def update_website_context(context): function is_customer (line 45) | def is_customer(): FILE: webshop/webshop/utils/portal.py function update_debtors_account (line 12) | def update_debtors_account(): FILE: webshop/webshop/utils/product.py function get_web_item_qty_in_stock (line 8) | def get_web_item_qty_in_stock(item_code, item_warehouse_field, warehouse... function adjust_qty_for_expired_items (line 50) | def adjust_qty_for_expired_items(item_code, stock_qty, warehouse): function get_expired_batches (line 67) | def get_expired_batches(batches): function qty_from_all_warehouses (line 74) | def qty_from_all_warehouses(batch_info): function get_non_stock_item_status (line 85) | def get_non_stock_item_status(item_code, item_warehouse_field): FILE: webshop/webshop/utils/setup.py function has_ecommerce_fields (line 3) | def has_ecommerce_fields() -> bool: FILE: webshop/webshop/variant_selector/item_variants_cache.py class ItemVariantsCacheManager (line 4) | class ItemVariantsCacheManager: method __init__ (line 5) | def __init__(self, item_code): method get_item_variants_data (line 8) | def get_item_variants_data(self): method get_attribute_value_item_map (line 16) | def get_attribute_value_item_map(self): method get_item_attribute_value_map (line 24) | def get_item_attribute_value_map(self): method get_optional_attributes (line 32) | def get_optional_attributes(self): method get_ordered_attribute_values (line 40) | def get_ordered_attribute_values(self): method build_cache (line 56) | def build_cache(self): method clear_cache (line 100) | def clear_cache(self): method rebuild_cache (line 111) | def rebuild_cache(self): function build_cache (line 116) | def build_cache(item_code): function enqueue_build_cache (line 123) | def enqueue_build_cache(item_code): FILE: webshop/webshop/variant_selector/test_variant_selector.py class TestVariantSelector (line 15) | class TestVariantSelector(FrappeTestCase): method setUpClass (line 17) | def setUpClass(cls): method test_item_attributes (line 45) | def test_item_attributes(self): method test_next_item_variant_values (line 76) | def test_next_item_variant_values(self): method test_exact_match_with_price (line 96) | def test_exact_match_with_price(self): FILE: webshop/webshop/variant_selector/utils.py function get_item_codes_by_attributes (line 12) | def get_item_codes_by_attributes(attribute_filters, template_item_code=N... function get_attributes_and_values (line 74) | def get_attributes_and_values(item_code): function get_next_attribute_and_values (line 116) | def get_next_attribute_and_values(item_code, selected_attributes): function get_items_with_selected_attributes (line 215) | def get_items_with_selected_attributes(item_code, selected_attributes): function get_item_attributes (line 230) | def get_item_attributes(item_code): function get_item_variant_price_dict (line 247) | def get_item_variant_price_dict(item_code, cart_settings): FILE: webshop/www/all-products/index.js class ProductListing (line 2) | class ProductListing { method constructor (line 3) | constructor() { method bind_card_actions (line 20) | bind_card_actions() { FILE: webshop/www/all-products/index.py function get_context (line 9) | def get_context(context): FILE: webshop/www/shop-by-category/index.py function get_context (line 7) | def get_context(context): function get_slideshow (line 23) | def get_slideshow(slideshow): function get_tabs (line 38) | def get_tabs(categories): function get_category_records (line 54) | def get_category_records(categories):