Skip to content
Snippets Groups Projects
Select Git revision
  • ba171234506a5a8c6b700e564c5bf9b2bcceb633
  • devel default
  • master
  • fo
  • jirka/typing
  • fo-base
  • mj/submit-images
  • jk/issue-96
  • jk/issue-196
  • honza/add-contestant
  • honza/mr7
  • honza/mrf
  • honza/mrd
  • honza/mra
  • honza/mr6
  • honza/submit-images
  • honza/kolo-vs-soutez
  • jh-stress-test-wip
  • shorten-schools
19 results

doc_index.html

Blame
  • __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