Newer
Older
#!/usr/bin/python
# -*- coding: UTF-8 -*-
from logging.config import dictConfig
import logging
from flask import request, has_request_context
from flask_compress import Compress
from werkzeug.http import http_date
from werkzeug.middleware.proxy_fix import ProxyFix
import config

Marco De Donno
committed
################################################################################
logrequestre = re.compile( "(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}).*\[[^\]]+\]\s(.*)" )

Marco De Donno
committed
class RequestFormatter( logging.Formatter ):
def format( self, record ):
if has_request_context():
try:
username = session[ "username" ]
except:
username = "-"
record.msg = "{REMOTE_ADDR} (" + username + ") - " + record.msg
record.msg = record.msg.format( **request.headers.environ )
m = logrequestre.match( record.msg )
if m:
record.msg = m.group( 2 )
return super( RequestFormatter, self ).format( record )
class myFilter( object ):
def filter( self, record ):
if "{}/ping".format( config.baseurl ) in record.msg and " 200 " in record.msg:
return 0
return 1
class myStreamHandler( logging.StreamHandler ):
def __init__( self ):
logging.StreamHandler.__init__( self )
self.addFilter( myFilter() )
dictConfig( {
"version": 1,
"formatters": {
"default": {
"format": "[%(asctime)s] %(levelname)s: \t%(message)s",
}
},
"handlers": {
"console": {
"formatter": "default"
}
},
"root": {
"level": "INFO",
"handlers": [ "console" ]
}
} )
################################################################################
app = Flask( __name__ )
app.config.from_pyfile( "config.py" )
Compress( app )
Session( app )

Marco De Donno
committed
if config.PROXY:
app.wsgi_app = ProxyFix( app.wsgi_app )
################################################################################
# Import the views

Marco De Donno
committed
from views.base import base
app.register_blueprint( base, url_prefix = config.baseurl )

Marco De Donno
committed
from views.adm import adm
app.register_blueprint( adm, url_prefix = "/" )
app.register_blueprint( adm, url_prefix = config.baseurl )
from views.files import files
app.register_blueprint( files, url_prefix = config.baseurl )
from views.login import login_view
app.register_blueprint( login_view, url_prefix = config.baseurl )
from views.newuser import newuser_view
app.register_blueprint( newuser_view, url_prefix = config.baseurl )
from views.donor import donor_view
app.register_blueprint( donor_view, url_prefix = config.baseurl )
from views.submission import submission_view
app.register_blueprint( submission_view, url_prefix = config.baseurl )
from views.tp_template import tp_template_view
app.register_blueprint( tp_template_view, url_prefix = config.baseurl )
from views.images import image_view
app.register_blueprint( image_view, url_prefix = config.baseurl )

Marco De Donno
committed
from views.pianos import pianos_view
app.register_blueprint( pianos_view, url_prefix = config.baseurl )
################################################################################
# Headers
@app.after_request
def add_header( r ):
for c in [ "/cdn", "/static" ]:
if request.path.startswith( config.baseurl + c ):
break
else:
r.headers[ "Last-Modified" ] = http_date( datetime.now() )
r.headers[ "Cache-Control" ] = "no-cache, no-store, must-revalidate, max-age=0, s-maxage=0"
r.headers[ "Pragma" ] = "no-cache"
r.headers[ "Expires" ] = "0"
return r