server/web/tweetgserver/views.py
changeset 6 8ffe9b89a23e
parent 1 e0dbcf98c13e
child 32 1e47b1f9f42d
equal deleted inserted replaced
5:ab76826cf7bc 6:8ffe9b89a23e
     1 #!/usr/bin/env python
     1 #!/usr/bin/env python
     2 # -*- coding: utf-8 -*-
     2 # -*- coding: utf-8 -*-
     3 
     3 
     4 from datetime import datetime, timedelta
       
     5 from flask import Response, request #@UnresolvedImport
     4 from flask import Response, request #@UnresolvedImport
     6 from flaskext.sqlalchemy import get_debug_queries
     5 from flaskext.sqlalchemy import get_debug_queries
     7 from iri_tweet.models import TweetSource, Tweet
     6 from iri_tweet.models import TweetSource, Tweet
     8 from pyrfc3339.generator import generate
     7 from sqlalchemy import func #@UnresolvedImport
     9 from sqlalchemy import func, desc #@UnresolvedImport
     8 from tweetgserver import app, db
    10 from sqlalchemy.orm import joinedload
     9 from datetime import datetime
    11 from tweetgserver import app, db, cache
       
    12 import pytz
       
    13 import simplejson as json #@UnresolvedImport
    10 import simplejson as json #@UnresolvedImport
    14 import re
       
    15 import math
       
    16 
    11 
    17 def jsonpwrap(resobj):
    12 def jsonpwrap(resobj):
    18     resp_str = json.dumps(resobj)
    13     resp_str = json.dumps(resobj)
    19     callback_param = request.args.get("callback")
    14     callback_param = request.args.get("callback")
    20     if callback_param:
    15     if callback_param:
    28 def index():
    23 def index():
    29     query = db.session.query(func.count(TweetSource.id)) #@UndefinedVariable
    24     query = db.session.query(func.count(TweetSource.id)) #@UndefinedVariable
    30     ts_list_count = query.scalar()
    25     ts_list_count = query.scalar()
    31     return 'Nb of tweets ' + str(ts_list_count)
    26     return 'Nb of tweets ' + str(ts_list_count)
    32 
    27 
    33 @app.route('/total', methods=['GET'])
    28 @app.route('/total/<int:since>', methods=['GET'])
    34 def total():
    29 def total(since):
    35     query = db.session.query(func.count(TweetSource.id)) #@UndefinedVariable
    30     sincetime = datetime.fromtimestamp(since)
       
    31     delta_td = datetime.now() - sincetime
       
    32     delta_s = delta_td.total_seconds()
       
    33     query = db.session.query(func.count(Tweet.id)).filter(Tweet.created_at >= sincetime) #@UndefinedVariable
    36     ts_list_count = query.scalar()
    34     ts_list_count = query.scalar()
    37     return jsonpwrap({"total":ts_list_count})
    35     res = {
       
    36            "total" : ts_list_count,
       
    37            "delta": int(delta_s),
       
    38            "tweets_per_minute": 60. * ts_list_count / delta_s
       
    39            }
       
    40     return jsonpwrap(res)
    38 
    41 
    39 @app.route('/podium/<tokens>', methods=['GET'])
    42 @app.route('/podium/<int:since>/<tokens>', methods=['GET'])
    40 def podium(tokens):
    43 def podium(since, tokens):
       
    44     sincetime = datetime.fromtimestamp(since)
    41     token_list = tokens.split(",")
    45     token_list = tokens.split(",")
    42     query_base = db.session.query(func.count(Tweet.id)) #@UndefinedVariable
    46     query_base = db.session.query(func.count(Tweet.id)) #@UndefinedVariable
    43     podium_res = {}
    47     podium_res = {}
    44     for token in token_list:
    48     for token in token_list:
    45         query = query_base.filter(Tweet.text.op('~*')(token)) #@UndefinedVariable
    49         query = query_base.filter(Tweet.text.op('~*')(token)) #@UndefinedVariable