Examples flask application

heroku
J.Fernando Sánchez 11 years ago
parent c7d4cda6e1
commit 8005272c39

1
.gitignore vendored

@ -35,3 +35,4 @@ nosetests.xml
.pydevproject
secrets.py
*.swp
venv

@ -0,0 +1 @@
web: python app.py

@ -0,0 +1,64 @@
import os
from flask import Flask
import os
from urlparse import urlsplit
from pymongo import Connection
import library
import json
from datetime import datetime
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.route('/')
def hello():
return 'Hello World!'
def update_db():
store.load_all('prueba.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({'name':org},
{'name': org, 'data':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({'name':user},
{'name': user, 'data':store.users[user]},
upsert=True,
w=0)
repos = db.repos
for repo in store.repos:
reposdb=repos.update({'url':repo},
{'url': url, 'data': store.repos[repo]},
upsert=True,
w=0)
if __name__ == '__main__':
# Bind to PORT if defined, otherwise default to 5000.
update_db()
port = int(os.environ.get('PORT', 5000))
app.run(host='0.0.0.0', port=port)
# Connect to memcache with config from environment variables.

@ -67,27 +67,27 @@ class Store(dict):
print "USER: %s" %user
user.reload_repos()
def get_stats(self):
statistics={}
def get_langs_in_orgs(self,orgs):
usedlanguages={}
linesperlanguage={}
for repo in self.repos.values():
language=repo[u'language']
url=repo[u'url']
if language in usedlanguages:
usedlanguages[language].append([url])
else:
usedlanguages[language]=list([url])
languages=repo[u'languages']
for language,lines in languages.iteritems():
if language in linesperlanguage:
linesperlanguage[language]+=lines
else:
linesperlanguage[language]=lines
for org in orgs:
for repo in org.repos:
languages=repo[u'languages']
for language,lines in languages.iteritems():
linesperlanguage[language]=linesperlanguage[language]+lines if language in linesperlanguage else lines
usedlanguages[language]=usedlanguages[language]+[repo[u'name'],] if language in usedlanguages else [repo[u'url']]
return usedlanguages,linesperlanguage
def get_stats(self):
statistics={}
usedlanguagesint,linesperlanguageint=self.get_langs_in_orgs(self.orgs.values())
usedlanguagesext,linesperlanguageext=self.get_langs_in_orgs(self.users.values())
statistics[u'usedlanguagesint']=usedlanguagesint
statistics[u'linesperlanguageint']=linesperlanguageint
statistics[u'usedlanguagesext']=usedlanguagesext
statistics[u'linesperlanguageext']=linesperlanguageext
lcrepos=0
statistics[u'usedlanguages']=usedlanguages
statistics[u'linesperlanguage']=linesperlanguage
for lc in self[u'lcs']:
for lc in self.orgs:
lcrepos+=len(self.orgs[lc][u'repos'])
statistics["lc-repos"]=lcrepos
statistics["total-repos"]=len(self.repos)
@ -110,9 +110,7 @@ class Store(dict):
statistics['total-starred']=totalstarred
statistics['total-watching']=totalwatching
statistics['total-forks']=totalforks
self[u'statistics']=statistics
print self[u'orgs']
print self[u'statistics'][u'linesperlanguage']
return statistics
class BasicItem(dict):
def __init__(self,name,dic=None,method=get_url,name_key=u'url',store=None):
@ -148,7 +146,7 @@ class BasicLogin(BasicItem):
if not u'repos' in self:
self.reload_repos()
if self.store is not None:
return [store['repos'][name] for name in self[u'repos']]
return [self.store['repos'][name] for name in self[u'repos']]
return self[u'repos']
@repos.setter
@ -158,7 +156,7 @@ class BasicLogin(BasicItem):
self[u'repos']=[]
for repo in repos:
url=repo[u'url']
store.add_repo(repo)
self.store.add_repo(repo)
self[u'repos'].append(url)
else:

@ -0,0 +1,9 @@
Flask==0.9
Jinja2==2.6
PyGithub==1.12.1
Werkzeug==0.8.3
argparse==1.2.1
distribute==0.6.24
pymongo==2.4.2
requests==1.1.0
wsgiref==0.1.2
Loading…
Cancel
Save