Merge branch 'pycharm' into 'development'

Fixed project structure for pycharm



See merge request !16
This commit is contained in:
jlusiardi committed 2016-07-17 08:10:04 +02:00
commit c0f6ef7b4f
53 files changed
+75 -31

No files matched your search

+4 -2
View File
@@ -1,12 +1,14 @@
FROM debian8_python3 FROM debian8_python3
COPY app/requirements.txt /requirements.txt COPY requirements.txt /requirements.txt
RUN pip3 install -r /requirements.txt; \ RUN pip3 install -r /requirements.txt; \
mkdir /data mkdir /data
ADD app /app ADD app /app
ADD main.py /main.py
ADD config.py /config.py
VOLUME ["/data"] VOLUME ["/data"]
VOLUME ["/app/config] VOLUME ["/app/config]
EXPOSE 5000 EXPOSE 5000
ENTRYPOINT python3 /app/main.py ENTRYPOINT python3 /main.py
+1 -2
View File
@@ -26,8 +26,7 @@ reloaded automatically. The sqlite file will be stored in *tmp* so it
can be inspected with tools like *sqlite3*. The switch *DEBUG* enables can be inspected with tools like *sqlite3*. The switch *DEBUG* enables
debugging during development. debugging during development.
`docker run --rm --name rollerverbrauch -ti -v $PWD/app:/app -v $PWD/../rollerverbrauch_config:/app/config -v /tmp/pitstops/:/data -e DEBUG=True -e config=../config/config.py --link pitstops_db:database -p 5000:5000 rollerverbrauch` `docker run --rm --name rollerverbrauch -ti -v $PWD/app:/app --link pitstops_db:database -p 5000:5000 -e SECURITY_PASSWORD_SALT=XXX -e SECRET_KEY=XXX -e MAIL_SERVER=XXX -e MAIL_USERNAME=XXX -e MAIL_PASSWORD=XXX rollerverbrauch`
## run in production ## run in production
`docker run --name pitstops -d -v /data/pitstops/:/data -v /configs/pitstops/:/app/config -p 80:5000 rollerverbrauch` `docker run --name pitstops -d -v /data/pitstops/:/data -v /configs/pitstops/:/app/config -p 80:5000 rollerverbrauch`
@@ -1,31 +1,21 @@
from datetime import date from datetime import date
from flask import Flask from flask import Flask
from flask import redirect, g from flask import redirect, g
from flask import render_template from flask import render_template
from flask import url_for from flask import url_for
from flask.ext.mail import Mail from flask_mail import Mail
from flask.ext.security import Security, SQLAlchemyUserDatastore, \ from flask_security import Security, SQLAlchemyUserDatastore, \
UserMixin, RoleMixin, login_required, roles_required login_required, roles_required, user_registered
from flask.ext.security import user_registered
from flask_security.core import current_user from flask_security.core import current_user
from flask_security.forms import LoginForm
from flask_sqlalchemy import SQLAlchemy from flask_sqlalchemy import SQLAlchemy
import os
from config import config
from sqlalchemy.exc import IntegrityError from sqlalchemy.exc import IntegrityError
from flask.ext.security.forms import LoginForm from flask.ext.security.forms import LoginForm
app = Flask(__name__) from .forms import \
app.config['SECURITY_PASSWORD_HASH'] = 'pbkdf2_sha512'
app.config['SECURITY_REGISTERABLE'] = True
app.config['SECURITY_CHANGEABLE'] = True
app.config['SECURITY_RECOVERABLE'] = True
app.config.from_envvar('config')
app.config.from_object(__name__)
db = SQLAlchemy(app)
mail = Mail(app)
import rollerverbrauch.tools as tools
from rollerverbrauch.forms import \
CreatePitstopForm, \ CreatePitstopForm, \
EditVehicleForm, \ EditVehicleForm, \
DeleteVehicleForm, \ DeleteVehicleForm, \
@@ -38,7 +28,14 @@ from rollerverbrauch.forms import \
DeletConsumableForm, \ DeletConsumableForm, \
SelectConsumableForm SelectConsumableForm
from rollerverbrauch.entities import \
app = Flask(__name__)
app.config.from_object(config[os.getenv('FLASK_CONFIG') or 'default'])
db = SQLAlchemy(app)
mail = Mail(app)
from .entities import \
User, \ User, \
Role, \ Role, \
Pitstop, \ Pitstop, \
@@ -46,7 +43,8 @@ from rollerverbrauch.entities import \
Consumable Consumable
# required to activate the filters # required to activate the filters
import rollerverbrauch.filters from .filters import *
from .tools import *
user_datastore = SQLAlchemyUserDatastore(db, User, Role) user_datastore = SQLAlchemyUserDatastore(db, User, Role)
@@ -92,7 +90,7 @@ def index():
kilometers = 0 kilometers = 0
for vehicle in vehicles: for vehicle in vehicles:
stats = tools.VehicleStats(vehicle) stats = tools.VehicleStats(vehicle)
litres += stats.overall_litres #litres += stats.overall_litres
kilometers += stats.overall_distance kilometers += stats.overall_distance
vehicle_count = len(vehicles) vehicle_count = len(vehicles)
pitstop_count = len(Pitstop.query.all()) pitstop_count = len(Pitstop.query.all())
File renamed without changes.
@@ -1,5 +1,5 @@
from rollerverbrauch import db from app import db
from flask.ext.security import UserMixin, RoleMixin from flask_security import UserMixin, RoleMixin
roles_users = db.Table('roles_users', roles_users = db.Table('roles_users',
db.Column('user_id', db.Integer(), db.ForeignKey('user.id')), db.Column('user_id', db.Integer(), db.ForeignKey('user.id')),
@@ -1,4 +1,4 @@
from rollerverbrauch import app from app import app
import hashlib import hashlib
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
@@ -1,8 +1,7 @@
import logging import logging
from datetime import date from datetime import date
from rollerverbrauch.entities import \ from .entities import Pitstop
Pitstop
class ConsumableStats: class ConsumableStats:
+46
View File
@@ -0,0 +1,46 @@
import os
basedir = os.path.abspath(os.path.dirname(__file__))
class Config:
SECURITY_PASSWORD_HASH = 'pbkdf2_sha512'
SECURITY_REGISTERABLE = True
SECURITY_CHANGEABLE = True
SECURITY_RECOVERABLE = True
SECURITY_PASSWORD_SALT = os.environ.get('SECURITY_PASSWORD_SALT') or 'SOME SECRET STRING'
SECRET_KEY = os.environ.get('SECRET_KEY') or 'SOME SECRET STRING'
SECURITY_EMAIL_SENDER = 'no-reply@lusiardi.de'
SQLALCHEMY_TRACK_MODIFICATIONS = False
MAIL_SERVER = 'mail.nerd2nerd.org'
MAIL_PORT = 25
MAIL_USE_TLS = True
MAIL_USE_SSL = False
MAIL_USERNAME = os.environ.get('MAIL_USERNAME')
MAIL_PASSWORD = os.environ.get('MAIL_PASSWORD')
@staticmethod
def init_app(app):
pass
class DevelopmentConfig(Config):
SECURITY_SEND_REGISTER_EMAIL = False
DEBUG = True
SQLALCHEMY_DATABASE_URI = 'mysql+pymysql://root:%s@database/pitstops_old' % (os.environ['DATABASE_ENV_MYSQL_ROOT_PASSWORD'])
class TestingConfig(Config):
TESTING = True
SQLALCHEMY_DATABASE_URI = 'sqlite:///' + os.path.join(basedir, 'data_testing.sqlite')
class ProductionConfig(Config):
SQLALCHEMY_DATABASE_URI = 'sqlite:///' + os.path.join(basedir, 'data.sqlite')
config = {
'development': DevelopmentConfig,
'testing': TestingConfig,
'production': ProductionConfig,
'default': DevelopmentConfig
}
+1 -1
View File
@@ -1,5 +1,5 @@
import os import os
from rollerverbrauch import app from app import app
import logging import logging
File renamed without changes.