diff options
author | Alexander Sulfrian <alexander@sulfrian.net> | 2016-01-22 17:26:00 +0100 |
---|---|---|
committer | Alexander Sulfrian <alexander@sulfrian.net> | 2016-01-22 17:26:26 +0100 |
commit | 5fde298d4b705bd256d5510493955ca98a31acdc (patch) | |
tree | 15d8cb83e531778ce865deca52a4ce123bf0c19f | |
parent | 41a881815fe7c8d8e236f8146b9434b51af75ecc (diff) | |
download | web-5fde298d4b705bd256d5510493955ca98a31acdc.tar.gz web-5fde298d4b705bd256d5510493955ca98a31acdc.tar.bz2 web-5fde298d4b705bd256d5510493955ca98a31acdc.zip |
Bump flask version
-rw-r--r-- | app.py | 11 | ||||
-rw-r--r-- | flaskext_compat.py | 125 | ||||
-rw-r--r-- | forms.py | 5 | ||||
-rw-r--r-- | requirements.txt | 2 | ||||
-rw-r--r-- | utils.py | 3 |
5 files changed, 8 insertions, 138 deletions
@@ -1,8 +1,5 @@ # -*- coding: utf-8 -*- -import flaskext_compat -flaskext_compat.activate() - import account import ldap import os @@ -20,6 +17,7 @@ if 'SPLINE_ACCOUNT_WEB_SETTINGS' in os.environ: app.config.from_envvar('SPLINE_ACCOUNT_WEB_SETTINGS') app.all_services = account.SERVICES #TODO: take that from our json file or so +app.username_blacklist = list() @app.before_request def session_permanent(): @@ -46,12 +44,9 @@ def initialize_user(): # we had crap in the session, delete it logout_user() -@app.before_request +@app.before_first_request def read_blacklist(): - app.username_blacklist = None - - # use @before_first_request as soon as we require flask 0.8 - if app.username_blacklist is None and app.config.get('USERNAME_BLACKLIST_FILE'): + if app.config.get('USERNAME_BLACKLIST_FILE'): with open(app.config['USERNAME_BLACKLIST_FILE']) as f: app.username_blacklist = f.read().split('\n') diff --git a/flaskext_compat.py b/flaskext_compat.py deleted file mode 100644 index cb0b436..0000000 --- a/flaskext_compat.py +++ /dev/null @@ -1,125 +0,0 @@ -# -*- coding: utf-8 -*- -""" - flaskext_compat - ~~~~~~~~~~~~~~~ - - Implements the ``flask.ext`` virtual package for versions of Flask - older than 0.7. This module is a noop if Flask 0.8 was detected. - - Usage:: - - import flaskext_compat - flaskext_compat.activate() - from flask.ext import foo - - :copyright: (c) 2011 by Armin Ronacher. - :license: BSD, see LICENSE for more details. -""" -import sys -import os -import imp - - -class ExtensionImporter(object): - """This importer redirects imports from this submodule to other locations. - This makes it possible to transition from the old flaskext.name to the - newer flask_name without people having a hard time. - """ - - def __init__(self, module_choices, wrapper_module): - self.module_choices = module_choices - self.wrapper_module = wrapper_module - self.prefix = wrapper_module + '.' - self.prefix_cutoff = wrapper_module.count('.') + 1 - - def __eq__(self, other): - return self.__class__.__module__ == other.__class__.__module__ and \ - self.__class__.__name__ == other.__class__.__name__ and \ - self.wrapper_module == other.wrapper_module and \ - self.module_choices == other.module_choices - - def __ne__(self, other): - return not self.__eq__(other) - - def install(self): - sys.meta_path[:] = [x for x in sys.meta_path if self != x] + [self] - - def find_module(self, fullname, path=None): - if fullname.startswith(self.prefix): - return self - - def load_module(self, fullname): - if fullname in sys.modules: - return sys.modules[fullname] - modname = fullname.split('.', self.prefix_cutoff)[self.prefix_cutoff] - for path in self.module_choices: - realname = path % modname - try: - __import__(realname) - except ImportError: - exc_type, exc_value, tb = sys.exc_info() - # since we only establish the entry in sys.modules at the - # end this seems to be redundant, but if recursive imports - # happen we will call into the move import a second time. - # On the second invocation we still don't have an entry for - # fullname in sys.modules, but we will end up with the same - # fake module name and that import will succeed since this - # one already has a temporary entry in the modules dict. - # Since this one "succeeded" temporarily that second - # invocation now will have created a fullname entry in - # sys.modules which we have to kill. - sys.modules.pop(fullname, None) - - # If it's an important traceback we reraise it, otherwise - # we swallow it and try the next choice. The skipped frame - # is the one from __import__ above which we don't care about. - if self.is_important_traceback(realname, tb): - raise exc_type, exc_value, tb.tb_next - continue - module = sys.modules[fullname] = sys.modules[realname] - if '.' not in modname: - setattr(sys.modules[self.wrapper_module], modname, module) - return module - raise ImportError('No module named %s' % fullname) - - def is_important_traceback(self, important_module, tb): - """Walks a traceback's frames and checks if any of the frames - originated in the given important module. If that is the case then we - were able to import the module itself but apparently something went - wrong when the module was imported. (Eg: import of an import failed). - """ - while tb is not None: - if self.is_important_frame(important_module, tb): - return True - tb = tb.tb_next - return False - - def is_important_frame(self, important_module, tb): - """Checks a single frame if it's important.""" - g = tb.tb_frame.f_globals - if '__name__' not in g: - return False - - module_name = g['__name__'] - - # Python 2.7 Behavior. Modules are cleaned up late so the - # name shows up properly here. Success! - if module_name == important_module: - return True - - # Some python versions will clean up modules so early that the - # module name at that point is no longer set. Try guessing from - # the filename then. - filename = os.path.abspath(tb.tb_frame.f_code.co_filename) - test_string = os.path.sep + important_module.replace('.', os.path.sep) - return test_string + '.py' in filename or \ - test_string + os.path.sep + '__init__.py' in filename - - -def activate(): - import flask - ext_module = imp.new_module('flask.ext') - ext_module.__path__ = [] - flask.ext = sys.modules['flask.ext'] = ext_module - importer = ExtensionImporter(['flask_%s', 'flaskext.%s'], 'flask.ext') - importer.install() @@ -1,8 +1,9 @@ # -*- coding: utf-8 -*- from account import SERVICES, NoSuchUserError from flask import g, current_app, session, Markup -from flask.ext.wtf import Form, validators, TextField, PasswordField,\ - ValidationError, BooleanField +from flask.ext.wtf import Form +from wtforms import TextField, PasswordField, ValidationError, BooleanField,\ + validators from functools import partial from utils import _username_re, _username_exclude_re, decrypt_password,\ NotRegexp, url_for diff --git a/requirements.txt b/requirements.txt index 164552f..7edd959 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,4 +1,4 @@ -Flask>=0.6 +Flask>=0.8 Flask-WTF Werkzeug>=0.6 Jinja2>=2.4 @@ -12,13 +12,12 @@ from email.utils import parseaddr from functools import wraps from flask import current_app, flash, g, redirect, render_template, request, session from flask import url_for as flask_url_for -from flask.ext.wtf import ValidationError from hashlib import sha1 from itertools import izip from random import randint from time import time from werkzeug.exceptions import Forbidden -from wtforms.validators import Regexp +from wtforms.validators import Regexp, ValidationError |