TG-103 Amélioration structure du projet

This commit is contained in:
Quentin Rouland 2017-01-23 00:04:51 +01:00
parent c62f0766f5
commit 3ac6092187
9 changed files with 48 additions and 49 deletions

3
.gitignore vendored
View File

@ -29,3 +29,6 @@ pip-selfcheck.json
htmlcov/
.coverage
coverage.xml
#Config files
config.py

View File

@ -35,22 +35,15 @@ Installer les dépendances via pip pour les tests :
### Fichier Configuration
Dans app/config.py:
* Configuration les paramètres de la base de données
* Changer la SECRET_KEY en production
Copier le fichier app/config.py.example en app/config.py et configurer avec vos parametres
### Init App
Principalement:
* Configuration des paramètres de la base de données
* Changement de la SECRET_KEY en production
First you need to create the db and seed it with an admin user (admin@admin.com/admin).
Migration database is handle via flask-migrate using alembic.
See command available :
```
python manage.py db
```
#### Init db
Installez la dernière version de MariaDB:
### Init db
Installez la dernière version de MariaDB.
Lancer le script :
```

View File

@ -15,4 +15,4 @@ class SomeApi(Resource):
return {'somedelete': 'somedeletedata'}, 204
def put(self, id=None):
return {'someput': 'someputdata'}, 204
return {'someput': 'someputdata'}, 201

View File

@ -2,6 +2,19 @@ import os
class Config:
ACTIVE_CONFIG = "app.config.Prod"
@staticmethod
def configure_app(config="prod"):
if config.lower() == "prod":
Config.ACTIVE_CONFIG = 'app.config.Prod'
elif config.lower() == "debug":
Config.ACTIVE_CONFIG = 'app.config.Debug'
elif config.lower() == "test":
Config.ACTIVE_CONFIG = 'app.config.Test'
else:
raise Exception('{} n\'est pas configuration une configuration valide'.format(config))
DEBUG = False
TESTING = False
BASE_DIR = os.path.abspath(os.path.dirname(__file__))

View File

@ -6,30 +6,21 @@ from flask_restful import Api
from flask_sqlalchemy import SQLAlchemy
from sqlalchemy import create_engine
from sqlalchemy.ext.automap import automap_base
def configure_app(config="prod"):
if config.lower() == "debug":
app.config.from_object('app.config.Debug')
elif config.lower() == "test":
app.config.from_object('app.config.Test')
else:
app.config.from_object('app.config.Prod')
app.permanent_session_lifetime = \
timedelta(
minutes=app.config
['SESSION_VALIDITY_DURATION_WITHOUT_ACTIVITY_MIN']
)
@app.before_request
def before_request():
session.modified = True
from app.config import Config
# initialization Flask
app = Flask(__name__)
configure_app()
app.config.from_object(Config.ACTIVE_CONFIG)
app.permanent_session_lifetime = \
timedelta(
minutes=app.config['SESSION_VALIDITY_DURATION_WITHOUT_ACTIVITY_MIN']
)
@app.before_request
def before_request():
session.modified = True
# SQLAlchemy
db = SQLAlchemy(app)

View File

@ -1,4 +1,4 @@
from backend.app.core import Base
from app.core import Base
USER = Base.classes.user
SETTINGS = Base.classes.settings

View File

@ -1,4 +1,5 @@
from app.core import api
from app.api.exampleapi import SomeApi
# Some Api resource
api.add_resource(api, '/api/someapi', '/api/someapi/<int:id>')
api.add_resource(SomeApi, '/api/someapi', '/api/someapi/<int:id>')

View File

@ -7,7 +7,7 @@ import warnings
from flask_script import Manager, Command
from flask_script import prompt_bool
from backend.app.core import configure_app
from app.config import Config
warnings.simplefilter('ignore')
@ -18,14 +18,15 @@ group.add_argument("-t", "--test", action="store_true")
args, _ = parser.parse_known_args()
if args.debug:
configure_app(config="debug")
if args.test:
configure_app(config="test")
Config.configure_app(config="debug")
elif args.test:
Config.configure_app(config="test")
else:
Config.configure_app(config="prod")
db = importlib.import_module("db", "backend.app.core")
app = importlib.import_module("app", "backend.app.core")
core = importlib.import_module("app.core")
manager = Manager(app)
manager = Manager(core.app)
manager.add_option("-d", "--debug",
action="store_true", dest="debug", required=False)
manager.add_option("-t", "--test",
@ -58,7 +59,7 @@ class CheckDB(Command):
def run(self):
print("List of parsed tables:")
print(db.metadata.tables.keys())
print(core.db.metadata.tables.keys())
manager.add_command('checkdb', CheckDB())
@ -67,7 +68,7 @@ manager.add_command('checkdb', CheckDB())
class RunTests(Command):
"""Seed the db """
def run(self):
configure_app(config="test")
Config.configure_app(config="test")
os.system("python manage.py -t db downgrade base")
os.system("python manage.py -t db upgrade")
test_loader = unittest.defaultTestLoader

View File

@ -1,8 +1,5 @@
flask < 0.13
flask-script < 2.1
flask-sqlalchemy < 2.2
flask-migrate < 2.1
flask-bootstrap < 3.4
flask-restful < 0.4
passlib < 1.8
mysqlclient < 1.4
mysqlclient < 1.4