mirror of
https://github.com/wassname/flask-security.git
synced 2026-08-07 11:22:21 +08:00
Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
07bb00f75c | ||
|
|
9a10be5c90 | ||
|
|
829bb135d7 | ||
|
|
ab64406b6c | ||
|
|
6f68f1d540 | ||
|
|
510c7bfa2a | ||
|
|
67d8134e3a | ||
|
|
7bef96c261 | ||
|
|
7d6b42e960 |
@@ -3,6 +3,16 @@ Flask-Security Changelog
|
|||||||
|
|
||||||
Here you can see the full list of changes between each Flask-Security release.
|
Here you can see the full list of changes between each Flask-Security release.
|
||||||
|
|
||||||
|
Version 1.6.9
|
||||||
|
-------------
|
||||||
|
|
||||||
|
Released August 20th 2013
|
||||||
|
|
||||||
|
- Fix bug in SQLAlchemy datastore's `get_user` function
|
||||||
|
- Fix bug in PeeWee datastore's `remove_role_from_user` function
|
||||||
|
- Fixed import error caused by new Flask-WTF release
|
||||||
|
|
||||||
|
|
||||||
Version 1.6.8
|
Version 1.6.8
|
||||||
-------------
|
-------------
|
||||||
|
|
||||||
@@ -12,6 +22,7 @@ Released August 1st 2013
|
|||||||
- Code cleanup regarding token_callback
|
- Code cleanup regarding token_callback
|
||||||
- Ignore validation errors in find_user function for MongoEngineUserDatastore
|
- Ignore validation errors in find_user function for MongoEngineUserDatastore
|
||||||
|
|
||||||
|
|
||||||
Version 1.6.7
|
Version 1.6.7
|
||||||
-------------
|
-------------
|
||||||
|
|
||||||
|
|||||||
+1
-1
@@ -49,7 +49,7 @@ copyright = u'2012, Matt Wright'
|
|||||||
# built documents.
|
# built documents.
|
||||||
#
|
#
|
||||||
# The short X.Y version.
|
# The short X.Y version.
|
||||||
version = '1.6.8'
|
version = '1.6.9'
|
||||||
# The full version, including alpha/beta/rc tags.
|
# The full version, including alpha/beta/rc tags.
|
||||||
release = version
|
release = version
|
||||||
|
|
||||||
|
|||||||
@@ -10,7 +10,7 @@
|
|||||||
:license: MIT, see LICENSE for more details.
|
:license: MIT, see LICENSE for more details.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
__version__ = '1.6.8'
|
__version__ = '1.6.9'
|
||||||
|
|
||||||
from .core import Security, RoleMixin, UserMixin, AnonymousUser, current_user
|
from .core import Security, RoleMixin, UserMixin, AnonymousUser, current_user
|
||||||
from .datastore import SQLAlchemyUserDatastore, MongoEngineUserDatastore, PeeweeUserDatastore
|
from .datastore import SQLAlchemyUserDatastore, MongoEngineUserDatastore, PeeweeUserDatastore
|
||||||
|
|||||||
@@ -180,9 +180,20 @@ class SQLAlchemyUserDatastore(SQLAlchemyDatastore, UserDatastore):
|
|||||||
UserDatastore.__init__(self, user_model, role_model)
|
UserDatastore.__init__(self, user_model, role_model)
|
||||||
|
|
||||||
def get_user(self, id_or_email):
|
def get_user(self, id_or_email):
|
||||||
return (self.user_model.query.get(id_or_email) or
|
returned = None
|
||||||
self.user_model.query.filter(
|
if self._is_numeric(id_or_email):
|
||||||
self.user_model.email.ilike(id_or_email)).first())
|
returned = self.user_model.query.get(id_or_email)
|
||||||
|
if not returned:
|
||||||
|
returned = self.user_model.query.filter(
|
||||||
|
self.user_model.email.ilike(id_or_email)).first()
|
||||||
|
return returned
|
||||||
|
|
||||||
|
def _is_numeric(self, value):
|
||||||
|
try:
|
||||||
|
int(value)
|
||||||
|
except ValueError:
|
||||||
|
return False
|
||||||
|
return True
|
||||||
|
|
||||||
def find_user(self, **kwargs):
|
def find_user(self, **kwargs):
|
||||||
return self.user_model.query.filter_by(**kwargs).first()
|
return self.user_model.query.filter_by(**kwargs).first()
|
||||||
@@ -291,8 +302,9 @@ class PeeweeUserDatastore(PeeweeDatastore, UserDatastore):
|
|||||||
result = self.UserRole.select() \
|
result = self.UserRole.select() \
|
||||||
.where(self.UserRole.user == user, self.UserRole.role == role)
|
.where(self.UserRole.user == user, self.UserRole.role == role)
|
||||||
if result.count():
|
if result.count():
|
||||||
self.UserRole.delete().where(
|
query = self.UserRole.delete().where(
|
||||||
self.UserRole.user == user, self.UserRole.role == role)
|
self.UserRole.user == user, self.UserRole.role == role)
|
||||||
|
query.execute()
|
||||||
return True
|
return True
|
||||||
else:
|
else:
|
||||||
return False
|
return False
|
||||||
|
|||||||
@@ -15,7 +15,8 @@ import urlparse
|
|||||||
import flask_wtf as wtf
|
import flask_wtf as wtf
|
||||||
|
|
||||||
from flask import request, current_app
|
from flask import request, current_app
|
||||||
from flask_wtf import Form as BaseForm, TextField, PasswordField, \
|
from flask_wtf import Form as BaseForm
|
||||||
|
from wtforms import TextField, PasswordField, validators, \
|
||||||
SubmitField, HiddenField, BooleanField, ValidationError, Field
|
SubmitField, HiddenField, BooleanField, ValidationError, Field
|
||||||
from flask_login import current_user
|
from flask_login import current_user
|
||||||
from werkzeug.local import LocalProxy
|
from werkzeug.local import LocalProxy
|
||||||
@@ -50,19 +51,19 @@ class ValidatorMixin(object):
|
|||||||
return super(ValidatorMixin, self).__call__(form, field)
|
return super(ValidatorMixin, self).__call__(form, field)
|
||||||
|
|
||||||
|
|
||||||
class EqualTo(ValidatorMixin, wtf.EqualTo):
|
class EqualTo(ValidatorMixin, validators.EqualTo):
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
|
||||||
class Required(ValidatorMixin, wtf.Required):
|
class Required(ValidatorMixin, validators.Required):
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
|
||||||
class Email(ValidatorMixin, wtf.Email):
|
class Email(ValidatorMixin, validators.Email):
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
|
||||||
class Length(ValidatorMixin, wtf.Length):
|
class Length(ValidatorMixin, validators.Length):
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -20,7 +20,7 @@ from setuptools import setup
|
|||||||
|
|
||||||
setup(
|
setup(
|
||||||
name='Flask-Security',
|
name='Flask-Security',
|
||||||
version='1.6.8',
|
version='1.6.9',
|
||||||
url='https://github.com/mattupstate/flask-security',
|
url='https://github.com/mattupstate/flask-security',
|
||||||
license='MIT',
|
license='MIT',
|
||||||
author='Matt Wright',
|
author='Matt Wright',
|
||||||
|
|||||||
Reference in New Issue
Block a user