diff --git a/app.py b/app.py index 82416c7..182522e 100644 --- a/app.py +++ b/app.py @@ -237,8 +237,56 @@ def create_app(config=Config): } mongo.db.users.insert_one(admin_user) print(f"Admin {username} added! Referral code is {admin_user['referral_code']}") + + @app.route('/leaderboard') + def leaderboard(): + leaders = mongo.db.pins.aggregate([ + { + "$group": { + "_id":"$added_by", + "count": {"$sum":1} + } + }, + { + "$sort": {"count":-1} + }, + { + "$limit":10 + }, + { + "$lookup": { + "from": "users", + "localField": "_id", + "foreignField": "_id", + "as": "user_info" + } + }, + { + "$unwind": "$user_info" + }, + { + "$project": { + "_id":0, + "added_by": "$_id", + "count":1, + "username": "$user_info.username" + } + } + ]) + print(leaders) + for leader in leaders: + leader["username"] = leader["username"][0]+"***"+leader["username"][-1] + if current_user.is_authenticated: + username = user.username + else: + username = None + return render_template('leaderboard.html', leaders=leaders, username=username) + + return app + + app=create_app() if __name__ == '__main__': app.run(debug=True) diff --git a/templates/leaderboard.html b/templates/leaderboard.html new file mode 100644 index 0000000..6d5d33b --- /dev/null +++ b/templates/leaderboard.html @@ -0,0 +1,6 @@ +{% extends 'secondbase.html' %} +