def brand_home(request, user=0): return account_views.my_custom_404_view(request) page_user_prof = UserProfile.objects.get(id=user) filter_id = request.GET.get('q', None) if request.is_ajax(): data = product_feed_json(request, for_user=page_user_prof, shelf=filter_id, user_is_brand=True) data = json.dumps(data, cls=DjangoJSONEncoder, default=lambda obj: None) return HttpResponse(data, content_type="application/json") else: tpl = 'pages/middle_content_only.html' tpl_vars = { 'selected_tab': 'myshelf', 'filtered_shelf': Shelf.objects.get(id=filter_id) if filter_id else None, 'feed_type': 'items', 'page_name': 'myshelf', 'feed_filter': 'products', 'page_user_prof': page_user_prof, 'page_title': SEO_VALUES['shelf_home']['title'], 'meta_description': SEO_VALUES['shelf_home']['meta_desc'] } return render_to_response(tpl, tpl_vars, context_instance=RequestContext(request))
def shelf_home(request, user=0, filter=None): ''' cases: - is_ajax = if its an ajax request, we want to render an httpresponse for the response (endless scroll) - feed.is_empty() = the user has no items in their feed, render the empty version of their homepage into middle content only - feed not empty = normal flow, render their sidebar alongside the feed of their items ''' return account_views.my_custom_404_view(request) page_user_prof = UserProfile.objects.get(id=user) filter_id = request.GET.get('q', None) #feed = WishlistItemsFeed(request, {"shelf": filter_id}, user=page_user_prof).generate_items() if request.is_ajax(): data = [] product_data = [] blog_data = [] instagram_data = [] feed_filter = request.GET.get('filter', 'blog') if feed_filter == 'all' or feed_filter == 'products': product_data = product_feed_json(request, for_user=page_user_prof, shelf=filter_id) if feed_filter == 'all' or feed_filter == 'photos': instagram_data = instagram_feed_json(request, for_user=page_user_prof) if feed_filter == 'all' or feed_filter == 'blog': blog_data = blog_feed_json(request, for_user=page_user_prof) while blog_data or instagram_data or product_data: if blog_data: data.append(blog_data.pop()) if instagram_data: data.append(instagram_data.pop()) if product_data: data.append(product_data.pop()) data.reverse() data = json.dumps(data, cls=DjangoJSONEncoder, default=lambda obj: None) return HttpResponse(data, content_type="application/json") else: if not filter: filter = 'blog' tpl = 'pages/middle_content_only.html' tpl_vars = { 'selected_tab': 'myshelf', 'filtered_shelf': Shelf.objects.get(id=filter_id) if filter_id else None, 'feed_type': 'items', 'page_name': 'myshelf', 'feed_filter': filter, 'page_user_prof': page_user_prof, 'page_title': SEO_VALUES['shelf_home']['title'], 'meta_description': SEO_VALUES['shelf_home']['meta_desc'] } return render_to_response(tpl, tpl_vars, context_instance=RequestContext(request))
def summary_page(request): brand = request.visitor["brand"] if request.is_ajax(): try: search_query = json.loads(request.body) except ValueError: search_query = {} if search_query.get('filter') == feeds_helpers.BLOG_FEED_FILTER_KEY: data = feeds_helpers.blog_feed_json_dashboard(request, for_brand=brand, limit_size=3) if search_query.get('filter') == feeds_helpers.PRODUCT_FEED_FILTER_KEY: data = feeds_helpers.product_feed_json(request, for_brand=brand, limit_size=3) if search_query.get( 'filter') == feeds_helpers.INSTAGRAM_FEED_FILTER_KEY: data = feeds_helpers.instagram_feed_json(request, for_brand=brand, limit_size=3) if search_query.get( 'filter') == feeds_helpers.PINTEREST_FEED_FILTER_KEY: data = feeds_helpers.pinterest_feed_json(request, for_brand=brand, limit_size=3) if search_query.get('filter') == feeds_helpers.TWITTER_FEED_FILTER_KEY: data = feeds_helpers.twitter_feed_json(request, for_brand=brand, limit_size=3) data = json.dumps(data, cls=DjangoJSONEncoder) return HttpResponse(data, content_type="application/json") else: context = { "brand": brand, } return render(request, 'pages/brand_dashboard/summary_page.html', context)
def mentioning_products(request): brand = request.visitor["brand"] base_brand = request.visitor["base_brand"] if not base_brand or not base_brand.is_subscribed or not base_brand.stripe_plan in STRIPE_ANALYTICS_PLANS: return redirect("/") rq_debug = request.GET.get('debug') != None if request.is_ajax() or rq_debug: try: search_query = json.loads(request.body) except ValueError: search_query = {} brand_domain = search_query.get("keyword", brand.domain_name) if rq_debug: brand_domain = "zappos.com" possible_brands = list( models.Brands.objects.filter(domain_name=brand_domain, blacklisted=False).only( 'id', 'products_count').values( 'id', 'products_count')) if possible_brands: possible_brands.sort(key=lambda x: -x["products_count"]) for_brand = models.Brands.objects.get(id=possible_brands[0]["id"]) else: for_brand = brand print for_brand data = feeds_helpers.product_feed_json(request, for_brand=for_brand, prepare_pagination=False) data = json.dumps(data, cls=DjangoJSONEncoder) # f = open('/home/walrus/Desktop/feed.json', 'wb') # f.write(data) # f.close() if rq_debug: return HttpResponse("<body>%s</body>" % data) else: return HttpResponse(data, content_type="application/json") else: return render(request, 'pages/brand_dashboard/bm_products.html', { 'selected_tab': 'dashboard', 'sub_page': 'mentions_products', })
def brand_items(request, brand_url, brand_id): try: brands_qs = Brands.objects brand = brands_qs.get(id=brand_id, domain_name=brand_url) except: raise Http404() if request.is_ajax(): data = feeds_helpers.product_feed_json( request, for_influencer=brand.pseudoinfluencer) data = json.dumps(data, cls=DjangoJSONEncoder) return HttpResponse(data, content_type="application/json") else: return render( request, 'pages/brand_profile/brand_items.html', { 'influencer': brand.pseudoinfluencer, 'brand': brand, 'page': 'items', 'selected_tab': 'brand_profile', 'hide_nav': True, 'search_page': True, })
def blogger_items(request, influencer_id): brand = request.visitor["brand"] base_brand = request.visitor["base_brand"] assoc_inf = account_helpers.get_associated_influencer(request.user) try: influencer = Influencer.objects influencer = influencer.prefetch_related('platform_set') influencer = influencer.get(id=influencer_id) except: raise Http404() if brand: mongo_utils.track_query("brand-clicked-blogger-products", {'blog_url': influencer.blog_url}, {"user_id": request.visitor["auth_user"].id}) account_helpers.intercom_track_event(request, "brand-clicked-blogger-products", {'blog_url': influencer.blog_url}) elif assoc_inf: account_helpers.intercom_track_event(request, "blogger-view-products", {'blog_url': influencer.blog_url}) if request.is_ajax() or request.GET.get('debug'): data = feeds_helpers.product_feed_json(request, for_influencer=influencer) data = json.dumps(data, cls=DjangoJSONEncoder) if request.GET.get('debug'): return HttpResponse("<body></body>") return HttpResponse(data, content_type="application/json") else: influencer = serializers.annotate_influencer(influencer, request=request) return render( request, 'pages/bloggers/blogger_items.html', { 'influencer': influencer, 'page': 'items', 'selected_tab': 'search_bloggers', 'search_page': True, })