def get_context_data(self, **kwargs: Any) -> Dict[str, Any]: context = super().get_context_data(**kwargs) items = self.model.objects.filter( order=self.kwargs["order_id"]).order_by("-date_ordered") context["url_last"], context["url_path"] = get_url_path(self.request) context["order_item"] = items return context
def get_context_data(self, **kwargs: Any) -> Dict[str, Any]: context = super().get_context_data(**kwargs) context["url_last"], context["url_path"] = get_url_path(self.request) orders = Order.objects.filter( customer__user=self.request.user, transaction_status=True).order_by("-transaction_finished") context["orders"] = orders return context
def get_context_data(self, **kwargs: Any) -> Dict[str, Any]: """Filter products by query parameters""" url_params = { key: str(value[0]) for key, value in self.request.GET.lists() } search_query = "" param = "" context = super().get_context_data(**kwargs) if url_params["param"] and url_params["param"] != "Everywhere": param = url_params["param"] products = get_model_queryset(param) else: param = url_params["param"] products = self.model.objects.all() if url_params["search_query"]: search_query = url_params["search_query"] products = products.distinct().filter( Q(name__icontains=search_query) | Q(ean__icontains=search_query) | Q(producent__icontains=search_query) | Q(model__icontains=search_query)) products = [ try_to_get_product(product, "") for product in products.order_by("-created") ] page = self.request.GET.get("page") result = 10 ranger, paginator, products = paginate_view(products, result, page) cattegories = [product_cat for product_cat in CATTEGORIES] context["url_last"], context["url_path"] = get_url_path(self.request) context["products"] = products context["cattegories"] = cattegories context["param"] = param context["search_query"] = search_query context["custom_range"] = ranger context["paginator"] = paginator return context
def get_context_data(self, **kwargs: Any) -> Dict[str, Any]: context = super(ProductPage, self).get_context_data(**kwargs) product_id = self.kwargs["MainProductDatabase_id"] product = models.MainProductDatabase.objects.get(id=product_id) # if self.request.user.is_authenticated: # customer = Customer.objects.get(user=self.request.user) # order = Order.objects.get(customer=customer, complete=False) # try: # order_item = OrderItem.objects.get(order=order, # product__ean=product.ean) # pieces = product.pieces - order_item.quantity # except ObjectDoesNotExist: # order_item = '' # pieces = product.pieces # elif not self.request.user.is_authenticated: # order_item = '' # pieces = product.pieces pieces, _ = change_product_pieces(self.request, product) same_products = filter_products(product.cattegory, product) if pieces <= 10: pieces_range = range(1, pieces + 1) else: pieces_range = range(1, 11) product = try_to_get_product(product, "") reviews = models.Reviews.objects.filter(product_id=product_id, checked_by_employer=True) question = models.Questions.objects.filter(product_id=product_id, checked_by_employer=True) context["url_last"], context["url_path"] = get_url_path( self.request, product_page=True) context["questions"] = question context["reviews"] = reviews context["pieces_range"] = pieces_range context["same_products"] = same_products context["product"] = product context["pieces"] = pieces return context
def get_context_data(self, **kwargs: Any) -> Dict[str, Any]: context = super(LandingArticles, self).get_context_data(**kwargs) article_id = self.kwargs["article_id"] article = models.LandingPageArticles.objects.get(id=article_id) comments = models.ArticleComment.objects.filter(article__id=article_id) context["url_last"], context["url_path"] = get_url_path(self.request) context["comments_number"] = len(comments) context["article"] = article context["comments"] = models.ArticleComment.objects.filter( article=article) # Paginator # page = self.request.GET.get('page', 1) # result = 5 # ranger, paginator, products = paginate_view(comments, result, page) return context
def get_context_data(self, **kwargs: Any) -> Dict[str, Any]: """Show products from wishlist""" context = super().get_context_data(**kwargs) products = models.MainProductDatabase.objects.filter( likes=self.request.user).order_by("-created") products = [try_to_get_product(product, "") for product in products] page = self.request.GET.get("page") result = 10 ranger, paginator, products = paginate_view(products, result, page) context["url_last"], context["url_path"] = get_url_path(self.request) context["products"] = products context["custom_range"] = ranger context["paginator"] = paginator return context
def get_context_data(self, **kwargs: Any) -> Dict[str, Any]: """View for render products in product_cart template. Products are filtered by user applied filters""" # TODO: Write tests for this view context = super().get_context_data(**kwargs) if self.request.GET.get("ids"): products_old = get_similar_products_data(self.request) else: products_old = "" if "cattegory" in self.kwargs: product_cattegory = self.kwargs["cattegory"] else: product_cattegory = "all" old_products = models.MainProductDatabase.objects.filter( cattegory=product_cattegory) # Call the products models, # filter by url queryset and return as query. cattegories = { "TV": lambda x: filter_tv_products(x), "Monitors": lambda x: filter_monitors_products(x), "PC": lambda x: filter_pcs_products(x), "SSD": lambda x: filter_ssd_products(x), "Graphs": lambda x: filter_graphs_products(x), "Ram": lambda x: filter_rams_products(x), "Pendrives": lambda x: filter_pendrives_products(x), "Switches": lambda x: filter_switches_products(x), "Motherboard": lambda x: filter_motherboard_products(x), "CPU": lambda x: filter_cpus_products(x), "Headphones": lambda x: filter_headphones_products(x), "Routers": lambda x: filter_routers_products(x), "Accesories for laptops": lambda x: filter_accesories_products(x), "Laptops": lambda x: filter_laptops_products(x), "Phones": lambda x: filter_phones_products(x), "all": lambda x: get_all(x), } try: products = cattegories[product_cattegory](self.request) except (KeyError, ObjectDoesNotExist): products = [] logger.exception("Exception in ProductsCart view occurred") # Filter products by popularity, trending filters etc. # Should be done at the end of all filters if self.request.GET.get("filter"): filter_option = self.request.GET.get("filter") choose_param = { "popular": sort_by_product_rate(products), "trending": products.order_by("-bought_num"), "cheapest": products.order_by("price"), "latest": products.order_by("-created"), } try: products = choose_param[filter_option] context["products_total"] = len(products) except ObjectDoesNotExist: logger.exception("Exception in ProductsCart view occurred") pass # Method is called from specific produc Model. # Returning dictionary with filter name as a "key", # and number of products as a "value". # For example: {'diagonal':2} == {filter:prodcut_number}. try: product_filters = try_to_get_product(old_products[0], "") data_to_filter = product_filters.data_products_to_filter() except IndexError: data_to_filter = [] # Create producent dictionary {name: products number for producent} # from first query (all producents) old_products = [ try_to_get_product(product, "") for product in old_products ] producents = models.Inherit.get_producents(old_products) if "cattegory" not in self.kwargs: products = [ try_to_get_product(product, "") for product in products ] product_cattegory = "" if self.request.GET.get("ids"): similar_products = get_similar_products_data(self.request) similar_products_ean = [ product.ean for product in similar_products ] products = products.filter(ean__in=similar_products_ean) params_excluded = ["filter", "grid", "page", "ids"] params_list = [ key for key, _ in self.request.GET.lists() if key not in params_excluded ] if params_list: data_to_filter = products_old[0].data_products_to_filter( products_old) else: data_to_filter = products[0].data_products_to_filter(products) producents = models.Inherit.get_producents(products) context["products_total"] = len(products) # Paginate View page = self.request.GET.get("page") result = 9 ranger, paginator, products = paginate_view(products, result, page) # TODO: Think about using this filter # form = SnippetFilter context["url_last"], context["url_path"] = get_url_path(self.request) if self.request.GET.get("filter"): context["filter_option"] = self.request.GET.get("filter") context["products_filter_options"] = data_to_filter context["producents"] = producents context["page_num_range"] = range(paginator.num_pages - 3, paginator.num_pages + 1) context["last_page"] = paginator.num_pages context["custom_range"] = ranger context["cattegory"] = product_cattegory context["paginator"] = paginator context["products"] = products # context["form"] = form context["mainDatabaseProd"] = old_products return context