Esempio n. 1
0
def getjson(request, datatype):
    req = request.REQUEST

    start = req.get('start', None)
    end = req.get('end', None)
    daysofweek = req.get('daysofweek', '')
    reply = req.get('reply', None)
    lat = bool(req.get('lat', False))
    email = req.get('email', None)
    granularity = req.get('granularity', None)

    if start: start = parse(start)
    if end: end = parse(end)
    if daysofweek: daysofweek = daysofweek.split(",")
    if reply is not None: reply = bool(reply)
    

    curruser = User.objects.get(username=request.user)

    #ATTENTION: going to need to change the host once we deploy live
    #conn_string = "host=localhost dbname=liamg user=liamg password=liamg"

    #connect to db to get the data
    #conn = psycopg2.connect(conn_string)
    conn = connection


    #get the curruser id so that you can pass it to the functions below
    curridsql = "select id from accounts where user_id = %s"
    c = conn.cursor()
    c.execute(curridsql, (request.user.pk,))
    currid = c.fetchone()[0]

###################
#This portion of the code will be to retrieve the graph data for the rec'd tab
###################

    #get the top people who respond to the user
    if datatype == 'topsenders':
        req = request.REQUEST
        start = req.get('start', None)
        print start
        end = req.get ('end', None)
        top = 10       
        email = curruser.username
        data = topsenders.get_top_senders(top, start, end, email, conn)

    #use this to get the mini graph next to the top ten that displays count
    elif datatype == "getcount":
        #called from timeline.py
        bd = ByDayNorm()
        queries = []
        
        #get the queries for the line charts in the top ten
        queries.append(('y', bd.get_sql(lat=lat, reply=reply, start=start, end=end, granularity=granularity, email=email, currid=currid)))
        ld = BDLineData()
        chartdata, maxval = ld.get_data(queries, conn, 1, granularity=granularity, start=start, end=end)
        data = [chartdata, maxval]

    #get the rate for a specifc user (filtered) and for the general population
    elif datatype == "getrate":
        req = request.REQUEST
        start = req.get('start', None)
        end = req.get('end', None)
        emailAddy = curruser.username
        replyAddy = req.get('email', 'ALL')
        #if there is an empty email string, then set the replyAddy to ALL - this
        #will filter for the entire database
        if replyAddy == "":
            replyAddy = 'ALL'
        mode = req.get('mode', None)
        data = responseRateByTime.get_response_rate(mode, start, end, emailAddy, replyAddy, conn)

    #use this to get the count in the first graph for the rec'd tab
    elif datatype == "byhour":
        #called from statsbyhour.py
        ebh = RepliesByHour()
        queries = []
        queries.append(('y', ebh.get_sql(lat=lat, reply=reply, start=start, end=end,
                                         daysofweek=daysofweek, email=email, currid = currid)))
        ld = LineData()
        data = ld.get_data(queries, conn)
    
    #Update: WHAT DOES THIS DO?
#    elif datatype == "contacts":
#        contacts = Contacts()
#        data = contacts.get_data(conn)

    #Update: NOT SURE WHAT THIS DOES?
#    elif datatype == "getlatency":
#        bd = ByDay()
#        queries = []
#        queries.append(('y', bd.get_sql(lat=lat, reply=reply, start=start, end=end,
#                                        granularity=granularity, email=email)))
#        ld = BDLineData()

#        chartdata, maxval = ld.get_data(queries, conn, 0, granularity=granularity, start=start, end=end)
#        data = [chartdata, maxval]

 
########################
#This portion of the code will be for the sent tab
########################

    #get the sent top ten people who the user contacts
    elif datatype == "topsent":
        req = request.REQUEST
        start = req.get('start', None)
        end = req.get('end', None)
        top = 10 
        email = curruser.username
        data = topsent.get_top_sent(top, start, end, email, conn)

   #TODO: use this to get the mini charts for the sent tab
    elif datatype == "countmini":
        print 'hello' #enter code here
    
    #Use this to get the count of emails that a person sends to others
    elif datatype == "countsent":
        queries = []
        user = curruser.username
        
        req = request.REQUEST
        start = req.get('start', None)
        end = req.get('end', None)
        to_email = req.get('email', None)
        queries.append(('y',sent_tab.get_count_sent_sql(start, end, user, to_email, conn)))
        ld = LineData()
        data = ld.get_data(queries, conn)

    #TODO: use this to get the delay between when user responds to emails that others send to them
    elif datatype == "delay_sent":
        print 'hello'#enter code here that gets the delay
    
    elif datatype == "rate_sent":
        #WIP: working on the connection to the already made algorithm for determining rate
        req = request.REQUEST
        start = req.get('start', None)
        end = req.get('end', None)
        replyAddy = curruser.username
        emailAddy = req.get('email', 'ALL')
        #if there is an empty email string, then set the replyAddy to ALL - this
        #will filter for the entire database
        if emailAddy == "":
            emailAddy = 'ALL'
        mode = req.get('mode', None)
        data = responseRateByTime.get_response_rate(mode, start, end, emailAddy, replyAddy, conn)

    else:
        return HttpResponse('json call not recognized')

    # return data as json
    return HttpResponse(json.dumps(data), mimetype="application/json")
Esempio n. 2
0
def getjson(request, datatype):
    req = request.REQUEST

    start = req.get('start', None)
    end = req.get('end', None)
    daysofweek = req.get('daysofweek', '')
    reply = req.get('reply', None)
    lat = bool(req.get('lat', False))
    email = req.get('email', None)
    granularity = req.get('granularity', None)

    if start: start = parse(start)
    if end: end = parse(end)
    if daysofweek: daysofweek = daysofweek.split(",")
    if reply is not None: reply = bool(reply)
    

    curruser = User.objects.get(username=request.user)

    #ATTENTION: going to need to change the host once we deploy live
    #conn_string = "host=localhost dbname=liamg user=liamg password=liamg"

    #connect to db to get the data
    #conn = psycopg2.connect(conn_string)
    conn = connection

    #DEPRECATED: for the sqlite prototype database
    #conn = sqlite3.connect(curruser.dbname, detect_types=sqlite3.PARSE_DECLTYPES)


    #get the curruser id so that you can pass it to the functions below
    curridsql = "select id from accounts where user_id = %s"
    c = conn.cursor()
    c.execute(curridsql, (request.user.pk,))
    currid = c.fetchone()[0]



    #get the top people who respond to the user
    if datatype == 'topsenders':
        req = request.REQUEST
        start = req.get('start', None)
        end = req.get ('end', None)
        top = 10       
        email = curruser.username
        data = topsenders.get_top_senders(top, start, end, email, conn)
    
    #get the sent top ten people who the user contacts
    elif datatype == "topsent":
        req = request.REQUEST
        start = req.get('start', None)
        end = req.get('end', None)
        top = 10 
        email = curruser.username
        data = topsent.get_top_sent(top, start, end, email, conn)

    #get the rate for a specifc user (filtered) and for the general population
    elif datatype == "getrate":
        req = request.REQUEST
        start = req.get('start', None)
        end = req.get('end', None)
        emailAddy = curruser.username
        replyAddy = req.get('email', None)
        mode = req.get('mode', None)
        data = responseRateByTime.get_response_rate(mode, start, end, emailAddy, replyAddy, conn)


    #use this to get the count in the first graph and maybe the second graph?
    elif datatype == "byhour":
        ebh = RepliesByHour()
        queries = []

        queries.append(('y', ebh.get_sql(lat=lat, reply=reply, start=start, end=end,
                                         daysofweek=daysofweek, email=email, currid = currid)))
        ld = LineData()
        data = ld.get_data(queries, conn)

    #not sure what this does yet?
    elif datatype == "contacts":
        contacts = Contacts()
        data = contacts.get_data(conn)

    #get the second graph that shows the response time
    elif datatype == "getlatency":
        bd = ByDay()
        queries = []
        queries.append(('y', bd.get_sql(lat=lat, reply=reply, start=start, end=end,
                                        granularity=granularity, email=email)))
        ld = BDLineData()

        chartdata, maxval = ld.get_data(queries, conn, 0, granularity=granularity, start=start, end=end)
        data = [chartdata, maxval]

    #use this to get the small graph next to the top ten
    elif datatype == "getcount":
        bd = ByDayNorm()
        queries = []
        
        #get the queries for the line charts in the top ten
        queries.append(('y', bd.get_sql(lat=lat, reply=reply, start=start, end=end, granularity=granularity, email=email, currid=currid)))
        ld = BDLineData()

        chartdata, maxval = ld.get_data(queries, conn, 1, granularity=granularity, start=start, end=end)
        data = [chartdata, maxval]

    else:
        return HttpResponse('json call not recognized')

    # return data as json
    return HttpResponse(json.dumps(data), mimetype="application/json")
Esempio n. 3
0
def getjson(request, datatype):
    req = request.REQUEST

    start = req.get('start', None)
    end = req.get('end', None)
    daysofweek = req.get('daysofweek', '')
    reply = req.get('reply', None)
    lat = bool(req.get('lat', False))
    email = req.get('email', None)
    granularity = req.get('granularity', None)

    if start: start = parse(start)
    if end: end = parse(end)
    if daysofweek: daysofweek = daysofweek.split(",")
    if reply is not None: reply = bool(reply)

    curruser = User.objects.get(username=request.user)

    #ATTENTION: going to need to change the host once we deploy live
    #conn_string = "host=localhost dbname=liamg user=liamg password=liamg"

    #connect to db to get the data
    #conn = psycopg2.connect(conn_string)
    conn = connection

    #get the curruser id so that you can pass it to the functions below
    curridsql = "select id from accounts where user_id = %s"
    c = conn.cursor()
    c.execute(curridsql, (request.user.pk, ))
    currid = c.fetchone()[0]

    ###################
    #This portion of the code will be to retrieve the graph data for the rec'd tab
    ###################

    #get the top people who respond to the user
    if datatype == 'topsenders':
        req = request.REQUEST
        start = req.get('start', None)
        print start
        end = req.get('end', None)
        top = 10
        email = curruser.username
        data = topsenders.get_top_senders(top, start, end, email, conn)

    #use this to get the mini graph next to the top ten that displays count
    elif datatype == "getcount":
        #called from timeline.py
        bd = ByDayNorm()
        queries = []

        #get the queries for the line charts in the top ten
        queries.append(('y',
                        bd.get_sql(lat=lat,
                                   reply=reply,
                                   start=start,
                                   end=end,
                                   granularity=granularity,
                                   email=email,
                                   currid=currid)))
        ld = BDLineData()
        chartdata, maxval = ld.get_data(queries,
                                        conn,
                                        1,
                                        granularity=granularity,
                                        start=start,
                                        end=end)
        data = [chartdata, maxval]

    #get the rate for a specifc user (filtered) and for the general population
    elif datatype == "getrate":
        req = request.REQUEST
        start = req.get('start', None)
        end = req.get('end', None)
        emailAddy = curruser.username
        replyAddy = req.get('email', 'ALL')
        #if there is an empty email string, then set the replyAddy to ALL - this
        #will filter for the entire database
        if replyAddy == "":
            replyAddy = 'ALL'
        mode = req.get('mode', None)
        data = responseRateByTime.get_response_rate(mode, start, end,
                                                    emailAddy, replyAddy, conn)

    #use this to get the count in the first graph for the rec'd tab
    elif datatype == "byhour":
        #called from statsbyhour.py
        ebh = RepliesByHour()
        queries = []
        queries.append(('y',
                        ebh.get_sql(lat=lat,
                                    reply=reply,
                                    start=start,
                                    end=end,
                                    daysofweek=daysofweek,
                                    email=email,
                                    currid=currid)))
        ld = LineData()
        data = ld.get_data(queries, conn)

    #Update: WHAT DOES THIS DO?
#    elif datatype == "contacts":
#        contacts = Contacts()
#        data = contacts.get_data(conn)

#Update: NOT SURE WHAT THIS DOES?
#    elif datatype == "getlatency":
#        bd = ByDay()
#        queries = []
#        queries.append(('y', bd.get_sql(lat=lat, reply=reply, start=start, end=end,
#                                        granularity=granularity, email=email)))
#        ld = BDLineData()

#        chartdata, maxval = ld.get_data(queries, conn, 0, granularity=granularity, start=start, end=end)
#        data = [chartdata, maxval]

########################
#This portion of the code will be for the sent tab
########################

#get the sent top ten people who the user contacts
    elif datatype == "topsent":
        req = request.REQUEST
        start = req.get('start', None)
        end = req.get('end', None)
        top = 10
        email = curruser.username
        data = topsent.get_top_sent(top, start, end, email, conn)

#TODO: use this to get the mini charts for the sent tab
    elif datatype == "countmini":
        print 'hello'  #enter code here

    #Use this to get the count of emails that a person sends to others
    elif datatype == "countsent":
        queries = []
        user = curruser.username

        req = request.REQUEST
        start = req.get('start', None)
        end = req.get('end', None)
        to_email = req.get('email', None)
        queries.append(
            ('y', sent_tab.get_count_sent_sql(start, end, user, to_email,
                                              conn)))
        ld = LineData()
        data = ld.get_data(queries, conn)

    #TODO: use this to get the delay between when user responds to emails that others send to them
    elif datatype == "delay_sent":
        print 'hello'  #enter code here that gets the delay

    elif datatype == "rate_sent":
        #WIP: working on the connection to the already made algorithm for determining rate
        req = request.REQUEST
        start = req.get('start', None)
        end = req.get('end', None)
        replyAddy = curruser.username
        emailAddy = req.get('email', 'ALL')
        #if there is an empty email string, then set the replyAddy to ALL - this
        #will filter for the entire database
        if emailAddy == "":
            emailAddy = 'ALL'
        mode = req.get('mode', None)
        data = responseRateByTime.get_response_rate(mode, start, end,
                                                    emailAddy, replyAddy, conn)

    else:
        return HttpResponse('json call not recognized')

    # return data as json
    return HttpResponse(json.dumps(data), mimetype="application/json")