Select Git revision
doc_index.html
-
Martin Mareš authoredMartin Mareš authored
__init__.py 1.73 KiB
from flask import Flask, request, g, session
from flask_sqlalchemy import SQLAlchemy
import sys
import os
import locale
import logging
from flask_bootstrap import Bootstrap
import werkzeug.exceptions
import config # FIXME
import mo.db as db
import mo.users
# Aplikační objekt
app = Flask(__name__, root_path='.')
app.config.from_object(config)
app.jinja_options['extensions'].append('jinja2.ext.do')
app.jinja_env.lstrip_blocks = True
app.jinja_env.trim_blocks = True
app.logger.setLevel(logging.DEBUG)
db.flask_db = SQLAlchemy(app, metadata=db.metadata)
Bootstrap(app) # make bootstrap libs accessible for the app
# Budeme používat české locale
locale.setlocale(locale.LC_COLLATE, 'cs_CZ.UTF-8')
class NeedLoginError(werkzeug.exceptions.Forbidden):
description = 'Need to log in'
def need_login():
if not g.user:
raise NeedLoginError()
def init_request():
if 'uid' in session:
user = mo.users.user_by_uid(session['uid'])
if not user:
# Uživatel mezitím přestal existovat
app.logging.error('Zrušena session pro neexistujícího uživatele uid=%s', session['uid'])
return mo.web.main.logout()
else:
user = None
g.user = user
mo.util.current_log_user = user
# K některým podstromům je nutné mít speciální oprávnění
# FIXME: Co když je web mountnutý v podadresáři?
path = request.path
if path.startswith('/org/'):
if not user:
raise NeedLoginError()
if not (user.is_org or user.is_admin):
raise werkzeug.exceptions.Forbidden()
app.before_request(init_request)
# Většina webu je v samostatných modulech
import mo.web.main
import mo.web.org
import mo.web.org_users
import mo.web.menu