From 05c7c7a45390e6ef61c864fc16214ea7e41796d6 Mon Sep 17 00:00:00 2001 From: Sami Mokaddem Date: Wed, 15 Nov 2017 14:34:37 +0100 Subject: [PATCH] Linked contribution_and_login to server --- server.py | 11 +++++++++++ templates/users.html | 9 +++++---- users_helper.py | 18 +++++++++++++++++- 3 files changed, 33 insertions(+), 5 deletions(-) diff --git a/server.py b/server.py index a20d077..7745ae9 100755 --- a/server.py +++ b/server.py @@ -470,5 +470,16 @@ def getTopOrglogin(): data = users_helper.getTopOrglogin(date) return jsonify(data) +@app.route("/_getLoginVSCOntribution") +def getLoginVSCOntribution(): + try: + date = datetime.datetime.fromtimestamp(float(request.args.get('date'))) + except: + date = datetime.datetime.now() + + data = users_helper.getLoginVSCOntribution(date) + return jsonify(data) + + if __name__ == '__main__': app.run(host='localhost', port=8001, threaded=True) diff --git a/templates/users.html b/templates/users.html index 382270b..85a8442 100644 --- a/templates/users.html +++ b/templates/users.html @@ -249,10 +249,11 @@ small { } function updateDatePieApi() { var date = datePickerWidgetApi.datepicker( "getDate" ); - $.getJSON( "{{ url_for('getUserLogins') }}"+"?date="+date.getTime()/1000, function( data ) { - data = [{label: 'org1', data:[ Math.floor(Math.random() * 100) + 1]}, - {label: 'org2', data:[ Math.floor(Math.random() * 100) + 1]}, - {label: 'org3', data:[ Math.floor(Math.random() * 100) + 1]}] + $.getJSON( "{{ url_for('getLoginVSCOntribution') }}"+"?date="+date.getTime()/1000, function( data ) { + data = [ + {label: 'Has contributed during the day', data: data[0], color: '#4da74d' }, + {label: 'Has not contributed during the day', data:data[1], color: '#cb4b4b' } + ] if (!pieApiWidget === undefined) { pieApiWidget.setData(toPlot); diff --git a/users_helper.py b/users_helper.py index 84eca6f..193d32b 100644 --- a/users_helper.py +++ b/users_helper.py @@ -26,12 +26,28 @@ class Users_helper: timestamps = [int(timestamp.decode('utf8')) for timestamp in timestamps] return timestamps - def getTopOrglogin(self, date, topNum=0): + def getTopOrglogin(self, date, topNum=12): keyname = "LOGIN_ORG:{}".format(util.getDateStrFormat(date)) data = self.serv_redis_db.zrange(keyname, 0, topNum-1, desc=True, withscores=True) data = [ [record[0].decode('utf8'), record[1]] for record in data ] return data + def getLoginVSCOntribution(self, date): + keyname = "CONTRIB_DAY:{}".format(util.getDateStrFormat(date)) + orgs_contri = self.serv_redis_db.zrange(keyname, 0, -1, desc=True, withscores=False) + orgs_contri = [ org.decode('utf8') for org in orgs_contri ] + orgs_login = [ org[0] for org in self.getTopOrglogin(date, topNum=0) ] + + contributed_num = 0 + non_contributed_num = 0 + for org in orgs_login: + if org in orgs_contri: + contributed_num += 1 + else: + non_contributed_num +=1 + return [contributed_num, non_contributed_num] + + def getUserLoginsForPunchCard(self, date, prev_days=6): week = {} for curDate in util.getXPrevDaysSpan(date, prev_days):