def api_summary(): userid = request.args.get('userid', '') categories = request.args.get('categories', '') fromdate = request.args.get('fromdate', '') enddate = request.args.get('enddate', '') if categories == "": category_list = [] else: category_list = categories.split(";") if len(category_list) == 0: sql = "select 'ALL' as name, sum(amount) as amount from expenses" + \ " where userid='" + userid +"' and date>='" + fromdate + \ "' and date<='" + enddate + "'" else: categories = ",".join(["'%s'" % (k) for k in category_list]) sql = "select category as name, sum(amount) as amount from expenses" + \ " where userid='" + userid +"' and date>='" + fromdate + \ "' and date<='" + enddate + "' and category in ("+ \ categories +") group by category" out = Expense.query_sql(sql) if len(out) == 0: out = [] else: if len(out) == 1: if out[0][1] is None: out = [] content = render_template('summary.json', objs=out) content = smarty_remove_extra_comma(content) return content
def get_index_userprofile(): # TODO defensive code username = request.args.get('username') service_name = request.args.get('service_name') index_key_list = request.args.get('index_key_list', '') if index_key_list != '': index_key_list = index_key_list.split(";") sql_format = "select index_key, index_value from userprofile " + \ "where username='******' and service_name='%s' and index_key in (%s)" sql = sql_format % (username, service_name, ",".join(["'%s'" % (k) for k in index_key_list])) print sql out = util.query_sql(sql) out = util.fill_missing_data(out, index_key_list, '0') else: sql_format = "select index_key, index_value from userprofile " + \ "where username='******' and service_name='%s'" sql = sql_format % (username, service_name) print sql out = util.query_sql(sql) print out content = render_template('get_userprofile.json', objs=out) content = util.smarty_remove_extra_comma(content) resp = make_response(content, 200) resp.headers['Content-type'] = 'application/json; charset=utf-8' return resp
def api_summary_daily(): userid = request.args.get('userid', '') fromdate = request.args.get('fromdate', '') enddate = request.args.get('enddate', '') sql_format = "select left(date, 10), sum(amount) from expenses" + \ " where userid='%s' and date >='%s' and date<='%s' group by left(date, 10) order by left(date, 10) asc;" sql = sql_format % (userid, fromdate, enddate) out = Expense.query_sql(sql) date_list = util.get_date_list(fromdate, enddate) date_dict = {} for date in date_list: date_dict[date] = "0" for entry in out: date_dict[entry[0]] = entry[1] key_list = sorted(date_dict.keys()) content = render_template('summary_daily.json', key_list=key_list, date_dict=date_dict) content = smarty_remove_extra_comma(content) return content
def get_index_userprofile(): # TODO defensive code username = request.args.get('username') service_name = request.args.get('service_name') index_key_list = request.args.get('index_key_list', '') if index_key_list != '': index_key_list = index_key_list.split(";") sql_format = "select index_key, index_value from userprofile " + \ "where username='******' and service_name='%s' and index_key in (%s)" sql = sql_format % (username, service_name, ",".join( ["'%s'" % (k) for k in index_key_list])) print sql out = util.query_sql(sql) out = util.fill_missing_data(out, index_key_list, '0') else: sql_format = "select index_key, index_value from userprofile " + \ "where username='******' and service_name='%s'" sql = sql_format % (username, service_name) print sql out = util.query_sql(sql) print out content = render_template('get_userprofile.json', objs=out) content = util.smarty_remove_extra_comma(content) resp = make_response(content, 200) resp.headers['Content-type'] = 'application/json; charset=utf-8' return resp
def api_expense_detail(): userid = request.args.get('userid', '') fromdate = request.args.get('fromdate', '') enddate = request.args.get('enddate', '') out = Expense.query_obj_by_date(userid, fromdate, enddate) content = render_template('list_expense.json', objs=out) content = smarty_remove_extra_comma(content) return content
def get_post(): # TODO defensive code id = request.args.get('id', '') post = data.get_post(id) content = render_template('get_post.json', post=post) content = smarty_remove_extra_comma(content) resp = make_response(content, 200) resp.headers['Content-type'] = 'application/json; charset=utf-8' return resp
def _list_index(industry, storeID): table_name = get_mongo_tablename(industry, "index") table = mongo_conn.dataplatform[doc_name] index_list = table.find( {"storeID":storeID}).distinct("name") index_str = ', '.join(map(lambda x: "\"%s\"" % x, index_list)) content = render_template('list_index.json', index_str=index_str) content = smarty_remove_extra_comma(content) return content
def list_user_post(): # TODO defensive code userid = request.args.get('userid', '') date = request.args.get('date', '') posts = data.list_user_post(userid, date) content = render_template('list_user_post.json', posts=posts) content = smarty_remove_extra_comma(content) resp = make_response(content, 200) resp.headers['Content-type'] = 'application/json; charset=utf-8' return resp
def api_topn_category(): userid = request.args.get('userid', '') limit = request.args.get('limit', '') fromdate = request.args.get('fromdate', '') enddate = request.args.get('enddate', '') sql_format = "select category, sum(amount) as amount from expenses" + \ " where userid='%s' and date >='%s' and date<='%s'" + \ " group by category order by sum(amount) desc limit %s;" sql = sql_format % (userid, fromdate, enddate, limit) out = Expense.query_sql(sql) content = render_template('topn_category.json', objs=out) content = smarty_remove_extra_comma(content) return content
def api_category_daily(): userid = request.args.get('userid', '') fromdate = request.args.get('fromdate', '') enddate = request.args.get('enddate', '') sql_format = "select category, left(date, 10), sum(amount) from expenses" + \ " where userid='%s' and date >='%s' and date<='%s' group by category, " + \ "left(date, 10) order by left(date, 10) asc;" sql = sql_format % (userid, fromdate, enddate) out = Expense.query_sql(sql) content = render_template('category_daily.json', objs=out) content = smarty_remove_extra_comma(content) return content
def get_usertext(): # TODO defensive code username = request.args.get('username') service_name = request.args.get('service_name') limit = 50 # TODO: remove hard code here sql_format = "select createtime, content from usertext " + \ "where from_username in ('%s', '%s') and to_username in ('%s', '%s') order by id desc limit %d;" sql = sql_format % (username, service_name, username, service_name, limit) print sql out = util.query_sql(sql) content = render_template('get_usertext.json', objs=out) content = util.smarty_remove_extra_comma(content) resp = make_response(content, 200) resp.headers['Content-type'] = 'application/json; charset=utf-8' return resp
def get_user_latest_inputtext(): # TODO defensive code service_name = request.args.get('service_name') limit = 35 # TODO: remove hard code here # "where from_username not in ('obF30jr0VD4HUjUq1kYusd5gSCBo', 'obF30jvBV656EFFzbzFoqMGxPivM') and " + \ sql_format = "select createtime, from_username, content from usertext " + \ "where msgid!='' and to_username='******' order by createtime desc limit %d;" sql = sql_format % (service_name, limit) print sql out = util.query_sql(sql) content = render_template('get_user_latest_inputtext.json', objs=out) content = util.smarty_remove_extra_comma(content) resp = make_response(content, 200) resp.headers['Content-type'] = 'application/json; charset=utf-8' return resp
def list_posts_in_topic(): session.permanent = True # TODO # TODO defensive code topic = request.args.get('topic', '') start_num = request.args.get('start_num', 0) count = request.args.get('count', 10) sort_method = request.args.get('sort_method', "hotest") voteup = request.args.get('voteup', -1) votedown = request.args.get('votedown', -1) posts = data.list_topic(topic, int(start_num), int(count), int(voteup), int(votedown), sort_method) content = render_template('list_posts_in_topic.json', posts=posts) content = smarty_remove_extra_comma(content) resp = make_response(content, 200) resp.headers['Content-type'] = 'application/json; charset=utf-8' return resp
def feedback_post(): session.permanent = True # TODO # TODO defensive code data = request.form uid = data["uid"] postid = data["postid"] category = data["category"] comment = data["comment"] clientip = request.remote_addr handle_feedback(uid, category, postid, comment, clientip) status="ok" errmsg="" content = render_template('feedback_post.json', status=status, errmsg=errmsg) content = smarty_remove_extra_comma(content) resp = make_response(content, 200) resp.headers['Content-type'] = 'application/json; charset=utf-8' return resp
def _query_index(industry, storeID, key, para1): collection = mongo_conn.dataplatform table_name = get_mongo_table(industry, "index") table = collection[table_name] key_name = 'pageID' # TODO # TODO pipeline = [{'$match':{'storeID':storeID, key_name:para1, 'name':key}}, {'$group':{'_id':'$'+key_name,'value':{'$sum':'$value'}}}] json_data = collection.command('aggregate', table_name, pipeline=pipeline) result = json_data['result'] if len(result) != 1: status = "error" value = "-1" else: status = "ok" value = result[0]['value'] content = render_template('query_index.json', status=status, value=value) content = smarty_remove_extra_comma(content) return content