Refactor the code into modules, it was getting unweildy.

This commit is contained in:
yackob03 2013-09-25 12:45:12 -04:00
parent 2611d70185
commit ee5ea51532
12 changed files with 73 additions and 70 deletions

60
app.py
View file

@ -1,11 +1,9 @@
import logging
from flask import (Flask, make_response, request, abort, send_file,
redirect, url_for)
from flask import Flask
from flask.ext.principal import Principal
from flask.ext.login import login_user, LoginManager, UserMixin
from flask.ext.login import LoginManager
import model
app = Flask(__name__)
logger = logging.getLogger(__name__)
@ -17,57 +15,3 @@ app.secret_key = '1cb18882-6d12-440d-a4cc-b7430fb5f884'
login_manager = LoginManager()
login_manager.init_app(app)
login_manager.login_view = 'signin'
class _LoginWrappedDBUser(UserMixin):
def __init__(self, db_user):
self.db_user = db_user
def is_active(self):
return self.db_user.verified
def get_id(self):
return unicode(self.db_user.username)
@login_manager.user_loader
def load_user(username):
db_user = model.get_user(username)
if db_user:
return _LoginWrappedDBUser(db_user)
else:
return None
@app.route('/', methods=['GET'])
def index():
return send_file('templates/index.html')
@app.route('/signin', methods=['POST'])
def signin():
username = request.form['username']
password = request.form['password']
#TODO Allow email login
verified = model.verify_user(username, password)
if verified:
logger.debug('Successfully signed in as: %s' % username)
login_user(_LoginWrappedDBUser(verified))
return redirect(request.args.get('next') or url_for('index'))
abort(403)
@app.route('/signin', methods=['GET'])
def render_signin_page():
return send_file('templates/signin.html')
@app.route('/_ping')
@app.route('/v1/_ping')
def ping():
response = make_response('true', 200)
response.headers['X-Docker-Registry-Version'] = '0.6.0'
return response

0
auth/__init__.py Normal file
View file

View file

@ -3,10 +3,11 @@ import logging
from functools import wraps
from flask import request, make_response, _request_ctx_stack, abort
from flask.ext.principal import identity_changed, Identity
from flask.ext.login import UserMixin
from base64 import b64decode
import model
from app import app
from data import model
from app import app, login_manager
from util import parse_namespace_repository
@ -14,6 +15,26 @@ from util import parse_namespace_repository
logger = logging.getLogger(__name__)
class _LoginWrappedDBUser(UserMixin):
def __init__(self, db_user):
self.db_user = db_user
def is_active(self):
return self.db_user.verified
def get_id(self):
return unicode(self.db_user.username)
@login_manager.user_loader
def load_user(username):
db_user = model.get_user(username)
if db_user:
return _LoginWrappedDBUser(db_user)
else:
return None
def get_authenticated_user():
return getattr(_request_ctx_stack.top, 'authenticated_user', None)

View file

@ -3,8 +3,7 @@ import logging
from flask.ext.principal import identity_loaded, UserNeed, Permission
from collections import namedtuple
import model
from data import model
from app import app
from auth import get_authenticated_user, get_validated_token

0
data/__init__.py Normal file
View file

0
endpoints/__init__.py Normal file
View file

View file

@ -4,8 +4,7 @@ from flask import request, make_response, jsonify, abort
from flask.ext.login import login_required, current_user
from functools import wraps
import model
from data import model
from app import app
from util import parse_repository_name

View file

@ -6,13 +6,14 @@ import logging
from flask import request, make_response, jsonify, abort
from functools import wraps
from data import model
from app import app
from auth import process_auth, get_authenticated_user, get_validated_token
from auth.auth import (process_auth, get_authenticated_user,
get_validated_token)
from util import parse_namespace_repository, parse_repository_name
from permissions import (ModifyRepositoryPermission, ReadRepositoryPermission,
UserPermission)
from auth.permissions import (ModifyRepositoryPermission,
ReadRepositoryPermission, UserPermission)
import model
logger = logging.getLogger(__name__)
@ -197,3 +198,11 @@ def put_repository_auth(namespace, repository):
@app.route('/v1/search', methods=['GET'])
def get_search():
pass
@app.route('/_ping')
@app.route('/v1/_ping')
def ping():
response = make_response('true', 200)
response.headers['X-Docker-Registry-Version'] = '0.6.0'
return response

30
endpoints/web.py Normal file
View file

@ -0,0 +1,30 @@
from flask import abort, send_file, redirect, request
from data import model
from app import app
@app.route('/', methods=['GET'])
def index():
return send_file('templates/index.html')
@app.route('/signin', methods=['POST'])
def signin():
username = request.form['username']
password = request.form['password']
#TODO Allow email login
verified = model.verify_user(username, password)
if verified:
logger.debug('Successfully signed in as: %s' % username)
login_user(_LoginWrappedDBUser(verified))
return redirect(request.args.get('next') or url_for('index'))
abort(403)
@app.route('/signin', methods=['GET'])
def render_signin_page():
return send_file('templates/signin.html')

View file

@ -2,8 +2,9 @@ import logging
from app import app
import index
import api
import endpoints.index
import endpoints.api
import endpoints.web
if __name__ == '__main__':
FORMAT = '%(asctime)-15s - %(levelname)s - %(pathname)s - ' + \