def populate(self): """ Iterate over all report_writer_populator provides to fill/update the report writer map """ for report_writer_populator_func in get_provide_objects("report_writer_populator"): report_writer_populator_func(self)
def clean(self): cleaned_data = super(ModifiableFormMixin, self).clean() for extend_class in get_provide_objects(self.form_modifier_provide_key): extend_class().clean_hook(self) return cleaned_data
def add_extra_fields(self, form, object=None): for extend_class in get_provide_objects(form.form_modifier_provide_key): for field_key, field in extend_class().get_extra_fields(object) or []: form.fields[field_key] = field
def get_importer_choices(): return [(i.identifier, i.name) for i in get_provide_objects("importers")]
def get_importer(identifier): for i in get_provide_objects("importers"): if i.identifier == identifier: return i return None
def populate(self): for func in get_provide_objects("api_populator"): func(router=self)
def _get_extension_urlpatterns(provide_category): return chain(*get_provide_objects(provide_category))
def get_product_context(request, product, language=None, supplier=None): # noqa (C901) """ Get product context Used in `E-Commerce.front.views.product:ProductDetailView` :return: A context dict containing everything needed to render product view :rtype: dict """ if not language: language = get_language() shop_product = product.get_shop_instance(request.shop) context = {} context["product"] = product context["category"] = shop_product.primary_category context["orderability_errors"] = list(shop_product.get_orderability_errors( supplier=supplier, quantity=1, customer=request.customer, ignore_minimum=True)) context["variation_children"] = [] selected_variation = None variation_sku = request.GET.get("variation") if variation_sku: try: selected_variation = product.variation_children.get(sku=variation_sku) context["selected_variation"] = selected_variation except Product.DoesNotExist: raise Http404 if product.mode == ProductMode.SIMPLE_VARIATION_PARENT: context["variation_children"] = cache_product_things( request, sorted( product.variation_children.language(language).visible( shop=request.shop, customer=request.customer ), key=lambda p: get_string_sort_order(p.variation_name or p.name) ) ) context["orderable_variation_children"] = [] for p in context["variation_children"]: try: if p.get_shop_instance(request.shop).is_orderable( supplier=supplier, customer=request.customer, quantity=1): context["orderable_variation_children"].append(p) except ShopProduct.DoesNotExist: pass elif product.mode == ProductMode.VARIABLE_VARIATION_PARENT: variation_variables = product.variation_variables.all().prefetch_related("values") orderable_children, is_orderable = get_orderable_variation_children( product, request, variation_variables, supplier ) context["orderable_variation_children"] = orderable_children context["variation_orderable"] = is_orderable context["variation_variables"] = variation_variables if selected_variation: for combination in product.get_all_available_combinations(): if combination['result_product_pk'] == selected_variation.pk: values = [v.pk for v in combination['variable_to_value'].values()] context['selected_variation_values'] = values break elif product.is_container(): children = product.get_all_package_children().translated().order_by("translations__name") context["package_children"] = cache_product_things(request, children) context["shop_product"] = shop_product context["attributes"] = product.attributes.filter( attribute__visibility_mode=AttributeVisibility.SHOW_ON_PRODUCT_PAGE) context["primary_image"] = shop_product.public_primary_image context["images"] = shop_product.public_images context["supplier"] = supplier context["order_form"] = _get_order_form(request, context, product, language) for provide_object in get_provide_objects("product_context_extra"): provider = provide_object(request, product, language) if provider.provides_extra_context(): context.update(provider.extra_context) return context
def get_validation_errors(self): # noqa (C901) from E-Commerce.apps.provides import get_provide_objects for order_source_validator in get_provide_objects("order_source_validator"): for error in order_source_validator.get_validation_errors(self): yield error
def clean(self): cleaned_data = super(ProductListForm, self).clean() for extend_class in get_provide_objects(FORM_MODIFIER_PROVIDER_KEY): extend_class().clean_hook(self) return cleaned_data
def _get_order_form(request, context, product, language): for obj in get_provide_objects("front_product_order_form"): product_order_form = obj(request, context, product, language) if product_order_form.is_compatible(): return mark_safe(product_order_form.render()) return None
def get_name_map(category_key): return sorted([ (force_text(obj.identifier), force_text(obj.name)) for obj in get_provide_objects(category_key) if obj.identifier ], key=lambda t: t[1].lower())
def get_provided_layouts(): return get_provide_objects("xtheme_layout")
def get_form_part_classes(self): form_part_classes = ( list(self.base_form_part_classes) + list(get_provide_objects(self.form_part_class_provide_key)) ) return form_part_classes
def _build_provided_toolbar_buttons(self): for button in get_provide_objects("admin_order_toolbar_button"): warnings.warn( "admin_order_toolbar_button provider is deprecated, use admin_order_toolbar_action_item instead", RemovedFromE-CommerceWarning) self.append(button(self.order))
def get_setting(cls, setting_key): for provider_cls in get_provide_objects("E-Commerce_settings_provider"): provider = provider_cls() if provider.offers(setting_key): return provider.get_setting_value(setting_key) return getattr(settings, setting_key)
def extend_main_menu(menu): for menu_updater in get_provide_objects("admin_main_menu_updater"): menu = menu_updater(menu).update() return menu
def discover(): for obj in get_provide_objects("admin_module"): register(obj)
def get_settings(request): admin_settings = {} for admin_browser_config_provider in get_provide_objects("admin_browser_config_provider"): admin_settings.update(admin_browser_config_provider.get_gettings(request)) return admin_settings
def get_report_classes(request=None, provides_key="reports"): items = {} for cls in list(get_provide_objects(provides_key)): if not (request and not cls.is_available(request)): items[cls.get_name()] = cls return OrderedDict(sorted(items.items(), key=lambda t: t[1].title))