def brand_home(request, slug, id): brand = Brand.objects.get(pk=id) client = request.client.client if is_holii_client(request.client.client): products = Product.objects.filter(brand = brand, category__client = client, sellerratechart__stock_status = 'instock') ctxt = {'brand' : brand, 'products' : products } return render_to_response('brands/brand.html', ctxt, context_instance = RequestContext(request) ) else: if brand.slug != slug: return HttpResponsePermanentRedirect(reverse('brand-home-url',None,kwargs={'slug':brand.slug,'id':id})) ctxt = search_browser_filter(request, **{'brand':brand}) if request.is_ajax(): return ctxt html_page = 'categories/category.html' if not ctxt['products']: html_page = 'categories/zero_result.html' ctxt['title'] = brand.name ctxt['is_brand_page'] = True return render_to_response(html_page, ctxt, context_instance = RequestContext(request))
def brand_home(request, slug, id): brand = Brand.objects.get(pk=id) client = request.client.client if is_holii_client(request.client.client): products = Product.objects.filter( brand=brand, category__client=client, sellerratechart__stock_status='instock') ctxt = {'brand': brand, 'products': products} return render_to_response('brands/brand.html', ctxt, context_instance=RequestContext(request)) else: if brand.slug != slug: return HttpResponsePermanentRedirect( reverse('brand-home-url', None, kwargs={ 'slug': brand.slug, 'id': id })) ctxt = search_browser_filter(request, **{'brand': brand}) if request.is_ajax(): return ctxt html_page = 'categories/category.html' if not ctxt['products']: html_page = 'categories/zero_result.html' ctxt['title'] = brand.name ctxt['is_brand_page'] = True return render_to_response(html_page, ctxt, context_instance=RequestContext(request))
def search_tag(request, tag, tag_filter=None): battle = None if tag == "battle": battle = List.objects.filter(type="battle", is_featured=True, starts_on__lte=datetime.now(), ends_on__gte=datetime.now()) if battle: battle = battle[0] else: battle = None if not battle: raise Http404 if tag_filter: tag = '(%s AND %s)' % (tag, tag_filter) ctxt = search_browser_filter(request, **{'tag': tag}) tabs = Tab.objects.filter(list__type='battle').order_by('sort_order') tags = ProductTags.objects.filter(type='battle') tag_ids = tags.values('tag').distinct() total_pages = range(1, ctxt['total_pages'] + 1) prods2 = [] prods = ctxt['products'] items_in_sec1 = 4 if len(prods) > items_in_sec1: length1 = items_in_sec1 for len2 in range(items_in_sec1, len(prods)): prods2.append(prods[len2]) else: length1 = len(prods) prods1 = prods[:length1] search_url = ctxt['base_url'] if tag_filter: search_url = '/search/t/battle/' else: search_url = search_url[:-1] tag_info = [] for tag in tag_ids: tag = ProductTags.objects.get(id=tag['tag']) info = {} q = 'tags: (%s AND battle) AND currency:inr' % tag.tag.tag solr_result = solr_search(q, fields='id', request=request) ids = [int(doc['id']) for doc in solr_result.results] info['tag'] = tag info['count'] = len(ids) tag_info.append(info) return render_to_response("categories/battle.html", { "total_results": ctxt['total_results'], "total_pages": total_pages, "base_url": ctxt['base_url'], "pagination": ctxt['pagination'], "filters": ctxt['filters'], "tabs": tabs, "tags": tag_info, "prods1": prods1, "prods2": prods2, "search_url": search_url, "battle": battle }, context_instance=RequestContext(request))
def search_tag(request,tag,tag_filter=None): battle = None if tag == "battle": battle = List.objects.filter(type="battle",is_featured=True,starts_on__lte=datetime.now(),ends_on__gte=datetime.now()) if battle: battle = battle[0] else: battle = None if not battle: raise Http404 if tag_filter: tag = '(%s AND %s)' %(tag,tag_filter) ctxt = search_browser_filter(request,**{'tag':tag}) tabs = Tab.objects.filter(list__type = 'battle').order_by('sort_order') tags = ProductTags.objects.filter(type='battle') tag_ids = tags.values('tag').distinct() total_pages = range(1,ctxt['total_pages']+1) prods2 = [] prods = ctxt['products'] items_in_sec1 = 4 if len(prods)>items_in_sec1: length1 = items_in_sec1 for len2 in range(items_in_sec1,len(prods)): prods2.append(prods[len2]) else: length1 = len(prods) prods1 = prods[:length1] search_url = ctxt['base_url'] if tag_filter: search_url = '/search/t/battle/' else: search_url = search_url[:-1] tag_info = [] for tag in tag_ids: tag = ProductTags.objects.get(id=tag['tag']) info = {} q = 'tags: (%s AND battle) AND currency:inr' % tag.tag.tag solr_result = solr_search(q, fields='id',request=request) ids = [int(doc['id']) for doc in solr_result.results] info['tag'] = tag info['count'] = len(ids) tag_info.append(info) return render_to_response("categories/battle.html", { "total_results": ctxt['total_results'], "total_pages": total_pages, "base_url": ctxt['base_url'], "pagination": ctxt['pagination'], "filters": ctxt['filters'], "tabs":tabs, "tags":tag_info, "prods1":prods1, "prods2":prods2, "search_url":search_url, "battle":battle }, context_instance = RequestContext(request))
def shop_by_discount(request): params = request.GET discount = {} discount['min'] = str(params.get('min_d','0')) discount['max'] = str(params.get('max_d','*')) discount['label'] = "discount_%s" % request.client.id ctxt = search_browser_filter(request, **{'discount':discount}) if request.is_ajax(): return ctxt html_page = 'categories/category.html' if not ctxt.get('products',[]): html_page = 'categories/zero_result.html' return render_to_response(html_page, ctxt, context_instance = RequestContext(request))
def shop_by_price(request): params = request.GET price = {} price['min'] = str(params.get('min_p','0')) price['max'] = str(params.get('max_p','*')) price['label'] = "offerprice_%s" % request.client.id ctxt = search_browser_filter(request, **{'price':price}) if request.is_ajax(): return ctxt html_page = 'categories/category.html' if not ctxt.get('products',[]): html_page = 'categories/zero_result.html' return render_to_response(html_page, ctxt, context_instance = RequestContext(request))
def shop_by_discount(request): params = request.GET discount = {} discount['min'] = str(params.get('min_d', '0')) discount['max'] = str(params.get('max_d', '*')) discount['label'] = "discount_%s" % request.client.id ctxt = search_browser_filter(request, **{'discount': discount}) if request.is_ajax(): return ctxt html_page = 'categories/category.html' if not ctxt.get('products', []): html_page = 'categories/zero_result.html' return render_to_response(html_page, ctxt, context_instance=RequestContext(request))
def shop_by_price(request): params = request.GET price = {} price['min'] = str(params.get('min_p', '0')) price['max'] = str(params.get('max_p', '*')) price['label'] = "offerprice_%s" % request.client.id ctxt = search_browser_filter(request, **{'price': price}) if request.is_ajax(): return ctxt html_page = 'categories/category.html' if not ctxt.get('products', []): html_page = 'categories/zero_result.html' return render_to_response(html_page, ctxt, context_instance=RequestContext(request))
def search(request): ctxt = search_browser_filter(request) if request.is_ajax(): return ctxt html_page = 'categories/category.html' if not ctxt.get('products', []): html_page = 'categories/zero_result.html' try: if not ctxt.get('spell_suggestion', []): html_page = 'categories/zero_result.html' else: html_page = 'categories/search_suggestion.html' except: pass return render_to_response(html_page, ctxt, context_instance = RequestContext(request))
def search(request): ctxt = search_browser_filter(request) if request.is_ajax(): return ctxt html_page = 'categories/category.html' if not ctxt.get('products', []): html_page = 'categories/zero_result.html' try: if not ctxt.get('spell_suggestion', []): html_page = 'categories/zero_result.html' else: html_page = 'categories/search_suggestion.html' except: pass return render_to_response(html_page, ctxt, context_instance=RequestContext(request))
def get_sbf_context_by_products(request, products): product_ids = [] for product in products: prod_id = product.id if product.type == 'variant': variant = ProductVariant.objects.filter(variant=product) if variant: variant = variant[0] prod_id = variant.blueprint.id if str(prod_id) not in product_ids: product_ids.append(str(prod_id)) if product_ids: prod_ids = " OR ".join(product_ids) prod_ids = "(" + str(prod_ids) + ")" from web.views.sbf_views import search_browser_filter ctxt = search_browser_filter(request,**{'product':prod_ids}) else: ctxt = dict(products=None) return ctxt
def get_sbf_context_by_products(request, products): product_ids = [] for product in products: prod_id = product.id if product.type == 'variant': variant = ProductVariant.objects.filter(variant=product) if variant: variant = variant[0] prod_id = variant.blueprint.id if str(prod_id) not in product_ids: product_ids.append(str(prod_id)) if product_ids: prod_ids = " OR ".join(product_ids) prod_ids = "(" + str(prod_ids) + ")" from web.views.sbf_views import search_browser_filter ctxt = search_browser_filter(request, **{'product': prod_ids}) else: ctxt = dict(products=None) return ctxt
def itz_homepage(request): error = '' itz_offer = {} hero_deal = {} mega_menu_categories = '' _client = request.client.client net_details = save_franc_network_in_dict(request) if not 'is_network' in net_details or not 'is_franchise' in net_details or net_details['is_network']: return HttpResponseRedirect('/accounts/login/') home_page_ctxt_key = 'itz_homepage#%s' % (_client.id) home_page_context = cache.get(home_page_ctxt_key) if not home_page_context: tag = Tag.objects.filter(tag='itz') if tag: tag = tag[0] q = 'tag_id:%s' % tag.id params = {} params['rows'] = 1000 itz_solr_result = solr_search(q, fields='id', **params) #itz_categories_solr = search_browser_filter(request, **{'tag_ids' : tag.id }) else: error = "No Itz tag found" home_page_context = {'error':error,} if error or itz_solr_result.numFound == 0: error = "No Itz products found. Add products from admin site." home_page_context = {'error':error,} else: itz_product_ids = [res['id'] for res in itz_solr_result.results] itz_seller_charts = SellerRateChart.objects.filter(product__in=itz_product_ids) mega_menu_categories = MegaDropDown.objects.select_related("category").filter(type="menu_level2_category", client=_client).order_by('sort_order') for cat in mega_menu_categories: itz_offer[cat.category.id] = {} temp_dict = search_browser_filter(request,**{ 'category': cat.category }) if 'total_results' in temp_dict: itz_offer[cat.category.id]['total_results'] = temp_dict['total_results'] if 'filter_form' in temp_dict: itz_offer[cat.category.id]['gmin'] = temp_dict['filter_form'].gmin if 'products' in temp_dict: itz_offer[cat.category.id]['products'] = temp_dict['products'] from dealprops.models import DailyDeal, DailyDealImage hero_deals = DailyDeal.objects.select_related('id', 'type').filter(status='published', starts_on__lte=datetime.now(),ends_on__gte=datetime.now(), client=_client, type = 'hero_deal').order_by('-starts_on')[:1] if hero_deals: hero_deal_obj = hero_deals[0] if hero_deal_obj: hero_deal_rate_chart = None daily_deal_products = hero_deal_obj.dailydealproduct_set.all() if daily_deal_products: daily_deal_product = daily_deal_products[0] hero_deal_rate_chart = daily_deal_product.product.primary_rate_chart() if hero_deal_rate_chart in itz_seller_charts: hero_deal['deal'] = hero_deal_obj hero_deal['url'] = hero_deal_rate_chart.product.url() try: hero_deal_image = DailyDealImage.objects.get(daily_deal=hero_deal_obj) except DailyDealImage.MultipleObjectsReturned: hero_deal_image = DailyDealImage.objects.filter(daily_deal=hero_deal_obj).order_by('order')[0] except DailyDealImage.DoesNotExist: pass if hero_deal_image: hero_deal['main_banner'] = hero_deal_image.banner home_page_context = { 'net_details':net_details, 'error':error, 'itz_offer':itz_offer, 'mega_menu_categories':mega_menu_categories, 'hero_deal':hero_deal, } cache.set(home_page_ctxt_key, home_page_context, 1800) home_page_context['request'] = request return render_to_response('itz_homepage.html', home_page_context, context_instance=RequestContext(request))
def detail(request, slug, id): if request.method == "POST": log.info('params %s' % request.POST) #selected_variants = request.POST.getlist('selected_variants') variant_ids = [] for v in request.POST: if v.startswith('deal_'): vls = v.split('_') variant_ids.append(vls[1]) log.info('variants id %s' % variant_ids) cart = get_cart(request) for p in variant_ids: rate_chart = SellerRateChart.objects.filter(product__id=p) if rate_chart: cart.add_item(request, rate_chart[0]) return HttpResponseRedirect('/orders/mycart') _client = request.client.client try: # Check for currently running daily_deal deal = DailyDeal.objects.get(client=request.client.client, type="hero_deal", starts_on__lte=datetime.now(), ends_on__gte=datetime.now(), status="published") except (DailyDeal.DoesNotExist, DailyDeal.MultipleObjectsReturned): raise Http404 deal_rate_charts = [] deal_products = [] if deal: # Get all daily deal products deal_products = [ deal_product.product for deal_product in deal.dailydealproduct_set.all() ] if not deal_products: raise Http404 ids = [] if len(deal_products) > 1: # Deal has multiple products, # render it to SRP from web.views.sbf_views import search_browser_filter for product in deal_products: if product.type == 'variant': variant = ProductVariant.objects.filter(variant=product) if variant: variant = variant[0] ids.append(str(variant.blueprint.id)) else: ids.append(str(product.id)) prod_ids = " OR ".join(ids) prod_ids = "(" + str(prod_ids) + ")" ctxt = search_browser_filter(request, **{'product': prod_ids}) ctxt['daily_deal'] = True if request.is_ajax(): return ctxt return render_to_response('categories/category.html', ctxt, context_instance=RequestContext(request)) else: # Deal has only one product # render it to PDP product = deal_products[0] return HttpResponseRedirect('%s' % (get_cc_url(request, product.url()))) raise Http404 in_box_content = '' if deal.in_box_accessories: in_box_content = deal.in_box_accessories else: feature_grp = FeatureGroup.objects.filter( product_type=deal_product.product_type) for grp in feature_grp: if grp.name == 'Accessories': feature_all = deal_product.productfeatures_set.all() features = feature_all.filter( feature__group=grp).order_by('feature__sort_order') for feature in features: feature_content = {} try: in_box_content = str(feature.data) except: pass prod_list = [] if deal.type == "multiple": for deal_prod in deal_products: product = Product.objects.get(id=deal_prod.product.id) images = product.productimage_set.all().order_by('id') blueprint = product try: sellerRateChart = product.primary_rate_chart() except SellerRateChart.DoesNotExist: log.error('Error finding preferred ratechart for %s' % product.title) continue if images: thumbnail = images[0].thumbnail_image.name else: thumbnail = None sizes = [] product_variant = ProductVariant.objects.filter(variant=product) if product_variant: product_variant = product_variant[0].blueprint for pv in product_variant.variants.iterator(): try: feature = pv.variant.productfeatures_set.get( feature__id=1701) sizes.append({ 'size': feature.data, 'variant': pv.variant }) except: pass prod_list.append({ 'product': product, 'blueprint': blueprint, 'image': thumbnail, 'product_images': images, 'rateChart': sellerRateChart, 'sizes': sizes }) return render_to_response("stealoftheday/detail.html", { 'deal': deal, 'in_box_content': in_box_content, 'deal_rate_chart': deal_rate_chart, 'deal_product': deal_product, 'prod_list': prod_list, }, context_instance=RequestContext(request))
def detail(request, slug, id): if request.method == "POST": log.info('params %s' % request.POST) #selected_variants = request.POST.getlist('selected_variants') variant_ids = [] for v in request.POST: if v.startswith('deal_'): vls = v.split('_') variant_ids.append(vls[1]) log.info('variants id %s' % variant_ids) cart = get_cart(request) for p in variant_ids: rate_chart = SellerRateChart.objects.filter(product__id=p) if rate_chart: cart.add_item(request, rate_chart[0]) return HttpResponseRedirect('/orders/mycart') _client = request.client.client try: # Check for currently running daily_deal deal = DailyDeal.objects.get(client=request.client.client, type="hero_deal", starts_on__lte = datetime.now(), ends_on__gte = datetime.now(), status = "published") except (DailyDeal.DoesNotExist, DailyDeal.MultipleObjectsReturned) : raise Http404 deal_rate_charts = [] deal_products = [] if deal: # Get all daily deal products deal_products = [deal_product.product for deal_product in deal.dailydealproduct_set.all()] if not deal_products: raise Http404 ids = [] if len(deal_products) > 1: # Deal has multiple products, # render it to SRP from web.views.sbf_views import search_browser_filter for product in deal_products: if product.type == 'variant': variant = ProductVariant.objects.filter(variant=product) if variant: variant = variant[0] ids.append(str(variant.blueprint.id)) else: ids.append(str(product.id)) prod_ids = " OR ".join(ids) prod_ids = "(" + str(prod_ids) + ")" ctxt = search_browser_filter(request,**{'product':prod_ids}) ctxt['daily_deal'] = True if request.is_ajax(): return ctxt return render_to_response('categories/category.html',ctxt,context_instance=RequestContext(request)) else: # Deal has only one product # render it to PDP product = deal_products[0] return HttpResponseRedirect('%s' % (get_cc_url(request, product.url()))) raise Http404 in_box_content = '' if deal.in_box_accessories: in_box_content = deal.in_box_accessories else: feature_grp = FeatureGroup.objects.filter(product_type = deal_product.product_type) for grp in feature_grp: if grp.name == 'Accessories': feature_all = deal_product.productfeatures_set.all() features = feature_all.filter(feature__group = grp).order_by('feature__sort_order') for feature in features: feature_content = {} try: in_box_content = str(feature.data) except: pass prod_list = [] if deal.type == "multiple": for deal_prod in deal_products: product = Product.objects.get(id=deal_prod.product.id) images = product.productimage_set.all().order_by('id') blueprint = product try: sellerRateChart = product.primary_rate_chart() except SellerRateChart.DoesNotExist: log.error('Error finding preferred ratechart for %s' % product.title) continue if images: thumbnail = images[0].thumbnail_image.name else: thumbnail = None sizes = [] product_variant = ProductVariant.objects.filter(variant=product) if product_variant: product_variant = product_variant[0].blueprint for pv in product_variant.variants.iterator(): try: feature = pv.variant.productfeatures_set.get(feature__id=1701) sizes.append({'size':feature.data,'variant':pv.variant}) except: pass prod_list.append({'product':product,'blueprint':blueprint, 'image':thumbnail, 'product_images':images,'rateChart':sellerRateChart,'sizes':sizes}) return render_to_response( "stealoftheday/detail.html", { 'deal':deal, 'in_box_content':in_box_content, 'deal_rate_chart':deal_rate_chart, 'deal_product':deal_product, 'prod_list':prod_list, }, context_instance = RequestContext(request))