You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

94 lines
2.6 KiB
Python

from flask import Flask, Response, url_for, redirect
import os
from urlparse import urlsplit
from pymongo import Connection
import library
import json
from datetime import datetime
import ast
url = os.getenv('MONGOLAB_URI', 'mongodb://heroku_app12633543:e4kprjp4r1kj0bbv9f4gih4km@dbh44.mongolab.com:27447/heroku_app12633543')
parsed = urlsplit(url)
db_name = parsed.path[1:]
store=library.Store()
# Get your DB
db = Connection(url)[db_name]
# Authenticate
if '@' in url:
user_pass = parsed.netloc.split('@')[0].split(':')
db.authenticate(user_pass[0], user_pass[1])
app = Flask(__name__)
app.debug = True
@app.route('/')
def hello():
return redirect(url_for('static', filename='prueba.html'))
@app.route('/stats')
def stats():
stats = dict(db.stats.find_one(fields={'_id':False}))
return Response(json.dumps(stats,skipkeys=True),mimetype='application/json')
@app.route('/orgs')
def orgs():
orglist = db.orgs.find(fields={'_id':False})
orgs={}
for org in orglist:
orgs[org[u'login']]=org
print orgs
return Response(json.dumps(orgs,skipkeys=True),mimetype='application/json')
@app.route('/users')
def users():
userlist = db.users.find(fields={'_id':False})
users={}
for user in userlist:
users[user[u'login']]=user
return Response(json.dumps(users,skipkeys=True),mimetype='application/json')
@app.route('/repos')
def repos():
repolist = db.repos.find(fields={'_id':False})
repos={}
for repo in repolist:
repos[repo[u'url']]=repo
return Response(json.dumps(repos,skipkeys=True),mimetype='application/json')
def update_db():
store.load_all(file='lcs.json')
stats=store.get_stats()
db.logs.insert({'time':str(datetime.now())})
db.stats.insert(stats)
orgs = db.orgs
db.orgs.ensure_index('name',30)
for org in store.orgs:
orgdb=orgs.update({'login':org},
store.orgs[org],
upsert=True,
w=0)
users = db.users
for user in store.users:
print "User:%s"%user
print ">%s"%store.users[user]
userdb=users.update({'login':user},
store.users[user],
upsert=True,
w=0)
repos = db.repos
for repo in store.repos:
reposdb=repos.update({'url':repo},
store.repos[repo],
upsert=True,
w=0)
if __name__ == '__main__':
# Bind to PORT if defined, otherwise default to 5000.
port = int(os.environ.get('PORT', 5000))
app.run(host='0.0.0.0', port=port)
# Connect to memcache with config from environment variables.