예제 #1
0
    def obj_create(self, bundle, request=None, **kwargs):
        url = bundle.data['url']
        port = get_port(bundle)
        bundle.data['port'] = port

        # check to see if this exists
        blacklist_item = get_BlackListItem(url, port)
        if blacklist_item:
            blacklist_item.delete()

        # do not create if it is a default blacklist url
        if url in DEFAULT_BLACKLIST:
            return bundle

        try:
            WhiteListItem.objects.get(user=request.user, url=url, port=port)
        except WhiteListItem.DoesNotExist:
            try:
                return super(WhiteListItemResource,
                             self).obj_create(bundle,
                                              request,
                                              user=request.user,
                                              **kwargs)
            except MultipleObjectsReturned as e:
                logger.info(e)
                return bundle
        return bundle
예제 #2
0
def add_tag(request):
    domain = request.POST.get('domain', None)
    name = request.POST.get('tag', None)
    if not domain or not name:
        return {'res': 'failed'}

    user = request.user
    try:
        tags = Tag.objects.filter(user=user, domain=domain)
        if tags.count() > 0:
            tag = tags[0]
            tag.name = name
            tag.is_private = True
            tag.save()
        else:

            color_tags = Tag.objects.filter(user=user, name=name)
            if color_tags.count() > 0:
                color = color_tags[0].color
            else:
                r = lambda: random.randint(0, 255)
                color = '%02X%02X%02X' % (r(), r(), r())
            Tag.objects.get_or_create(user=user,
                                      domain=domain,
                                      name=name,
                                      color=color)
    except Exception, e:
        logger.info(e)
예제 #3
0
    def obj_create(self, bundle, request=None, **kwargs):
        url = bundle.data['url']
        port = get_port(bundle)
        bundle.data['port'] = port

        # check to see if this exists
        blacklist_item = get_BlackListItem(url, port)
        if blacklist_item:
            blacklist_item.delete()

        # do not create if it is a default blacklist url
        if url in DEFAULT_BLACKLIST:
            return bundle

        try:
            WhiteListItem.objects.get(user=request.user, url=url, port=port)
        except WhiteListItem.DoesNotExist:
            try:
                return super(WhiteListItemResource,
                             self).obj_create(
                    bundle, request,
                    user=request.user, **kwargs)
            except MultipleObjectsReturned as e:
                logger.info(e)
                return bundle
        return bundle
예제 #4
0
def add_tag(request):
    domain = request.POST.get('domain', None)
    name = request.POST.get('tag', None)
    if not domain or not name:
        return {'res': 'failed'}

    user = request.user
    try:
        tags = Tag.objects.filter(user=user, domain=domain)
        if tags.count() > 0:
            tag = tags[0]
            tag.name = name
            tag.is_private = True
            tag.save()
        else:

            color_tags = Tag.objects.filter(user=user, name=name)
            if color_tags.count() > 0:
                color = color_tags[0].color
            else:
                r = lambda: random.randint(0, 255)
                color = '%02X%02X%02X' % (r(), r(), r())
            Tag.objects.get_or_create(
                user=user, domain=domain, name=name, color=color)
    except Exception, e:
        logger.info(e)
예제 #5
0
def sync_twitter(request):
    """
        Edit connection (following/followers)
    """

    user = request.user

    template_dict = {
        "connected": False,
        "synced": "You are not connected to Eyebrowse."
    }

    auth = tweepy.OAuthHandler(
        TWITTER_CONSUMER_KEY, TWITTER_CONSUMER_SECRET,
        "http://eyebrowse.csail.mit.edu/accounts/profile/sync_twitter")

    twitter_info = TwitterInfo.objects.filter(user=user)
    if len(twitter_info) > 0:
        auth.set_access_token(twitter_info[0].access_token,
                              twitter_info[0].access_token_secret)

        api = tweepy.API(auth)
        template_dict[
            "synced"] = "Your Twitter account is already connected to Eyebrowse."

        get_twitter_info(request, api, twitter_info[0], template_dict)

    else:
        if "request_token" in request.session:
            token = request.session.pop("request_token")
            auth.request_token = token
            try:
                verifier = request.GET.get('oauth_verifier')
                auth.get_access_token(verifier)
                token = auth.access_token
                secret = auth.access_token_secret

                api = tweepy.API(auth)
                twitter_user = api.me()
                username = twitter_user.screen_name
                twitter_id = twitter_user.id

                twit_obj = TwitterInfo.objects.create(
                    user=user,
                    twitter_username=username,
                    twitter_id=twitter_id,
                    access_token=token,
                    access_token_secret=secret)
                template_dict[
                    "synced"] = "Your Twitter account is now connected to Eyebrowse!"

                get_twitter_info(request, api, twit_obj, template_dict)

            except tweepy.TweepError, e:
                logger.info(e)
                logger.info("Error! Failed to get access token")

        else:
예제 #6
0
def sync_twitter(request):
    """
        Edit connection (following/followers)
    """

    user = request.user

    template_dict = {"connected": False,
                     "synced": "You are not connected to Eyebrowse."}

    auth = tweepy.OAuthHandler(
        TWITTER_CONSUMER_KEY,
        TWITTER_CONSUMER_SECRET,
        "http://eyebrowse.csail.mit.edu/accounts/profile/sync_twitter")

    twitter_info = TwitterInfo.objects.filter(user=user)
    if len(twitter_info) > 0:
        auth.set_access_token(
            twitter_info[0].access_token,
            twitter_info[0].access_token_secret)

        api = tweepy.API(auth)
        template_dict[
            "synced"] = "Your Twitter account is already connected to Eyebrowse."
            
        get_twitter_info(request, api, twitter_info[0], template_dict)
            
    else:
        if "request_token" in request.session:
            token = request.session.pop("request_token")
            auth.request_token = token
            try:
                verifier = request.GET.get('oauth_verifier')
                auth.get_access_token(verifier)
                token = auth.access_token
                secret = auth.access_token_secret

                api = tweepy.API(auth)
                twitter_user = api.me()
                username = twitter_user.screen_name
                twitter_id = twitter_user.id

                twit_obj = TwitterInfo.objects.create(
                    user=user, twitter_username=username, twitter_id=twitter_id,
                    access_token=token, access_token_secret=secret)
                template_dict[
                    "synced"] = "Your Twitter account is now connected to Eyebrowse!"
                    
                get_twitter_info(request, api, twit_obj, template_dict)

            except tweepy.TweepError, e:
                logger.info(e)
                logger.info("Error! Failed to get access token")

        else:
예제 #7
0
def clicked_item(request):
    try:
        logger.info(request)
        if request.user.is_authenticated():
            user = get_object_or_404(User, username=request.user.username)
        else:
            user = None
        ip = get_ip(request)
        url_click = request.POST.get('url_click')
        url_refer = request.POST.get('url_refer')
        
        _ = ClickItem.objects.create(user=user, ip_address=ip, url_clicked=url_click, url_referrer=url_refer)
        
    except Exception, e:
        logger.info(e)
예제 #8
0
def clicked_item(request):
    try:
        logger.info(request)
        if request.user.is_authenticated():
            user = get_object_or_404(User, username=request.user.username)
        else:
            user = None
        ip = get_ip(request)
        url_click = request.POST.get('url_click')
        url_refer = request.POST.get('url_refer')

        _ = ClickItem.objects.create(user=user,
                                     ip_address=ip,
                                     url_clicked=url_click,
                                     url_referrer=url_refer)

    except Exception, e:
        logger.info(e)
예제 #9
0
def clicked_item(request):
    try:
        logger.info(request)
        if request.user.is_authenticated():
            user = get_object_or_404(User, username=request.user.username)
        else:
            user = None
        ip = get_ip(request)
        url_click = request.POST.get('url_click')
        url_refer = request.POST.get('url_refer')
        recommendation = request.POST.get('recommendation', None)

        c = ClickItem(user=user, ip_address=ip, url_clicked=url_click, url_referrer=url_refer)

        if recommendation:
            c.recommendation = True

        c.save()
        
    except Exception, e:
        logger.info(e)
예제 #10
0
    def obj_create(self, bundle, request=None, **kwargs):
        url = bundle.data['url']
        port = get_port(bundle)
        bundle.data['port'] = port

        # check to see if this exists
        whitelist_item = get_WhiteListItem(url, port)
        if whitelist_item:
            whitelist_item.delete()
        try:
            BlackListItem.objects.get(user=request.user, url=url, port=port)
        except BlackListItem.DoesNotExist:
            try:
                return super(BlackListItemResource, self
                             ).obj_create(
                    bundle, request, user=request.user, **kwargs)
            except MultipleObjectsReturned as e:
                logger.info(e)
                return bundle

        return bundle
예제 #11
0
    def obj_create(self, bundle, request=None, **kwargs):
        url = bundle.data['url']
        port = get_port(bundle)
        bundle.data['port'] = port

        # check to see if this exists
        whitelist_item = get_WhiteListItem(url, port)
        if whitelist_item:
            whitelist_item.delete()
        try:
            BlackListItem.objects.get(user=request.user, url=url, port=port)
        except BlackListItem.DoesNotExist:
            try:
                return super(BlackListItemResource, self
                             ).obj_create(
                    bundle, request, user=request.user, **kwargs)
            except MultipleObjectsReturned as e:
                logger.info(e)
                return bundle

        return bundle
예제 #12
0
def clicked_item(request):
    try:
        logger.info(request)
        if request.user.is_authenticated():
            user = get_object_or_404(User, username=request.user.username)
        else:
            user = None
        ip = get_ip(request)
        url_click = request.POST.get('url_click')
        url_refer = request.POST.get('url_refer')
        recommendation = request.POST.get('recommendation', None)

        c = ClickItem(user=user,
                      ip_address=ip,
                      url_clicked=url_click,
                      url_referrer=url_refer)

        if recommendation:
            c.recommendation = True

        c.save()

    except Exception, e:
        logger.info(e)
예제 #13
0
                    user=user,
                    twitter_username=username,
                    twitter_id=twitter_id,
                    access_token=token,
                    access_token_secret=secret)
                template_dict[
                    "synced"] = "Your Twitter account is now connected to Eyebrowse!"

                get_twitter_info(request, api, twit_obj, template_dict)

            except tweepy.TweepError, e:
                logger.info(e)
                logger.info("Error! Failed to get access token")

        else:
            logger.info("no request_token")
            try:
                redirect_rule = auth.get_authorization_url()
                request.session["request_token"] = auth.request_token
                return redirect_to(request, redirect_rule)
            except tweepy.TweepError, e:
                logger.info(e)
                logger.info("Error! Failed to get request token")

    return _template_values(request,
                            page_title="Connect Twitter",
                            navbar='nav_account',
                            sub_navbar="subnav_sync_twitter",
                            **template_dict)

예제 #14
0
    def obj_create(self, bundle, request=None, **kwargs):
        url = bundle.data['url']
        domain = url_domain(url)

        bundle.data['domain'] = domain

        title = bundle.data['title']
        start_time = bundle.data['start_time']
        start_event = bundle.data['start_event']
        end_time = bundle.data['end_time']
        end_event = bundle.data['end_event']
        favicon_url = bundle.data.get('favIconUrl')
        bundle.data['favicon_url'] = favicon_url
        src = bundle.data['src']

        end_time = datetime.datetime.strptime(
            end_time, '%Y-%m-%dT%H:%M:%S.%fZ').replace(tzinfo=pytz.utc)
        start_time = datetime.datetime.strptime(
            start_time, '%Y-%m-%dT%H:%M:%S.%fZ').replace(tzinfo=pytz.utc)

        message = bundle.data.get('message')

        if message and message.strip() == '':
            message = None

        if message:
            bundle.data.pop('message', None)

        try:
            exists = EyeHistory.objects.filter(user=request.user, url=url,
                                               title=title, src=src, favicon_url=favicon_url,
                                               start_time__gt=start_time -
                                               datetime.timedelta(minutes=1),
                                               start_event=start_event)
            if exists.count() > 0:
                eye_his = exists[0]
                eye_his.end_time = end_time
                eye_his.end_event = end_event
                elapsed_time = end_time - start_time
                eye_his.total_time = int(round(
                    (elapsed_time.microseconds / 1.0E3) + (elapsed_time.seconds * 1000) + (elapsed_time.days * 8.64E7)))
                eye_his.humanize_time = humanize_time(elapsed_time)
                eye_his.save()
                if message:
                    eye_message, _ = EyeHistoryMessage.objects.get_or_create(
                        eyehistory=eye_his, message=message)
                    notify_message(message=eye_message)
            else:
                # save_raw_eyehistory(request.user, url, title, start_event, end_event, start_time, end_time, src, domain, favicon_url)
                dup_histories = EyeHistory.objects.filter(
                    user=request.user, url=url, title=title, end_time__gt=start_time - datetime.timedelta(minutes=5))
                if dup_histories.count() > 0:
                    obj = merge_histories(dup_histories, end_time, end_event)
                    if message:
                        eye_message, _ = EyeHistoryMessage.objects.get_or_create(
                            eyehistory=obj, message=message)
                        notify_message(message=eye_message)
                else:
                    bundle_res = super(EyeHistoryResource, self).obj_create(
                        bundle, request, user=request.user, **kwargs)
                    check_bumps(request.user, start_time, end_time, url)

                    if message:
                        eye_message, _ = EyeHistoryMessage.objects.get_or_create(
                            eyehistory=bundle_res.obj, message=message)
                        notify_message(message=eye_message)

                    return bundle_res
        except MultipleObjectsReturned as e:
            logger.info(e)
            # multiple items created, delete duplicates
            call_command('remove_duplicate_history')

        return bundle
예제 #15
0
 def log(self, msg):
     msg = 'update_popular_history:::%s\n' % msg
     logger.info(msg)
 def log(self, msg):
     msg = 'update_popular_history:::%s\n' % msg
     logger.info(msg)
예제 #17
0
    def obj_create(self, bundle, request=None, **kwargs):
        url = bundle.data['url']
        domain = url_domain(url)

        bundle.data['domain'] = domain

        title = bundle.data.get('title')
        start_time = bundle.data.get('start_time')
        start_event = bundle.data.get('start_event')
        end_time = bundle.data.get('end_time')
        end_event = bundle.data.get('end_event')
        favicon_url = bundle.data.get('favIconUrl')
        bundle.data['favicon_url'] = favicon_url
        src = bundle.data.get('src')
        tags = bundle.data.get('tags')

        if tags:
            tags = json.loads(tags);

        if end_time and start_time:
            end_time = datetime.datetime.strptime(
                end_time, '%Y-%m-%dT%H:%M:%S.%fZ').replace(tzinfo=pytz.utc)
            start_time = datetime.datetime.strptime(
                start_time, '%Y-%m-%dT%H:%M:%S.%fZ').replace(tzinfo=pytz.utc)
        else:
            end_time = datetime.datetime.now().replace(tzinfo=pytz.utc)
            start_time = datetime.datetime.now().replace(tzinfo=pytz.utc)

        message = bundle.data.get('message')
        highlight = bundle.data.get('highlight')
        parent_comment = bundle.data.get('parent_comment')

        if message and message.strip() == '':
            message = None

        if message:
            bundle.data.pop('message', None)
        if highlight:
            bundle.data.pop('highlight', None)
        if parent_comment:
            bundle.data.pop('parent_comment', None)

        try:
            exists = EyeHistory.objects.filter(user=request.user, url=url,
                                               title=title, src=src, favicon_url=favicon_url,
                                               start_time__gt=start_time -
                                               datetime.timedelta(minutes=1),
                                               start_event=start_event)
            if exists.count() > 0:
                eye_his = exists[0]
                eye_his.end_time = end_time
                eye_his.end_event = end_event
                elapsed_time = end_time - start_time
                eye_his.total_time = int(round(
                    (elapsed_time.microseconds / 1.0E3) + (elapsed_time.seconds * 1000) + (elapsed_time.days * 8.64E7)))
                eye_his.humanize_time = humanize_time(elapsed_time)
                eye_his.save()
                if message:
                    eye_message, _ = EyeHistoryMessage.objects.get_or_create(
                        eyehistory=eye_his, message=message)
                    notify_message(message=eye_message)
            else:
                # save_raw_eyehistory(request.user, url, title, start_event, end_event, start_time, end_time, src, domain, favicon_url)
                dup_histories = EyeHistory.objects.filter(
                    user=request.user, url=url, title=title, end_time__gt=start_time - datetime.timedelta(minutes=5))
                if dup_histories.count() > 0:
                    obj = merge_histories(dup_histories, end_time, end_event)
                    if message:
                        eye_message, _ = EyeHistoryMessage.objects.get_or_create(
                            eyehistory=obj, message=message)
                        notify_message(message=eye_message)
                else:
                    bundle_res = super(EyeHistoryResource, self).obj_create(
                        bundle, request, user=request.user, **kwargs)
                    check_bumps(request.user, start_time, end_time, url)
                    if message:
                        eye_message = None
                        if parent_comment:
                            h = Highlight.objects.get(id=highlight)
                            eye_message, _ = EyeHistoryMessage.objects.get_or_create(
                                eyehistory=bundle_res.obj, message=message, highlight=h, parent_comment=parent_comment)
                        elif highlight:
                            h = Highlight.objects.get(id=highlight)
                            eye_message, _ = EyeHistoryMessage.objects.get_or_create(
                                eyehistory=bundle_res.obj, message=message, highlight=h)
                        else:
                            eye_message, _ = EyeHistoryMessage.objects.get_or_create(
                                eyehistory=bundle_res.obj, message=message)

                        if tags:
                            for tag in tags:
                                if len(Tag.objects.filter(comment=eye_message, common_tag__name=tag)) == 0:
                                    try:
                                        common_tag = CommonTag.objects.get(name=tag)
                                        vt = Tag(
                                            common_tag=common_tag,
                                            user=request.user,
                                            comment=eye_message,
                                        )
                                        vt.save()
                                    except CommonTag.DoesNotExist:
                                        pass


                        notify_message(message=eye_message)
                    return bundle_res
        except MultipleObjectsReturned as e:
            logger.info(e)
            # multiple items created, delete duplicates
            call_command('remove_duplicate_history')

        return bundle
예제 #18
0
def profile_viz(request, username=None):

    if request.GET.get("date") is None or request.GET.get("date") == "null":
        return redirect_to(request,
                           "/users/%s/visualizations?date=last week&query=%s" %
                           (username, request.GET.get("query", "")))

    if request.user.is_authenticated():
        user = get_object_or_404(User, username=request.user.username)
        userprof = UserProfile.objects.get(user=user)
        confirmed = userprof.confirmed
        if not confirmed:
            return redirect('/consent')
    else:
        user = None
        userprof = None

    username, follows, profile_user, empty_search_msg, nav_bar = _profile_info(
        user, username)

    get_dict, query, date, sort, filter = _get_query(request)
    logger.info(get_dict)
    logger.info(date)

    get_dict["orderBy"] = "end_time"
    get_dict["direction"] = "hl"
    get_dict["filter"] = ""
    get_dict["page"] = request.GET.get("page", 1)
    get_dict["username"] = profile_user.username
    get_dict["sort"] = "time"

    hist, history_stream = live_stream_query_manager(get_dict, profile_user)

    # stats
    tot_time, item_count = profile_stat_gen(profile_user)

    fav_data = FavData.objects.get(user=profile_user)

    num_history = EyeHistory.objects.filter(user=profile_user).count()

    is_online = online_user(user=profile_user)

    following_count = profile_user.profile.follows.count()
    follower_count = UserProfile.objects.filter(
        follows=profile_user.profile).count()

    today = datetime.now() - timedelta(hours=24)
    day_count = hist.filter(start_time__gt=today
                            ).values('url', 'title'
                                     ).annotate(num_urls=Sum('total_time')
                                                ).order_by('-num_urls')[:3]
    day_domains = hist.filter(
        start_time__gt=today
    ).values('domain'
             ).annotate(num_domains=Sum('total_time')
                        ).order_by('-num_domains')[:5]

    day_chart = {}
    for domain in day_domains:
        day_chart[domain['domain']] = domain['num_domains']

    last_week = today - timedelta(days=7)
    week_count = hist.filter(start_time__gt=last_week).values(
        'url', 'title'
    ).annotate(num_urls=Sum('total_time')
               ).order_by('-num_urls')[:3]
    week_domains = hist.filter(
        start_time__gt=last_week
    ).values('domain'
             ).annotate(num_domains=Sum('total_time')
                        ).order_by('-num_domains')[:5]

    week_chart = {}
    for domain in week_domains:
        week_chart[domain['domain']] = domain['num_domains']

    template_dict = {
        'visualization': True,
        'username': profile_user.username,
        'following_count': following_count,
        'follower_count': follower_count,
        "profile_user": profile_user,
        "history_stream": history_stream,
        "empty_search_msg": empty_search_msg,
        "follows": str(follows),
        "is_online": is_online,
        "num_history": num_history,
        "tot_time": tot_time,
        "item_count": item_count,
        "fav_data": fav_data,
        "query": query,
        "date": date,
        'day_articles': day_count,
        'week_articles': week_count,
        'day_chart': json.dumps(day_chart),
        'week_chart': json.dumps(week_chart),

    }

    return _template_values(
        request,
        page_title="profile history",
        navbar=nav_bar,
        sub_navbar="subnav_data",
        **template_dict)
예제 #19
0
    def obj_create(self, bundle, request=None, **kwargs):
        url = bundle.data['url']
        domain = url_domain(url)

        bundle.data['domain'] = domain

        title = bundle.data['title']
        start_time = bundle.data['start_time']
        start_event = bundle.data['start_event']
        end_time = bundle.data['end_time']
        end_event = bundle.data['end_event']
        favicon_url = bundle.data.get('favIconUrl')
        bundle.data['favicon_url'] = favicon_url
        src = bundle.data['src']

        end_time = datetime.datetime.strptime(
            end_time, '%Y-%m-%dT%H:%M:%S.%fZ').replace(tzinfo=pytz.utc)
        start_time = datetime.datetime.strptime(
            start_time, '%Y-%m-%dT%H:%M:%S.%fZ').replace(tzinfo=pytz.utc)

        message = bundle.data.get('message')

        if message and message.strip() == '':
            message = None

        if message:
            bundle.data.pop('message', None)

        try:
            exists = EyeHistory.objects.filter(user=request.user,
                                               url=url,
                                               title=title,
                                               src=src,
                                               favicon_url=favicon_url,
                                               start_time__gt=start_time -
                                               datetime.timedelta(minutes=1),
                                               start_event=start_event)
            if exists.count() > 0:
                eye_his = exists[0]
                eye_his.end_time = end_time
                eye_his.end_event = end_event
                elapsed_time = end_time - start_time
                eye_his.total_time = int(
                    round((elapsed_time.microseconds / 1.0E3) +
                          (elapsed_time.seconds * 1000) +
                          (elapsed_time.days * 8.64E7)))
                eye_his.humanize_time = humanize_time(elapsed_time)
                eye_his.save()
                if message:
                    eye_message, _ = EyeHistoryMessage.objects.get_or_create(
                        eyehistory=eye_his, message=message)
                    notify_message(message=eye_message)
            else:
                # save_raw_eyehistory(request.user, url, title, start_event, end_event, start_time, end_time, src, domain, favicon_url)
                dup_histories = EyeHistory.objects.filter(
                    user=request.user,
                    url=url,
                    title=title,
                    end_time__gt=start_time - datetime.timedelta(minutes=5))
                if dup_histories.count() > 0:
                    obj = merge_histories(dup_histories, end_time, end_event)
                    if message:
                        eye_message, _ = EyeHistoryMessage.objects.get_or_create(
                            eyehistory=obj, message=message)
                        notify_message(message=eye_message)
                else:
                    bundle_res = super(EyeHistoryResource,
                                       self).obj_create(bundle,
                                                        request,
                                                        user=request.user,
                                                        **kwargs)
                    check_bumps(request.user, start_time, end_time, url)

                    if message:
                        eye_message, _ = EyeHistoryMessage.objects.get_or_create(
                            eyehistory=bundle_res.obj, message=message)
                        notify_message(message=eye_message)

                    return bundle_res
        except MultipleObjectsReturned as e:
            logger.info(e)
            # multiple items created, delete duplicates
            call_command('remove_duplicate_history')

        return bundle
예제 #20
0
                twitter_id = twitter_user.id

                twit_obj = TwitterInfo.objects.create(
                    user=user, twitter_username=username, twitter_id=twitter_id,
                    access_token=token, access_token_secret=secret)
                template_dict[
                    "synced"] = "Your Twitter account is now connected to Eyebrowse!"
                    
                get_twitter_info(request, api, twit_obj, template_dict)

            except tweepy.TweepError, e:
                logger.info(e)
                logger.info("Error! Failed to get access token")

        else:
            logger.info("no request_token")
            try:
                redirect_rule = auth.get_authorization_url()
                request.session["request_token"] = auth.request_token
                return redirect_to(request, redirect_rule)
            except tweepy.TweepError, e:
                logger.info(e)
                logger.info("Error! Failed to get request token")

    return _template_values(request,
                            page_title="Connect Twitter",
                            navbar='nav_account',
                            sub_navbar="subnav_sync_twitter",
                            **template_dict)

예제 #21
0
def profile_viz(request, username=None):

    if request.GET.get("date") is None or request.GET.get("date") == "null":
        return redirect_to(
            request, "/users/%s/visualizations?date=last week&query=%s" %
            (username, request.GET.get("query", "")))

    if request.user.is_authenticated():
        user = get_object_or_404(User, username=request.user.username)
        userprof = UserProfile.objects.get(user=user)
        confirmed = userprof.confirmed
        if not confirmed:
            return redirect('/consent')
    else:
        user = None
        userprof = None

    username, follows, profile_user, empty_search_msg, nav_bar = _profile_info(
        user, username)

    get_dict, query, date, sort, filter = _get_query(request)
    logger.info(get_dict)
    logger.info(date)

    get_dict["orderBy"] = "end_time"
    get_dict["direction"] = "hl"
    get_dict["filter"] = ""
    get_dict["page"] = request.GET.get("page", 1)
    get_dict["username"] = profile_user.username
    get_dict["sort"] = "time"

    hist, history_stream = live_stream_query_manager(get_dict, profile_user)

    # stats
    tot_time, item_count = profile_stat_gen(profile_user)

    fav_data = FavData.objects.get(user=profile_user)

    num_history = EyeHistory.objects.filter(user=profile_user).count()

    is_online = online_user(user=profile_user)

    following_count = profile_user.profile.follows.count()
    follower_count = UserProfile.objects.filter(
        follows=profile_user.profile).count()

    today = datetime.now() - timedelta(hours=24)
    day_count = hist.filter(start_time__gt=today).values(
        'url',
        'title').annotate(num_urls=Sum('total_time')).order_by('-num_urls')[:3]
    day_domains = hist.filter(start_time__gt=today).values('domain').annotate(
        num_domains=Sum('total_time')).order_by('-num_domains')[:5]

    day_chart = {}
    for domain in day_domains:
        day_chart[domain['domain']] = domain['num_domains']

    last_week = today - timedelta(days=7)
    week_count = hist.filter(start_time__gt=last_week).values(
        'url',
        'title').annotate(num_urls=Sum('total_time')).order_by('-num_urls')[:3]
    week_domains = hist.filter(
        start_time__gt=last_week).values('domain').annotate(
            num_domains=Sum('total_time')).order_by('-num_domains')[:5]

    week_chart = {}
    for domain in week_domains:
        week_chart[domain['domain']] = domain['num_domains']

    template_dict = {
        'visualization': True,
        'username': profile_user.username,
        'following_count': following_count,
        'follower_count': follower_count,
        "profile_user": profile_user,
        "history_stream": history_stream,
        "empty_search_msg": empty_search_msg,
        "follows": str(follows),
        "is_online": is_online,
        "num_history": num_history,
        "tot_time": tot_time,
        "item_count": item_count,
        "fav_data": fav_data,
        "query": query,
        "date": date,
        'day_articles': day_count,
        'week_articles': week_count,
        'day_chart': json.dumps(day_chart),
        'week_chart': json.dumps(week_chart),
    }

    return _template_values(request,
                            page_title="profile history",
                            navbar=nav_bar,
                            sub_navbar="subnav_data",
                            **template_dict)