mirror of
https://github.com/wassname/flask-security.git
synced 2026-06-27 16:10:11 +08:00
Merge branch 'develop'
This commit is contained in:
@@ -3,6 +3,16 @@ Flask-Security Changelog
|
||||
|
||||
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
|
||||
-------------
|
||||
|
||||
@@ -12,6 +22,7 @@ Released August 1st 2013
|
||||
- Code cleanup regarding token_callback
|
||||
- Ignore validation errors in find_user function for MongoEngineUserDatastore
|
||||
|
||||
|
||||
Version 1.6.7
|
||||
-------------
|
||||
|
||||
|
||||
@@ -180,9 +180,20 @@ class SQLAlchemyUserDatastore(SQLAlchemyDatastore, UserDatastore):
|
||||
UserDatastore.__init__(self, user_model, role_model)
|
||||
|
||||
def get_user(self, id_or_email):
|
||||
return (self.user_model.query.get(id_or_email) or
|
||||
self.user_model.query.filter(
|
||||
self.user_model.email.ilike(id_or_email)).first())
|
||||
returned = None
|
||||
if self._is_numeric(id_or_email):
|
||||
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):
|
||||
return self.user_model.query.filter_by(**kwargs).first()
|
||||
@@ -291,8 +302,9 @@ class PeeweeUserDatastore(PeeweeDatastore, UserDatastore):
|
||||
result = self.UserRole.select() \
|
||||
.where(self.UserRole.user == user, self.UserRole.role == role)
|
||||
if result.count():
|
||||
self.UserRole.delete().where(
|
||||
query = self.UserRole.delete().where(
|
||||
self.UserRole.user == user, self.UserRole.role == role)
|
||||
query.execute()
|
||||
return True
|
||||
else:
|
||||
return False
|
||||
|
||||
@@ -15,7 +15,8 @@ import urlparse
|
||||
import flask_wtf as wtf
|
||||
|
||||
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
|
||||
from flask_login import current_user
|
||||
from werkzeug.local import LocalProxy
|
||||
@@ -50,19 +51,19 @@ class ValidatorMixin(object):
|
||||
return super(ValidatorMixin, self).__call__(form, field)
|
||||
|
||||
|
||||
class EqualTo(ValidatorMixin, wtf.EqualTo):
|
||||
class EqualTo(ValidatorMixin, validators.EqualTo):
|
||||
pass
|
||||
|
||||
|
||||
class Required(ValidatorMixin, wtf.Required):
|
||||
class Required(ValidatorMixin, validators.Required):
|
||||
pass
|
||||
|
||||
|
||||
class Email(ValidatorMixin, wtf.Email):
|
||||
class Email(ValidatorMixin, validators.Email):
|
||||
pass
|
||||
|
||||
|
||||
class Length(ValidatorMixin, wtf.Length):
|
||||
class Length(ValidatorMixin, validators.Length):
|
||||
pass
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user