Ejemplo n.º 1
0
def get_notifications_for_user(user,hosts):
    #users = [EndUser.objects.all()[1].user] 
    users = [friendship.to_friend for friendship in user.friend_set.all()]
    recently = int(time.time()*1000 - (12*60*60*1000))
    
    return uniq([dict((('username',page.user.username), ('url',page.url), ('title',page.title), ('host',page.host), ('id', page.url + page.user.username)))
                 for page in PageView.objects.filter(user__in=users,host__in=hosts, endTime__gte=recently) ], lambda x:x['id'],None)
Ejemplo n.º 2
0
def get_delicious_corpus():
    to_msec = int(time.time()*1000)
    from_msec = to_msec - 604800000 # past week
    
    # say your prayers -- returns a dict {url:[tag,tag2,tag3]},...
    return dict([ (page['url'], _get_delicious_tags_for_url(page['url'])) for page in 
                  uniq(PageView.objects.filter(startTime__gte=from_msec,endTime__lte=to_msec).values(),
                       lambda x:x["url"],None) ])
Ejemplo n.º 3
0
def _get_recent_urls_for_user(user):
    to_msec = int(time.time() * 1000)
    from_msec = to_msec - 604800000  # past week
    return [
        evt['url'] for evt in uniq(
            PageView.objects.filter(
                user=user, startTime__gte=from_msec,
                endTime__lte=to_msec).values(), lambda x: x["url"], None)
    ]
Ejemplo n.º 4
0
def get_delicious_corpus():
    to_msec = int(time.time() * 1000)
    from_msec = to_msec - 604800000  # past week

    # say your prayers -- returns a dict {url:[tag,tag2,tag3]},...
    return dict([(page['url'], _get_delicious_tags_for_url(page['url']))
                 for page in uniq(
                     PageView.objects.filter(startTime__gte=from_msec,
                                             endTime__lte=to_msec).values(),
                     lambda x: x["url"], None)])
Ejemplo n.º 5
0
def post_events(request):
    ## lets the user post new activity in a giant single array of activity log elements
    request_user = authenticate_user(request);
    if not request_user:
        return json_response({"error":"Incorrect user/password combination"}, 401)
    
    logs = JSONDecoder().decode(request.raw_post_data)
    committed = [save_entry(entry, request_user) for entry in logs ]
    hosts = uniq([log['entity']['host'] for log in logs], lambda x:x,None)
    notifications = get_notifications_for_user(request_user,hosts) 
    return json_response({"committed":len(committed), "notifications":notifications}, 200)
Ejemplo n.º 6
0
def get_notifications_for_user(user, hosts):
    #users = [EndUser.objects.all()[1].user]
    users = [friendship.to_friend for friendship in user.friend_set.all()]
    recently = int(time.time() * 1000 - (12 * 60 * 60 * 1000))

    return uniq([
        dict((('username', page.user.username), ('url', page.url),
              ('title', page.title), ('host', page.host),
              ('id', page.url + page.user.username)))
        for page in PageView.objects.filter(
            user__in=users, host__in=hosts, endTime__gte=recently)
    ], lambda x: x['id'], None)
Ejemplo n.º 7
0
def post_events(request):
    ## lets the user post new activity in a giant single array of activity log elements
    request_user = authenticate_user(request)
    if not request_user:
        return json_response({"error": "Incorrect user/password combination"},
                             401)

    logs = JSONDecoder().decode(request.raw_post_data)
    committed = [save_entry(entry, request_user) for entry in logs]
    hosts = uniq([log['entity']['host'] for log in logs], lambda x: x, None)
    notifications = get_notifications_for_user(request_user, hosts)
    return json_response(
        {
            "committed": len(committed),
            "notifications": notifications
        }, 200)
Ejemplo n.º 8
0
def _get_top_tfidf_tags_for_enduser(enduser, n, tags_for_page, all_tags, number_of_pages):
    tags = flatten([tags_for_page[url] for url in _get_recent_urls_for_user(enduser.user) if url in tags_for_page and tags_for_page[url] is not None ])    
    enduser_tag_count = len(tags)    
    if enduser_tag_count < 5:
        return

    def freq_in_enduser_tags(tag):
        return tags.count(tag)

    def freq_in_all_pages(tag):
        #this will work as delicious will not return 2 of the same tags for one page
        return all_tags.count(tag) 
    
    def tfidf(tag):         
        tf = (freq_in_enduser_tags(tag) / float(enduser_tag_count))
        idf = math.log(number_of_pages / freq_in_all_pages(tag))

    tfidf_tags = dict([(tag, tfidf(tag)) for tag in uniq(tags, lambda x:x,None)])
    return sorted(tfidf_tags.items(), key=itemgetter(1), reverse=True)[:n]
Ejemplo n.º 9
0
def _get_top_tfidf_tags_for_enduser(enduser, n, tags_for_page, all_tags,
                                    number_of_pages):
    tags = flatten([
        tags_for_page[url] for url in _get_recent_urls_for_user(enduser.user)
        if url in tags_for_page and tags_for_page[url] is not None
    ])
    enduser_tag_count = len(tags)
    if enduser_tag_count < 5:
        return

    def freq_in_enduser_tags(tag):
        return tags.count(tag)

    def freq_in_all_pages(tag):
        #this will work as delicious will not return 2 of the same tags for one page
        return all_tags.count(tag)

    def tfidf(tag):
        tf = (freq_in_enduser_tags(tag) / float(enduser_tag_count))
        idf = math.log(number_of_pages / freq_in_all_pages(tag))

    tfidf_tags = dict([(tag, tfidf(tag))
                       for tag in uniq(tags, lambda x: x, None)])
    return sorted(tfidf_tags.items(), key=itemgetter(1), reverse=True)[:n]
Ejemplo n.º 10
0
def _get_recent_urls_for_user(user):
    to_msec = int(time.time()*1000)
    from_msec = to_msec - 604800000 # past week
    return [evt['url'] for evt in 
            uniq(PageView.objects.filter(user=user,startTime__gte=from_msec,endTime__lte=to_msec).values(),
                 lambda x:x["url"],None)]