mirror of
https://github.com/balkian/eestec.codeit.git
synced 2024-09-28 22:31:41 +00:00
Examples flask application
This commit is contained in:
parent
c7d4cda6e1
commit
8005272c39
1
.gitignore
vendored
1
.gitignore
vendored
@ -35,3 +35,4 @@ nosetests.xml
|
|||||||
.pydevproject
|
.pydevproject
|
||||||
secrets.py
|
secrets.py
|
||||||
*.swp
|
*.swp
|
||||||
|
venv
|
||||||
|
64
app.py
Normal file
64
app.py
Normal file
@ -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.
|
40
library.py
40
library.py
@ -67,27 +67,27 @@ class Store(dict):
|
|||||||
print "USER: %s" %user
|
print "USER: %s" %user
|
||||||
user.reload_repos()
|
user.reload_repos()
|
||||||
|
|
||||||
def get_stats(self):
|
def get_langs_in_orgs(self,orgs):
|
||||||
statistics={}
|
|
||||||
usedlanguages={}
|
usedlanguages={}
|
||||||
linesperlanguage={}
|
linesperlanguage={}
|
||||||
for repo in self.repos.values():
|
for org in orgs:
|
||||||
language=repo[u'language']
|
for repo in org.repos:
|
||||||
url=repo[u'url']
|
|
||||||
if language in usedlanguages:
|
|
||||||
usedlanguages[language].append([url])
|
|
||||||
else:
|
|
||||||
usedlanguages[language]=list([url])
|
|
||||||
languages=repo[u'languages']
|
languages=repo[u'languages']
|
||||||
for language,lines in languages.iteritems():
|
for language,lines in languages.iteritems():
|
||||||
if language in linesperlanguage:
|
linesperlanguage[language]=linesperlanguage[language]+lines if language in linesperlanguage else lines
|
||||||
linesperlanguage[language]+=lines
|
usedlanguages[language]=usedlanguages[language]+[repo[u'name'],] if language in usedlanguages else [repo[u'url']]
|
||||||
else:
|
return usedlanguages,linesperlanguage
|
||||||
linesperlanguage[language]=lines
|
|
||||||
|
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
|
lcrepos=0
|
||||||
statistics[u'usedlanguages']=usedlanguages
|
for lc in self.orgs:
|
||||||
statistics[u'linesperlanguage']=linesperlanguage
|
|
||||||
for lc in self[u'lcs']:
|
|
||||||
lcrepos+=len(self.orgs[lc][u'repos'])
|
lcrepos+=len(self.orgs[lc][u'repos'])
|
||||||
statistics["lc-repos"]=lcrepos
|
statistics["lc-repos"]=lcrepos
|
||||||
statistics["total-repos"]=len(self.repos)
|
statistics["total-repos"]=len(self.repos)
|
||||||
@ -110,9 +110,7 @@ class Store(dict):
|
|||||||
statistics['total-starred']=totalstarred
|
statistics['total-starred']=totalstarred
|
||||||
statistics['total-watching']=totalwatching
|
statistics['total-watching']=totalwatching
|
||||||
statistics['total-forks']=totalforks
|
statistics['total-forks']=totalforks
|
||||||
self[u'statistics']=statistics
|
return statistics
|
||||||
print self[u'orgs']
|
|
||||||
print self[u'statistics'][u'linesperlanguage']
|
|
||||||
|
|
||||||
class BasicItem(dict):
|
class BasicItem(dict):
|
||||||
def __init__(self,name,dic=None,method=get_url,name_key=u'url',store=None):
|
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:
|
if not u'repos' in self:
|
||||||
self.reload_repos()
|
self.reload_repos()
|
||||||
if self.store is not None:
|
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']
|
return self[u'repos']
|
||||||
|
|
||||||
@repos.setter
|
@repos.setter
|
||||||
@ -158,7 +156,7 @@ class BasicLogin(BasicItem):
|
|||||||
self[u'repos']=[]
|
self[u'repos']=[]
|
||||||
for repo in repos:
|
for repo in repos:
|
||||||
url=repo[u'url']
|
url=repo[u'url']
|
||||||
store.add_repo(repo)
|
self.store.add_repo(repo)
|
||||||
self[u'repos'].append(url)
|
self[u'repos'].append(url)
|
||||||
|
|
||||||
else:
|
else:
|
||||||
|
9
requirements.txt
Normal file
9
requirements.txt
Normal file
@ -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…
Reference in New Issue
Block a user