view farol/session.py @ 0:4a9f23230eba

Initial Release
author Benoît Allard <benoit.allard@greenbone.net>
date Wed, 24 Sep 2014 10:07:49 +0200
parents
children 4219d6fb4c38
line wrap: on
line source
# -*- encoding: utf-8 -*-
# Description:
# Farol Session Management
#
# Authors:
# BenoƮt Allard <benoit.allard@greenbone.net>
#
# Copyright:
# Copyright (C) 2014 Greenbone Networks GmbH
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
# as published by the Free Software Foundation; either version 2
# of the License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.

"""\
Stuff related to temporary storage
"""

from functools import wraps
import uuid

from flask import session, flash, redirect, url_for

CVRFs = {}

def set_current(cvrf):
    session['id'] = uuid.uuid4()
    CVRFs[session['id']] = cvrf

def get_current():
    if not has_current(): return None
    return CVRFs[session['id']]

def has_current():
    if 'id' not in session:
        return False
    if session['id'] not in CVRFs:
        return False
    return CVRFs[session['id']] is not None

def del_current():
    if 'id' in session:
        if session['id'] in CVRFs:
            del CVRFs[session['id']]
        del session['id']


def document_required(f):
    @wraps(f)
    def decorated_function(*args, **kwargs):
        if not has_current():
            flash('Operation invalid without document', 'warning')
            return redirect(url_for('new'))
        return f(*args, **kwargs)
    return decorated_function

http://farol.wald.intevation.org