Example #1
0
def blogger_pins(request, influencer_id):
    brand = request.visitor["brand"]
    base_brand = request.visitor["base_brand"]
    assoc_inf = account_helpers.get_associated_influencer(request.user)
    plan_name = brand.stripe_plan
    try:
        influencers_qs = Influencer.objects.prefetch_related('platform_set')
        influencer = influencers_qs.get(id=influencer_id)
    except:
        raise Http404()
    if brand:
        mongo_utils.track_query("brand-clicked-blogger-pins",
                                {'blog_url': influencer.blog_url},
                                {"user_id": request.visitor["auth_user"].id})

        account_helpers.intercom_track_event(request,
                                             "brand-clicked-blogger-pins",
                                             {'blog_url': influencer.blog_url})
    elif assoc_inf:
        account_helpers.intercom_track_event(request, "blogger-view-pins",
                                             {'blog_url': influencer.blog_url})
    if request.is_ajax():
        data = feeds_helpers.pinterest_feed_json(request,
                                                 for_influencer=influencer,
                                                 default_posts="about_pins")
        data = json.dumps(data, cls=DjangoJSONEncoder)
        return HttpResponse(data, content_type="application/json")
    else:
        influencer = serializers.annotate_influencer(influencer,
                                                     request=request)

        context = {
            'influencer': influencer,
            'page': 'pins',
            'selected_tab': 'search_bloggers',
            'search_page': True,
            'type': 'all',
            'selected_tab': 'search',
            'sub_page': 'main_search',
            'shelf_user': request.visitor["user"],
            'debug': settings.DEBUG,
            'tag_id': request.GET.get('tag_id'),
            'saved_search': request.GET.get('saved_search'),
        }

        context.update(
            search_helpers.prepare_filter_params(context, plan_name=plan_name))

        return render(request, 'pages/bloggers/blogger_pins.html', context)
Example #2
0
    def create(self, request):
        # from debra.brand_helpers import bookmarking_task
        from debra import account_helpers, mongo_utils

        mongo_utils.track_visit(request)

        brand = request.visitor['base_brand']
        data = json.loads(request.body)

        # check if group with such name exists
        note, recent_tag, brand_tag_ids, _ = self._get_tag_ids(brand.id)
        tag_names = redis_cache.get_many(
            ['ig_{}'.format(tag_id) for tag_id in brand_tag_ids]).values()

        if data.get('name') in tag_names:
            return Response(
                {
                    'status': 'error',
                    'content': 'Collection with such name already exists',
                },
                status=status.HTTP_400_BAD_REQUEST)

        tag = InfluencersGroup.objects.create(
            name=data.get('name'),
            owner_brand=brand,
            creator_brand=brand,
            creator_userprofile=request.visitor['user'],
        )
        settings.REDIS_CLIENT.sadd('btags_{}'.format(brand.id), tag.id)
        # settings.REDIS_CLIENT.hset('brectags', brand.id, tag.id)

        # track
        mongo_utils.track_query("brand-create-collection", {
            'collection_name': tag.name,
        }, {"user_id": request.visitor["auth_user"].id})

        account_helpers.intercom_track_event(request,
                                             "brand-create-collection", {
                                                 'collection_name': tag.name,
                                             })

        return Response({
            'id': tag.id,
            'name': tag.name,
            'selected': True,
            'type': 'tag',
        })
Example #3
0
def blogger_posts_sponsored(request, influencer_id):
    mongo_utils.track_visit(request)
    brand = request.visitor["brand"]
    base_brand = request.visitor["base_brand"]
    assoc_inf = account_helpers.get_associated_influencer(request.user)
    try:
        influencers_qs = Influencer.objects.prefetch_related('platform_set')
        influencer = influencers_qs.get(id=influencer_id)
    except:
        raise Http404()
    if not brand and assoc_inf != influencer:
        return HttpResponseForbidden()
    if brand:
        mongo_utils.track_query("brand-clicked-blogger-sponsored-posts",
                                {'blog_url': influencer.blog_url},
                                {"user_id": request.visitor["auth_user"].id})

        account_helpers.intercom_track_event(
            request, "brand-clicked-blogger-sponsored-posts",
            {'blog_url': influencer.blog_url})
    elif assoc_inf:
        account_helpers.intercom_track_event(request,
                                             "blogger-view-sponsored-posts",
                                             {'blog_url': influencer.blog_url})
    if request.is_ajax():
        data = feeds_helpers.collab_feed_json(request,
                                              for_influencer=influencer,
                                              default_posts="about")
        data = json.dumps(data, cls=DjangoJSONEncoder)
        return HttpResponse(data, content_type="application/json")
    else:
        influencer = serializers.annotate_influencer(influencer,
                                                     request=request)
        return render(
            request, 'pages/bloggers/blogger_posts_sponsored.html', {
                'influencer': influencer,
                'page': 'posts_sponsored',
                'selected_tab': 'search_bloggers',
                'search_page': True,
            })
Example #4
0
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,
            })
Example #5
0
def blogger_generic_posts(request, section, influencer_id, **kwargs):
    mongo_utils.track_visit(request)
    brand = request.visitor["brand"]
    base_brand = request.visitor["base_brand"]

    # parameters
    show_filters = False and brand.stripe_plan

    # get influencer from db
    try:
        influencers_qs = Influencer.objects.prefetch_related('platform_set')
        influencer = influencers_qs.get(id=influencer_id)
    except:
        raise Http404()

    # track events
    if brand:
        mongo_utils.track_query("brand-clicked-blogger-posts",
                                {'blog_url': influencer.blog_url},
                                {"user_id": request.visitor["auth_user"].id})

        account_helpers.intercom_track_event(request,
                                             "brand-clicked-blogger-posts",
                                             {'blog_url': influencer.blog_url})
    elif account_helpers.get_associated_influencer(request.user):
        account_helpers.intercom_track_event(request, "blogger-view-posts",
                                             {'blog_url': influencer.blog_url})

    influencer = serializers.annotate_influencer(influencer, request=request)

    context = {
        'influencer':
        influencer,
        'page':
        normalize_posts_section_name(section),
        'selected_tab':
        'search_bloggers',
        'search_page':
        True,
        'show_filters':
        show_filters,
        'for_influencer':
        influencer.id,
        # 'posts_section': section,
        'initial_search_mode':
        normalize_posts_section_name(section),
        'init_brand':
        kwargs.get('brand_domain'),
        'type':
        'all',
        'selected_tab':
        'search',
        'sub_page':
        'main_search',
        'shelf_user':
        request.visitor["user"],
        'debug':
        settings.DEBUG,
        'tag_id':
        request.GET.get('tag_id'),
        'saved_search':
        request.GET.get('saved_search'),
        'sections':
        get_sections(
            include_all_section=kwargs.get('brand_domain') is not None),
        'blogger_page':
        True,
    }

    if show_filters:
        context.update(
            search_helpers.prepare_filter_params(context,
                                                 plan_name=brand.stripe_plan))

    return render(request, 'pages/bloggers/blogger_generic_posts.html',
                  context)
Example #6
0
def blogger_about(request, influencer_id):
    mongo_utils.track_visit(request)

    mongo_utils.influencer_profile_viewed(influencer_id)

    try:
        influencers_qs = Influencer.objects.prefetch_related('platform_set')
        influencer = influencers_qs.get(id=influencer_id)
    except:
        raise Http404()
    profile = influencer.shelf_user and influencer.shelf_user.userprofile or None

    if influencer.blacklisted:
        from debra.account_views import access_locked_page

        return access_locked_page(request,
                                  "Access is locked by administration.")

    assoc_inf = account_helpers.get_associated_influencer(request.user)
    if assoc_inf == influencer:
        profile_owner = True
        add_email = True
    else:
        profile_owner = False

    brand = request.visitor["brand"]
    base_brand = request.visitor["base_brand"]

    influencer_data = search_helpers.get_influencer_json(
        influencer,
        include_photos=True,
        long_post_content=True,
        request=request)
    try:
        influencer_data['profile']['items_list'] = influencer_data['profile'][
            'items']
    except KeyError:
        pass
    influender_profile_id = influencer_data.get("profile", {}).get("id", None)
    add_email = False
    if base_brand and base_brand.is_subscribed:
        if base_brand.stripe_plan in STRIPE_EMAIL_PLANS:
            add_email = True
        if base_brand.stripe_plan in STRIPE_COLLECTION_PLANS:
            influencer = Influencer.objects.get(id=influencer_id)
            influencer_data["can_favorite"] = True
            influencer_data["is_favoriting"] = brand.influencer_groups.filter(
                influencers_mapping__influencer__id=influencer_id).exists()
    else:
        influencer_data["can_favorite"] = False

    if add_email:
        influencer_data["email"] = False
        emails = influencer.email
        if emails:
            splited = emails.split()
            if splited:
                influencer_data["email"] = splited[0]

    if brand:
        mongo_utils.track_query("brand-clicked-blogger-about",
                                {'blog_url': influencer.blog_url},
                                {"user_id": request.visitor["auth_user"].id})

        account_helpers.intercom_track_event(request,
                                             "brand-clicked-blogger-about",
                                             {'blog_url': influencer.blog_url})
    elif assoc_inf:
        account_helpers.intercom_track_event(request, "blogger-view-about",
                                             {'blog_url': influencer.blog_url})

    influencer = serializers.annotate_influencer(influencer, request=request)

    return render(
        request, 'pages/bloggers/blogger_about.html', {
            'influencer':
            influencer,
            'page':
            'about',
            'posts':
            json.dumps(influencer_data.get("posts"), cls=DjangoJSONEncoder),
            'influencer_data':
            influencer_data,
            'style_tags':
            profile and profile.style_tags and profile.style_tags.split(","),
            'relfashion_stats':
            json.dumps(influencer_data.get("relfashion_stats"),
                       cls=DjangoJSONEncoder),
            'category_stats':
            json.dumps(influencer_data.get("category_stats"),
                       cls=DjangoJSONEncoder),
            'popularity_stats':
            json.dumps(influencer_data.get("popularity_stats"),
                       cls=DjangoJSONEncoder),
            'popularity_sums':
            json.dumps(influencer_data.get("popularity_sums"),
                       cls=DjangoJSONEncoder),
            'STRIPE_PLAN_STARTUP':
            STRIPE_PLAN_STARTUP,
            'STRIPE_PLAN_BASIC':
            STRIPE_PLAN_BASIC,
            'STRIPE_EMAIL_PLANS':
            STRIPE_EMAIL_PLANS,
            'COLLABORATION_TYPES':
            InfluencerCollaborations.COLLABORATION_TYPES,
            'profile_owner':
            profile_owner,
            'selected_tab':
            'search_bloggers',
            'search_page':
            True,
            'sections':
            get_sections(),
            'blogger_page':
            True,
        })