mirror of
				https://github.com/balkian/eestec.codeit.git
				synced 2025-11-04 09:38:18 +00:00 
			
		
		
		
	Examples flask application
This commit is contained in:
		
							
								
								
									
										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.
 | 
				
			||||||
							
								
								
									
										44
									
								
								library.py
									
									
									
									
									
								
							
							
						
						
									
										44
									
								
								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']
 | 
					                languages=repo[u'languages']
 | 
				
			||||||
            if language in usedlanguages:
 | 
					                for language,lines in languages.iteritems():
 | 
				
			||||||
                usedlanguages[language].append([url])
 | 
					                    linesperlanguage[language]=linesperlanguage[language]+lines if language in linesperlanguage else lines
 | 
				
			||||||
            else:
 | 
					                    usedlanguages[language]=usedlanguages[language]+[repo[u'name'],] if language in usedlanguages else [repo[u'url']]
 | 
				
			||||||
                usedlanguages[language]=list([url])
 | 
					        return usedlanguages,linesperlanguage
 | 
				
			||||||
            languages=repo[u'languages']
 | 
					
 | 
				
			||||||
            for language,lines in languages.iteritems():
 | 
					    def get_stats(self):
 | 
				
			||||||
                if language in linesperlanguage:
 | 
					        statistics={}
 | 
				
			||||||
                    linesperlanguage[language]+=lines
 | 
					        usedlanguagesint,linesperlanguageint=self.get_langs_in_orgs(self.orgs.values())
 | 
				
			||||||
                else:
 | 
					        usedlanguagesext,linesperlanguageext=self.get_langs_in_orgs(self.users.values())
 | 
				
			||||||
                    linesperlanguage[language]=lines
 | 
					        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
 | 
				
			||||||
		Reference in New Issue
	
	Block a user