diff --git a/houserule/__init__.py b/houserule/__init__.py index 5ec6289..2fa2afc 100644 --- a/houserule/__init__.py +++ b/houserule/__init__.py @@ -22,14 +22,10 @@ def load_user( id ): return User.query.filter_by( id=id ).first() -if os.environ.get( "DEBUG", "0" ) == "1": - app.config["DEBUG"] = True - -app.config["SQLALCHEMY_DATABASE_URI"] = \ - os.environ.get( "HEROKU_SHARED_POSTGRESQL_ORANGE_URL", "sqlite://" ) +app.config["SQLALCHEMY_DATABASE_URI"] = os.environ["HEROKU_SHARED_POSTGRESQL_ORANGE_URL"] db = SQLAlchemy( app ) -from model import * -from view import * -from form import * +from models import * +from views import * +from forms import * diff --git a/houserule/form.py b/houserule/forms.py similarity index 96% rename from houserule/form.py rename to houserule/forms.py index 6c312b2..3add4fe 100644 --- a/houserule/form.py +++ b/houserule/forms.py @@ -5,7 +5,7 @@ from flaskext.wtf import TextField, PasswordField, SubmitField, BooleanField from flaskext.wtf.html5 import EmailField -from model import User +from models import User from houserule import bcrypt class Unique( object ): @@ -78,3 +78,6 @@ class LoginForm( Form ): class BGGTestForm( Form ): username = TextField( "Nome utente BGG" ) submit = SubmitField( "Elenca giochi" ) + +class MatchForm( Form ): + submit = SubmitField( "Salva" ) diff --git a/houserule/model.py b/houserule/models.py similarity index 53% rename from houserule/model.py rename to houserule/models.py index fa41d9c..68656a7 100644 --- a/houserule/model.py +++ b/houserule/models.py @@ -18,3 +18,18 @@ def __init__( self, username, password, email ): self.username = username self.password = bcrypt.generate_password_hash( password ) self.email = email + +class Game( db.Model ): + __tablename__ = "games" + + id = db.Column( db.Integer, primary_key=True ) + bgg_id = db.Column( db.Integer ) + name = db.Column( db.String( 150 ) ) + thumbnail_url = db.Column( db.String( 150 ) ) + +class Match( db.Model ): + __tablename__ = "matches" + + id = db.Column( db.Integer, primary_key=True ) + organizer_id = db.Column( db.Integer, db.ForeignKey( "users.id" ) ) + game_id = db.Column( db.Integer, db.ForeignKey( "games.id" ) ) \ No newline at end of file diff --git a/houserule/view.py b/houserule/views.py similarity index 71% rename from houserule/view.py rename to houserule/views.py index 1537313..5ef21e4 100644 --- a/houserule/view.py +++ b/houserule/views.py @@ -3,10 +3,11 @@ from houserule import app, db from flask import render_template, request, redirect, url_for, flash, send_from_directory -from form import RegistrationForm, LoginForm, BGGTestForm -from model import User from flaskext.login import login_user, logout_user, login_required, current_user + import pyBGG +import forms +import models @app.route( "/" ) def splash(): @@ -18,9 +19,9 @@ def index(): @app.route( "/register", methods=( "GET", "POST" ) ) def register(): - form = RegistrationForm() + form = forms.RegistrationForm() if form.validate_on_submit(): - user = User( form.username.data, form.password.data, form.email.data ) + user = models.User( form.username.data, form.password.data, form.email.data ) db.session.add( user ) db.session.commit() flash( "Grazie per esserti registrato!" ) @@ -29,9 +30,9 @@ def register(): @app.route( "/login", methods=( "GET", "POST" ) ) def login(): - form = LoginForm() + form = forms.LoginForm() if form.validate_on_submit(): - user = User.query.filter_by( username=form.username.data ).first() + user = models.User.query.filter_by( username=form.username.data ).first() login_user( user, remember=form.remember.data ) flash( "Bentornato %s!" % user.username ) return redirect( request.args.get( "next" ) or url_for( "index" ) ) @@ -47,8 +48,17 @@ def logout(): @app.route( "/bggtest", methods=( "GET", "POST" ) ) @login_required def bggtest(): - form = BGGTestForm() + form = forms.BGGTestForm() collection = [] if form.validate_on_submit(): collection = pyBGG.collection( form.username.data, own=True, prefetch=True ) return render_template( "bggtest.html", form=form, collection=collection ) + +@app.route( "/match", methods=( "GET", "POST" ) ) +@login_required +def match(): + form = forms.MatchForm() + if form.validate_on_submit(): + flash( "Grazie per aver proposto una nuova partita!" ) + return redirect( url_for( "index" ) ) + return render_template( "match.html", form=form ) \ No newline at end of file diff --git a/run.py b/run.py deleted file mode 100644 index 97f6779..0000000 --- a/run.py +++ /dev/null @@ -1,18 +0,0 @@ -#!/usr/bin/python -# coding: utf-8 - -from houserule import app, db -import argparse -import os - -if __name__ == "__main__": - parser = argparse.ArgumentParser( description = "HouseRule Development Server" ) - parser.add_argument( "--initdb", action="store_true", help="Create initial database" ) - args = parser.parse_args() - - if args.initdb: - db.create_all() - - port = int( os.environ.get( "PORT", "5000" ) ) - app.run( "0.0.0.0", port ) - diff --git a/run_local_server.py b/run_local_server.py new file mode 100755 index 0000000..3a1d496 --- /dev/null +++ b/run_local_server.py @@ -0,0 +1,22 @@ +#!/usr/bin/python +# coding: utf-8 + +import argparse +import os + +os.environ["HEROKU_SHARED_POSTGRESQL_ORANGE_URL"] = "sqlite:///../db.sqlite" +os.environ["SECRET_KEY"] = "development server not so secret key" + +port = int( os.environ.get( "PORT", "5000" ) ) + +parser = argparse.ArgumentParser( description = "HouseRule Development Server" ) +parser.add_argument( "--initdb", action="store_true", help="Create initial database" ) +parser.add_argument( "--debug", action="store_true", help="Start with debugging and reloading" ) +args = parser.parse_args() + +from houserule import app, db + +if args.initdb: + db.create_all() + +app.run( "0.0.0.0", port, debug=args.debug ) diff --git a/templates/index.html b/templates/index.html index caadf94..e02f4dc 100644 --- a/templates/index.html +++ b/templates/index.html @@ -6,6 +6,9 @@