diff 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 diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/farol/session.py	Wed Sep 24 10:07:49 2014 +0200
@@ -0,0 +1,65 @@
+# -*- 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