Commit 50a0251b authored by Alex Kerney's avatar Alex Kerney

Updated naming for tests and a few files that I missed on the first pass.

parent 222261a9
...@@ -51,4 +51,4 @@ MongoEngine ...@@ -51,4 +51,4 @@ MongoEngine
----------- -----------
1. Flask-Admin supports GridFS-backed image- and file uploads, done through WTForms fields. Documentation can be found 1. Flask-Admin supports GridFS-backed image- and file uploads, done through WTForms fields. Documentation can be found
at :mod:`flask.ext.admin.contrib.mongoengine.fields`. at :mod:`flask_admin.contrib.mongoengine.fields`.
...@@ -5,7 +5,7 @@ from flask_admin.contrib import sqla ...@@ -5,7 +5,7 @@ from flask_admin.contrib import sqla
from flask_admin import expose, Admin from flask_admin import expose, Admin
# required for creating custom filters # required for creating custom filters
from flask.ext.admin.contrib.sqla.filters import BaseSQLAFilter, FilterEqual from flask_admin.contrib.sqla.filters import BaseSQLAFilter, FilterEqual
# Create application # Create application
app = Flask(__name__) app = Flask(__name__)
......
...@@ -12,11 +12,11 @@ from flask import flash, redirect, abort, request, send_file ...@@ -12,11 +12,11 @@ from flask import flash, redirect, abort, request, send_file
from wtforms import fields, validators from wtforms import fields, validators
from flask.ext.admin import form, helpers from flask_admin import form, helpers
from flask.ext.admin._compat import urljoin, as_unicode from flask_admin._compat import urljoin, as_unicode
from flask.ext.admin.base import BaseView, expose from flask_admin.base import BaseView, expose
from flask.ext.admin.actions import action, ActionsMixin from flask_admin.actions import action, ActionsMixin
from flask.ext.admin.babel import gettext, lazy_gettext from flask_admin.babel import gettext, lazy_gettext
class FileAdmin(BaseView, ActionsMixin): class FileAdmin(BaseView, ActionsMixin):
......
...@@ -27,7 +27,7 @@ class ModelView(BaseModelView): ...@@ -27,7 +27,7 @@ class ModelView(BaseModelView):
Collection of the column filters. Collection of the column filters.
Can contain either field names or instances of Can contain either field names or instances of
:class:`flask.ext.admin.contrib.peewee.filters.BaseFilter` classes. :class:`flask_admin.contrib.peewee.filters.BaseFilter` classes.
For example:: For example::
......
def setup(): def setup():
import warnings import warnings
warnings.warn('Flask-Admin peewee integration module was renamed as flask.ext.admin.contrib.peewee, please use it instead.') warnings.warn('Flask-Admin peewee integration module was renamed as flask_admin.contrib.peewee, please use it instead.')
from flask_admin._backwards import import_redirect from flask_admin._backwards import import_redirect
import_redirect(__name__, 'flask_admin.contrib.peewee') import_redirect(__name__, 'flask_admin.contrib.peewee')
......
...@@ -2,7 +2,7 @@ def setup(): ...@@ -2,7 +2,7 @@ def setup():
import warnings import warnings
warnings.warn('Flask-Admin sqlalchemy integration module was renamed as flask_admin.contrib.sqla, please use it instead.') warnings.warn('Flask-Admin sqlalchemy integration module was renamed as flask_admin.contrib.sqla, please use it instead.')
from flask.ext.admin._backwards import import_redirect from flask_admin._backwards import import_redirect
import_redirect(__name__, 'flask_admin.contrib.sqla') import_redirect(__name__, 'flask_admin.contrib.sqla')
setup() setup()
......
from jinja2 import Markup from jinja2 import Markup
from flask.ext.admin._compat import string_types from flask_admin._compat import string_types
from flask.ext.admin import helpers from flask_admin import helpers
class BaseRule(object): class BaseRule(object):
......
from flask import Flask from flask import Flask
from flask.ext.admin import Admin from flask_admin import Admin
def setup(): def setup():
......
...@@ -2,7 +2,7 @@ import os.path as op ...@@ -2,7 +2,7 @@ import os.path as op
from nose.tools import eq_, ok_ from nose.tools import eq_, ok_
from flask.ext.admin.contrib import fileadmin from flask_admin.contrib import fileadmin
from . import setup from . import setup
......
from flask import Flask from flask import Flask
from flask.ext.admin import Admin from flask_admin import Admin
from flask.ext.sqlalchemy import SQLAlchemy from flask_sqlalchemy import SQLAlchemy
def setup(): def setup():
......
from __future__ import unicode_literals from __future__ import unicode_literals
from nose.tools import eq_, ok_ from nose.tools import eq_, ok_
from flask.ext.admin.contrib.geoa import ModelView from flask_admin.contrib.geoa import ModelView
from geoalchemy2 import Geometry from geoalchemy2 import Geometry
from geoalchemy2.shape import to_shape from geoalchemy2.shape import to_shape
from flask.ext.admin.contrib.geoa.fields import GeoJSONField from flask_admin.contrib.geoa.fields import GeoJSONField
from . import setup from . import setup
......
from flask import Flask from flask import Flask
from flask.ext.admin import Admin from flask_admin import Admin
from flask.ext.mongoengine import MongoEngine from flask_mongoengine import MongoEngine
def setup(): def setup():
......
...@@ -2,14 +2,14 @@ from nose.tools import eq_, ok_ ...@@ -2,14 +2,14 @@ from nose.tools import eq_, ok_
from nose.plugins.skip import SkipTest from nose.plugins.skip import SkipTest
# Skip test on PY3 # Skip test on PY3
from flask.ext.admin._compat import PY2, as_unicode from flask_admin._compat import PY2, as_unicode
if not PY2: if not PY2:
raise SkipTest('MongoEngine is not Python 3 compatible') raise SkipTest('MongoEngine is not Python 3 compatible')
from wtforms import fields from wtforms import fields
from flask.ext.admin import form from flask_admin import form
from flask.ext.admin.contrib.mongoengine import ModelView from flask_admin.contrib.mongoengine import ModelView
from . import setup from . import setup
...@@ -37,13 +37,13 @@ def create_models(db): ...@@ -37,13 +37,13 @@ def create_models(db):
def __str__(self): def __str__(self):
return self.test1 return self.test1
class Model2(db.Document): class Model2(db.Document):
string_field = db.StringField() string_field = db.StringField()
int_field = db.IntField() int_field = db.IntField()
float_field = db.FloatField() float_field = db.FloatField()
bool_field = db.BooleanField() bool_field = db.BooleanField()
model1 = db.ReferenceField(Model1) model1 = db.ReferenceField(Model1)
Model1.objects.delete() Model1.objects.delete()
...@@ -179,27 +179,27 @@ def test_column_editable_list(): ...@@ -179,27 +179,27 @@ def test_column_editable_list():
'datetime_field-' + str(obj2.id): 'problematic-input', 'datetime_field-' + str(obj2.id): 'problematic-input',
}) })
eq_(rv.status_code, 500) eq_(rv.status_code, 500)
# Test invalid primary key # Test invalid primary key
rv = client.post('/admin/model1/ajax/update/', data={ rv = client.post('/admin/model1/ajax/update/', data={
'test1-1000': 'problematic-input', 'test1-1000': 'problematic-input',
}) })
data = rv.data.decode('utf-8') data = rv.data.decode('utf-8')
eq_(rv.status_code, 500) eq_(rv.status_code, 500)
# Test editing column not in column_editable_list # Test editing column not in column_editable_list
rv = client.post('/admin/model1/ajax/update/', data={ rv = client.post('/admin/model1/ajax/update/', data={
'test2-1': 'problematic-input', 'test2-1': 'problematic-input',
}) })
data = rv.data.decode('utf-8') data = rv.data.decode('utf-8')
eq_(rv.status_code, 500) eq_(rv.status_code, 500)
# Test in-line editing for relations # Test in-line editing for relations
view = CustomModelView(Model2, view = CustomModelView(Model2,
column_editable_list=[ column_editable_list=[
'model1']) 'model1'])
admin.add_view(view) admin.add_view(view)
obj3 = Model2.objects.get(string_field = 'string_field_val_1') obj3 = Model2.objects.get(string_field = 'string_field_val_1')
rv = client.post('/admin/model2/ajax/update/', data={ rv = client.post('/admin/model2/ajax/update/', data={
'model1-' + str(obj3.id): str(obj1.id), 'model1-' + str(obj3.id): str(obj1.id),
...@@ -215,16 +215,16 @@ def test_column_editable_list(): ...@@ -215,16 +215,16 @@ def test_column_editable_list():
def test_column_filters(): def test_column_filters():
app, db, admin = setup() app, db, admin = setup()
Model1, Model2 = create_models(db) Model1, Model2 = create_models(db)
# fill DB with values # fill DB with values
fill_db(Model1, Model2) fill_db(Model1, Model2)
# Test string filter # Test string filter
view = CustomModelView(Model1, column_filters=['test1']) view = CustomModelView(Model1, column_filters=['test1'])
admin.add_view(view) admin.add_view(view)
eq_(len(view._filters), 7) eq_(len(view._filters), 7)
eq_([(f['index'], f['operation']) for f in view._filter_groups[u'Test1']], eq_([(f['index'], f['operation']) for f in view._filter_groups[u'Test1']],
...@@ -237,38 +237,38 @@ def test_column_filters(): ...@@ -237,38 +237,38 @@ def test_column_filters():
(5, 'in list'), (5, 'in list'),
(6, 'not in list'), (6, 'not in list'),
]) ])
# Make some test clients # Make some test clients
client = app.test_client() client = app.test_client()
# string - equals # string - equals
rv = client.get('/admin/model1/?flt0_0=test1_val_1') rv = client.get('/admin/model1/?flt0_0=test1_val_1')
eq_(rv.status_code, 200) eq_(rv.status_code, 200)
data = rv.data.decode('utf-8') data = rv.data.decode('utf-8')
ok_('test2_val_1' in data) ok_('test2_val_1' in data)
ok_('test1_val_2' not in data) ok_('test1_val_2' not in data)
# string - not equal # string - not equal
rv = client.get('/admin/model1/?flt0_1=test1_val_1') rv = client.get('/admin/model1/?flt0_1=test1_val_1')
eq_(rv.status_code, 200) eq_(rv.status_code, 200)
data = rv.data.decode('utf-8') data = rv.data.decode('utf-8')
ok_('test2_val_1' not in data) ok_('test2_val_1' not in data)
ok_('test1_val_2' in data) ok_('test1_val_2' in data)
# string - contains # string - contains
rv = client.get('/admin/model1/?flt0_2=test1_val_1') rv = client.get('/admin/model1/?flt0_2=test1_val_1')
eq_(rv.status_code, 200) eq_(rv.status_code, 200)
data = rv.data.decode('utf-8') data = rv.data.decode('utf-8')
ok_('test2_val_1' in data) ok_('test2_val_1' in data)
ok_('test1_val_2' not in data) ok_('test1_val_2' not in data)
# string - not contains # string - not contains
rv = client.get('/admin/model1/?flt0_3=test1_val_1') rv = client.get('/admin/model1/?flt0_3=test1_val_1')
eq_(rv.status_code, 200) eq_(rv.status_code, 200)
data = rv.data.decode('utf-8') data = rv.data.decode('utf-8')
ok_('test2_val_1' not in data) ok_('test2_val_1' not in data)
ok_('test1_val_2' in data) ok_('test1_val_2' in data)
# string - empty # string - empty
rv = client.get('/admin/model1/?flt0_4=1') rv = client.get('/admin/model1/?flt0_4=1')
eq_(rv.status_code, 200) eq_(rv.status_code, 200)
...@@ -276,7 +276,7 @@ def test_column_filters(): ...@@ -276,7 +276,7 @@ def test_column_filters():
ok_('empty_obj' in data) ok_('empty_obj' in data)
ok_('test1_val_1' not in data) ok_('test1_val_1' not in data)
ok_('test1_val_2' not in data) ok_('test1_val_2' not in data)
# string - not empty # string - not empty
rv = client.get('/admin/model1/?flt0_4=0') rv = client.get('/admin/model1/?flt0_4=0')
eq_(rv.status_code, 200) eq_(rv.status_code, 200)
...@@ -284,7 +284,7 @@ def test_column_filters(): ...@@ -284,7 +284,7 @@ def test_column_filters():
ok_('empty_obj' not in data) ok_('empty_obj' not in data)
ok_('test1_val_1' in data) ok_('test1_val_1' in data)
ok_('test1_val_2' in data) ok_('test1_val_2' in data)
# string - in list # string - in list
rv = client.get('/admin/model1/?flt0_5=test1_val_1%2Ctest1_val_2') rv = client.get('/admin/model1/?flt0_5=test1_val_1%2Ctest1_val_2')
eq_(rv.status_code, 200) eq_(rv.status_code, 200)
...@@ -293,7 +293,7 @@ def test_column_filters(): ...@@ -293,7 +293,7 @@ def test_column_filters():
ok_('test2_val_2' in data) ok_('test2_val_2' in data)
ok_('test1_val_3' not in data) ok_('test1_val_3' not in data)
ok_('test1_val_4' not in data) ok_('test1_val_4' not in data)
# string - not in list # string - not in list
rv = client.get('/admin/model1/?flt0_6=test1_val_1%2Ctest1_val_2') rv = client.get('/admin/model1/?flt0_6=test1_val_1%2Ctest1_val_2')
eq_(rv.status_code, 200) eq_(rv.status_code, 200)
...@@ -302,11 +302,11 @@ def test_column_filters(): ...@@ -302,11 +302,11 @@ def test_column_filters():
ok_('test2_val_2' not in data) ok_('test2_val_2' not in data)
ok_('test1_val_3' in data) ok_('test1_val_3' in data)
ok_('test1_val_4' in data) ok_('test1_val_4' in data)
# Test numeric filter # Test numeric filter
view = CustomModelView(Model2, column_filters=['int_field']) view = CustomModelView(Model2, column_filters=['int_field'])
admin.add_view(view) admin.add_view(view)
eq_([(f['index'], f['operation']) for f in view._filter_groups[u'Int Field']], eq_([(f['index'], f['operation']) for f in view._filter_groups[u'Int Field']],
[ [
(0, 'equals'), (0, 'equals'),
...@@ -317,41 +317,41 @@ def test_column_filters(): ...@@ -317,41 +317,41 @@ def test_column_filters():
(5, 'in list'), (5, 'in list'),
(6, 'not in list'), (6, 'not in list'),
]) ])
# integer - equals # integer - equals
rv = client.get('/admin/model2/?flt0_0=5000') rv = client.get('/admin/model2/?flt0_0=5000')
eq_(rv.status_code, 200) eq_(rv.status_code, 200)
data = rv.data.decode('utf-8') data = rv.data.decode('utf-8')
ok_('string_field_val_3' in data) ok_('string_field_val_3' in data)
ok_('string_field_val_4' not in data) ok_('string_field_val_4' not in data)
# integer - equals - test validation # integer - equals - test validation
rv = client.get('/admin/model2/?flt0_0=badval') rv = client.get('/admin/model2/?flt0_0=badval')
eq_(rv.status_code, 200) eq_(rv.status_code, 200)
data = rv.data.decode('utf-8') data = rv.data.decode('utf-8')
ok_('Invalid Filter Value' in data) ok_('Invalid Filter Value' in data)
# integer - not equal # integer - not equal
rv = client.get('/admin/model2/?flt0_1=5000') rv = client.get('/admin/model2/?flt0_1=5000')
eq_(rv.status_code, 200) eq_(rv.status_code, 200)
data = rv.data.decode('utf-8') data = rv.data.decode('utf-8')
ok_('string_field_val_3' not in data) ok_('string_field_val_3' not in data)
ok_('string_field_val_4' in data) ok_('string_field_val_4' in data)
# integer - greater # integer - greater
rv = client.get('/admin/model2/?flt0_2=6000') rv = client.get('/admin/model2/?flt0_2=6000')
eq_(rv.status_code, 200) eq_(rv.status_code, 200)
data = rv.data.decode('utf-8') data = rv.data.decode('utf-8')
ok_('string_field_val_3' not in data) ok_('string_field_val_3' not in data)
ok_('string_field_val_4' in data) ok_('string_field_val_4' in data)
# integer - smaller # integer - smaller
rv = client.get('/admin/model2/?flt0_3=6000') rv = client.get('/admin/model2/?flt0_3=6000')
eq_(rv.status_code, 200) eq_(rv.status_code, 200)
data = rv.data.decode('utf-8') data = rv.data.decode('utf-8')
ok_('string_field_val_3' in data) ok_('string_field_val_3' in data)
ok_('string_field_val_4' not in data) ok_('string_field_val_4' not in data)
# integer - empty # integer - empty
rv = client.get('/admin/model2/?flt0_4=1') rv = client.get('/admin/model2/?flt0_4=1')
eq_(rv.status_code, 200) eq_(rv.status_code, 200)
...@@ -360,7 +360,7 @@ def test_column_filters(): ...@@ -360,7 +360,7 @@ def test_column_filters():
ok_('string_field_val_2' in data) ok_('string_field_val_2' in data)
ok_('string_field_val_3' not in data) ok_('string_field_val_3' not in data)
ok_('string_field_val_4' not in data) ok_('string_field_val_4' not in data)
# integer - not empty # integer - not empty
rv = client.get('/admin/model2/?flt0_4=0') rv = client.get('/admin/model2/?flt0_4=0')
eq_(rv.status_code, 200) eq_(rv.status_code, 200)
...@@ -369,7 +369,7 @@ def test_column_filters(): ...@@ -369,7 +369,7 @@ def test_column_filters():
ok_('string_field_val_2' not in data) ok_('string_field_val_2' not in data)
ok_('string_field_val_3' in data) ok_('string_field_val_3' in data)
ok_('string_field_val_4' in data) ok_('string_field_val_4' in data)
# integer - in list # integer - in list
rv = client.get('/admin/model2/?flt0_5=5000%2C9000') rv = client.get('/admin/model2/?flt0_5=5000%2C9000')
eq_(rv.status_code, 200) eq_(rv.status_code, 200)
...@@ -378,13 +378,13 @@ def test_column_filters(): ...@@ -378,13 +378,13 @@ def test_column_filters():
ok_('string_field_val_2' not in data) ok_('string_field_val_2' not in data)
ok_('string_field_val_3' in data) ok_('string_field_val_3' in data)
ok_('string_field_val_4' in data) ok_('string_field_val_4' in data)
# integer - in list - test validation # integer - in list - test validation
rv = client.get('/admin/model2/?flt0_5=5000%2Cbadval') rv = client.get('/admin/model2/?flt0_5=5000%2Cbadval')
eq_(rv.status_code, 200) eq_(rv.status_code, 200)
data = rv.data.decode('utf-8') data = rv.data.decode('utf-8')
ok_('Invalid Filter Value' in data) ok_('Invalid Filter Value' in data)
# integer - not in list # integer - not in list
rv = client.get('/admin/model2/?flt0_6=5000%2C9000') rv = client.get('/admin/model2/?flt0_6=5000%2C9000')
eq_(rv.status_code, 200) eq_(rv.status_code, 200)
...@@ -393,12 +393,12 @@ def test_column_filters(): ...@@ -393,12 +393,12 @@ def test_column_filters():
ok_('string_field_val_2' in data) ok_('string_field_val_2' in data)
ok_('string_field_val_3' not in data) ok_('string_field_val_3' not in data)
ok_('string_field_val_4' not in data) ok_('string_field_val_4' not in data)
# Test float filter # Test float filter
view = CustomModelView(Model2, column_filters=['float_field'], view = CustomModelView(Model2, column_filters=['float_field'],
endpoint="_float") endpoint="_float")
admin.add_view(view) admin.add_view(view)
eq_([(f['index'], f['operation']) for f in view._filter_groups[u'Float Field']], eq_([(f['index'], f['operation']) for f in view._filter_groups[u'Float Field']],
[ [
(0, 'equals'), (0, 'equals'),
...@@ -409,41 +409,41 @@ def test_column_filters(): ...@@ -409,41 +409,41 @@ def test_column_filters():
(5, 'in list'), (5, 'in list'),
(6, 'not in list'), (6, 'not in list'),
]) ])
# float - equals # float - equals
rv = client.get('/admin/_float/?flt0_0=25.9') rv = client.get('/admin/_float/?flt0_0=25.9')
eq_(rv.status_code, 200) eq_(rv.status_code, 200)
data = rv.data.decode('utf-8') data = rv.data.decode('utf-8')
ok_('string_field_val_3' in data) ok_('string_field_val_3' in data)
ok_('string_field_val_4' not in data) ok_('string_field_val_4' not in data)
# float - equals - test validation # float - equals - test validation
rv = client.get('/admin/_float/?flt0_0=badval') rv = client.get('/admin/_float/?flt0_0=badval')
eq_(rv.status_code, 200) eq_(rv.status_code, 200)
data = rv.data.decode('utf-8') data = rv.data.decode('utf-8')
ok_('Invalid Filter Value' in data) ok_('Invalid Filter Value' in data)
# float - not equal # float - not equal
rv = client.get('/admin/_float/?flt0_1=25.9') rv = client.get('/admin/_float/?flt0_1=25.9')
eq_(rv.status_code, 200) eq_(rv.status_code, 200)
data = rv.data.decode('utf-8') data = rv.data.decode('utf-8')
ok_('string_field_val_3' not in data) ok_('string_field_val_3' not in data)
ok_('string_field_val_4' in data) ok_('string_field_val_4' in data)
# float - greater # float - greater
rv = client.get('/admin/_float/?flt0_2=60.5') rv = client.get('/admin/_float/?flt0_2=60.5')
eq_(rv.status_code, 200) eq_(rv.status_code, 200)
data = rv.data.decode('utf-8') data = rv.data.decode('utf-8')
ok_('string_field_val_3' not in data) ok_('string_field_val_3' not in data)
ok_('string_field_val_4' in data) ok_('string_field_val_4' in data)
# float - smaller # float - smaller
rv = client.get('/admin/_float/?flt0_3=60.5') rv = client.get('/admin/_float/?flt0_3=60.5')
eq_(rv.status_code, 200) eq_(rv.status_code, 200)
data = rv.data.decode('utf-8') data = rv.data.decode('utf-8')
ok_('string_field_val_3' in data) ok_('string_field_val_3' in data)
ok_('string_field_val_4' not in data) ok_('string_field_val_4' not in data)
# float - empty # float - empty
rv = client.get('/admin/_float/?flt0_4=1') rv = client.get('/admin/_float/?flt0_4=1')
eq_(rv.status_code, 200) eq_(rv.status_code, 200)
...@@ -452,7 +452,7 @@ def test_column_filters(): ...@@ -452,7 +452,7 @@ def test_column_filters():
ok_('string_field_val_2' in data) ok_('string_field_val_2' in data)
ok_('string_field_val_3' not in data) ok_('string_field_val_3' not in data)
ok_('string_field_val_4' not in data) ok_('string_field_val_4' not in data)
# float - not empty # float - not empty
rv = client.get('/admin/_float/?flt0_4=0') rv = client.get('/admin/_float/?flt0_4=0')
eq_(rv.status_code, 200) eq_(rv.status_code, 200)
...@@ -461,7 +461,7 @@ def test_column_filters(): ...@@ -461,7 +461,7 @@ def test_column_filters():
ok_('string_field_val_2' not in data) ok_('string_field_val_2' not in data)
ok_('string_field_val_3' in data) ok_('string_field_val_3' in data)
ok_('string_field_val_4' in data) ok_('string_field_val_4' in data)
# float - in list # float - in list
rv = client.get('/admin/_float/?flt0_5=25.9%2C75.5') rv = client.get('/admin/_float/?flt0_5=25.9%2C75.5')
eq_(rv.status_code, 200) eq_(rv.status_code, 200)
...@@ -470,13 +470,13 @@ def test_column_filters(): ...@@ -470,13 +470,13 @@ def test_column_filters():
ok_('string_field_val_2' not in data) ok_('string_field_val_2' not in data)
ok_('string_field_val_3' in data) ok_('string_field_val_3' in data)
ok_('string_field_val_4' in data) ok_('string_field_val_4' in data)
# float - in list - test validation # float - in list - test validation
rv = client.get('/admin/_float/?flt0_5=25.9%2Cbadval') rv = client.get('/admin/_float/?flt0_5=25.9%2Cbadval')
eq_(rv.status_code, 200) eq_(rv.status_code, 200)
data = rv.data.decode('utf-8') data = rv.data.decode('utf-8')
ok_('Invalid Filter Value' in data) ok_('Invalid Filter Value' in data)
# float - not in list # float - not in list
rv = client.get('/admin/_float/?flt0_6=25.9%2C75.5') rv = client.get('/admin/_float/?flt0_6=25.9%2C75.5')
eq_(rv.status_code, 200) eq_(rv.status_code, 200)
...@@ -485,13 +485,13 @@ def test_column_filters(): ...@@ -485,13 +485,13 @@ def test_column_filters():
ok_('string_field_val_2' in data) ok_('string_field_val_2' in data)
ok_('string_field_val_3' not in data) ok_('string_field_val_3' not in data)
ok_('string_field_val_4' not in data) ok_('string_field_val_4' not in data)
# Test datetime filter # Test datetime filter
view = CustomModelView(Model1, view = CustomModelView(Model1,
column_filters=['datetime_field'], column_filters=['datetime_field'],
endpoint="_datetime") endpoint="_datetime")
admin.add_view(view) admin.add_view(view)
eq_([(f['index'], f['operation']) for f in view._filter_groups[u'Datetime Field']], eq_([(f['index'], f['operation']) for f in view._filter_groups[u'Datetime Field']],
[ [
(0, 'equals'), (0, 'equals'),
...@@ -502,49 +502,49 @@ def test_column_filters(): ...@@ -502,49 +502,49 @@ def test_column_filters():
(5, 'not between'), (5, 'not between'),
(6, 'empty'), (6, 'empty'),
]) ])
# datetime - equals # datetime - equals
rv = client.get('/admin/_datetime/?flt0_0=2014-04-03+01%3A09%3A00') rv = client.get('/admin/_datetime/?flt0_0=2014-04-03+01%3A09%3A00')
eq_(rv.status_code, 200) eq_(rv.status_code, 200)
data = rv.data.decode('utf-8') data = rv.data.decode('utf-8')
ok_('datetime_obj1' in data) ok_('datetime_obj1' in data)
ok_('datetime_obj2' not in data) ok_('datetime_obj2' not in data)
# datetime - not equal # datetime - not equal
rv = client.get('/admin/_datetime/?flt0_1=2014-04-03+01%3A09%3A00') rv = client.get('/admin/_datetime/?flt0_1=2014-04-03+01%3A09%3A00')
eq_(rv.status_code, 200) eq_(rv.status_code, 200)
data = rv.data.decode('utf-8') data = rv.data.decode('utf-8')
ok_('datetime_obj1' not in data) ok_('datetime_obj1' not in data)
ok_('datetime_obj2' in data) ok_('datetime_obj2' in data)
# datetime - greater # datetime - greater
rv = client.get('/admin/_datetime/?flt0_2=2014-04-03+01%3A08%3A00') rv = client.get('/admin/_datetime/?flt0_2=2014-04-03+01%3A08%3A00')
eq_(rv.status_code, 200) eq_(rv.status_code, 200)
data = rv.data.decode('utf-8') data = rv.data.decode('utf-8')
ok_('datetime_obj1' in data) ok_('datetime_obj1' in data)
ok_('datetime_obj2' not in data) ok_('datetime_obj2' not in data)
# datetime - smaller # datetime - smaller
rv = client.get('/admin/_datetime/?flt0_3=2014-04-03+01%3A08%3A00') rv = client.get('/admin/_datetime/?flt0_3=2014-04-03+01%3A08%3A00')
eq_(rv.status_code, 200) eq_(rv.status_code, 200)
data = rv.data.decode('utf-8') data = rv.data.decode('utf-8')
ok_('datetime_obj1' not in data) ok_('datetime_obj1' not in data)
ok_('datetime_obj2' in data) ok_('datetime_obj2' in data)
# datetime - between # datetime - between
rv = client.get('/admin/_datetime/?flt0_4=2014-04-02+00%3A00%3A00+to+2014-11-20+23%3A59%3A59') rv = client.get('/admin/_datetime/?flt0_4=2014-04-02+00%3A00%3A00+to+2014-11-20+23%3A59%3A59')
eq_(rv.status_code, 200) eq_(rv.status_code, 200)
data = rv.data.decode('utf-8') data = rv.data.decode('utf-8')
ok_('datetime_obj1' in data) ok_('datetime_obj1' in data)
ok_('datetime_obj2' not in data) ok_('datetime_obj2' not in data)
# datetime - not between # datetime - not between
rv = client.get('/admin/_datetime/?flt0_5=2014-04-02+00%3A00%3A00+to+2014-11-20+23%3A59%3A59') rv = client.get('/admin/_datetime/?flt0_5=2014-04-02+00%3A00%3A00+to+2014-11-20+23%3A59%3A59')
eq_(rv.status_code, 200) eq_(rv.status_code, 200)
data = rv.data.decode('utf-8') data = rv.data.decode('utf-8')
ok_('datetime_obj1' not in data) ok_('datetime_obj1' not in data)
ok_('datetime_obj2' in data) ok_('datetime_obj2' in data)
# datetime - empty # datetime - empty
rv = client.get('/admin/_datetime/?flt0_6=1') rv = client.get('/admin/_datetime/?flt0_6=1')
eq_(rv.status_code, 200) eq_(rv.status_code, 200)
...@@ -552,7 +552,7 @@ def test_column_filters(): ...@@ -552,7 +552,7 @@ def test_column_filters():
ok_('test1_val_1' in data) ok_('test1_val_1' in data)
ok_('datetime_obj1' not in data) ok_('datetime_obj1' not in data)
ok_('datetime_obj2' not in data) ok_('datetime_obj2' not in data)
# datetime - not empty # datetime - not empty
rv = client.get('/admin/_datetime/?flt0_6=0') rv = client.get('/admin/_datetime/?flt0_6=0')
eq_(rv.status_code, 200) eq_(rv.status_code, 200)
...@@ -560,7 +560,7 @@ def test_column_filters(): ...@@ -560,7 +560,7 @@ def test_column_filters():
ok_('test1_val_1' not in data) ok_('test1_val_1' not in data)
ok_('datetime_obj1' in data) ok_('datetime_obj1' in data)
ok_('datetime_obj2' in data) ok_('datetime_obj2' in data)
def test_default_sort(): def test_default_sort():
app, db, admin = setup() app, db, admin = setup()
M1, _ = create_models(db) M1, _ = create_models(db)
...@@ -698,7 +698,7 @@ def test_subdocument_config(): ...@@ -698,7 +698,7 @@ def test_subdocument_config():
def test_subdocument_class_config(): def test_subdocument_class_config():
app, db, admin = setup() app, db, admin = setup()
from flask.ext.admin.contrib.mongoengine import EmbeddedForm from flask_admin.contrib.mongoengine import EmbeddedForm
class Comment(db.EmbeddedDocument): class Comment(db.EmbeddedDocument):
name = db.StringField(max_length=20, required=True) name = db.StringField(max_length=20, required=True)
......
from flask import Flask from flask import Flask
from flask.ext.admin import Admin from flask_admin import Admin
import peewee import peewee
......
...@@ -2,7 +2,7 @@ from nose.tools import eq_, ok_ ...@@ -2,7 +2,7 @@ from nose.tools import eq_, ok_
from nose.plugins.skip import SkipTest from nose.plugins.skip import SkipTest
# Skip test on PY3 # Skip test on PY3
from flask.ext.admin._compat import PY2, as_unicode from flask_admin._compat import PY2, as_unicode
if not PY2: if not PY2:
raise SkipTest('Peewee is not Python 3 compatible') raise SkipTest('Peewee is not Python 3 compatible')
...@@ -10,9 +10,9 @@ import peewee ...@@ -10,9 +10,9 @@ import peewee
from wtforms import fields from wtforms import fields
from flask.ext.admin import form from flask_admin import form
from flask.ext.admin._compat import iteritems from flask_admin._compat import iteritems
from flask.ext.admin.contrib.peewee import ModelView from flask_admin.contrib.peewee import ModelView
from . import setup from . import setup
...@@ -38,7 +38,7 @@ def create_models(db): ...@@ -38,7 +38,7 @@ def create_models(db):
class Model1(BaseModel): class Model1(BaseModel):
def __init__(self, test1=None, test2=None, test3=None, test4=None, def __init__(self, test1=None, test2=None, test3=None, test4=None,
date_field=None, timeonly_field=None, date_field=None, timeonly_field=None,
datetime_field=None): datetime_field=None):
super(Model1, self).__init__() super(Model1, self).__init__()
...@@ -250,15 +250,15 @@ def test_column_editable_list(): ...@@ -250,15 +250,15 @@ def test_column_editable_list():
def test_column_filters(): def test_column_filters():
app, db, admin = setup() app, db, admin = setup()
Model1, Model2 = create_models(db) Model1, Model2 = create_models(db)
fill_db(Model1, Model2) fill_db(Model1, Model2)
# Test string filter # Test string filter
view = CustomModelView(Model1, column_filters=['test1']) view = CustomModelView(Model1, column_filters=['test1'])
admin.add_view(view) admin.add_view(view)
eq_(len(view._filters), 7) eq_(len(view._filters), 7)
eq_([(f['index'], f['operation']) for f in view._filter_groups[u'Test1']], eq_([(f['index'], f['operation']) for f in view._filter_groups[u'Test1']],
...@@ -271,38 +271,38 @@ def test_column_filters(): ...@@ -271,38 +271,38 @@ def test_column_filters():
(5, 'in list'), (5, 'in list'),
(6, 'not in list'), (6, 'not in list'),
]) ])
# Make some test clients # Make some test clients
client = app.test_client() client = app.test_client()
# string - equals # string - equals
rv = client.get('/admin/model1/?flt0_0=test1_val_1') rv = client.get('/admin/model1/?flt0_0=test1_val_1')
eq_(rv.status_code, 200) eq_(rv.status_code, 200)
data = rv.data.decode('utf-8') data = rv.data.decode('utf-8')
ok_('test2_val_1' in data) ok_('test2_val_1' in data)
ok_('test1_val_2' not in data) ok_('test1_val_2' not in data)
# string - not equal # string - not equal
rv = client.get('/admin/model1/?flt0_1=test1_val_1') rv = client.get('/admin/model1/?flt0_1=test1_val_1')
eq_(rv.status_code, 200) eq_(rv.status_code, 200)
data = rv.data.decode('utf-8') data = rv.data.decode('utf-8')
ok_('test2_val_1' not in data) ok_('test2_val_1' not in data)
ok_('test1_val_2' in data) ok_('test1_val_2' in data)
# string - contains # string - contains
rv = client.get('/admin/model1/?flt0_2=test1_val_1') rv = client.get('/admin/model1/?flt0_2=test1_val_1')
eq_(rv.status_code, 200) eq_(rv.status_code, 200)
data = rv.data.decode('utf-8') data = rv.data.decode('utf-8')
ok_('test2_val_1' in data) ok_('test2_val_1' in data)
ok_('test1_val_2' not in data) ok_('test1_val_2' not in data)
# string - not contains # string - not contains
rv = client.get('/admin/model1/?flt0_3=test1_val_1') rv = client.get('/admin/model1/?flt0_3=test1_val_1')
eq_(rv.status_code, 200) eq_(rv.status_code, 200)
data = rv.data.decode('utf-8') data = rv.data.decode('utf-8')
ok_('test2_val_1' not in data) ok_('test2_val_1' not in data)
ok_('test1_val_2' in data) ok_('test1_val_2' in data)
# string - empty # string - empty
rv = client.get('/admin/model1/?flt0_4=1') rv = client.get('/admin/model1/?flt0_4=1')
eq_(rv.status_code, 200) eq_(rv.status_code, 200)
...@@ -310,7 +310,7 @@ def test_column_filters(): ...@@ -310,7 +310,7 @@ def test_column_filters():
ok_('empty_obj' in data) ok_('empty_obj' in data)
ok_('test1_val_1' not in data) ok_('test1_val_1' not in data)
ok_('test1_val_2' not in data) ok_('test1_val_2' not in data)
# string - not empty # string - not empty
rv = client.get('/admin/model1/?flt0_4=0') rv = client.get('/admin/model1/?flt0_4=0')
eq_(rv.status_code, 200) eq_(rv.status_code, 200)
...@@ -318,7 +318,7 @@ def test_column_filters(): ...@@ -318,7 +318,7 @@ def test_column_filters():
ok_('empty_obj' not in data) ok_('empty_obj' not in data)
ok_('test1_val_1' in data) ok_('test1_val_1' in data)
ok_('test1_val_2' in data) ok_('test1_val_2' in data)
# string - in list # string - in list
rv = client.get('/admin/model1/?flt0_5=test1_val_1%2Ctest1_val_2') rv = client.get('/admin/model1/?flt0_5=test1_val_1%2Ctest1_val_2')
eq_(rv.status_code, 200) eq_(rv.status_code, 200)
...@@ -327,7 +327,7 @@ def test_column_filters(): ...@@ -327,7 +327,7 @@ def test_column_filters():
ok_('test2_val_2' in data) ok_('test2_val_2' in data)
ok_('test1_val_3' not in data) ok_('test1_val_3' not in data)
ok_('test1_val_4' not in data) ok_('test1_val_4' not in data)
# string - not in list # string - not in list
rv = client.get('/admin/model1/?flt0_6=test1_val_1%2Ctest1_val_2') rv = client.get('/admin/model1/?flt0_6=test1_val_1%2Ctest1_val_2')
eq_(rv.status_code, 200) eq_(rv.status_code, 200)
...@@ -336,11 +336,11 @@ def test_column_filters(): ...@@ -336,11 +336,11 @@ def test_column_filters():
ok_('test2_val_2' not in data) ok_('test2_val_2' not in data)
ok_('test1_val_3' in data) ok_('test1_val_3' in data)
ok_('test1_val_4' in data) ok_('test1_val_4' in data)
# Test int filter # Test int filter
view = CustomModelView(Model2, column_filters=['int_field']) view = CustomModelView(Model2, column_filters=['int_field'])
admin.add_view(view) admin.add_view(view)
eq_([(f['index'], f['operation']) for f in view._filter_groups[u'Int Field']], eq_([(f['index'], f['operation']) for f in view._filter_groups[u'Int Field']],
[ [
(0, 'equals'), (0, 'equals'),
...@@ -351,41 +351,41 @@ def test_column_filters(): ...@@ -351,41 +351,41 @@ def test_column_filters():
(5, 'in list'), (5, 'in list'),
(6, 'not in list'), (6, 'not in list'),
]) ])
# integer - equals # integer - equals
rv = client.get('/admin/model2/?flt0_0=5000') rv = client.get('/admin/model2/?flt0_0=5000')
eq_(rv.status_code, 200) eq_(rv.status_code, 200)
data = rv.data.decode('utf-8') data = rv.data.decode('utf-8')
ok_('char_field_val_3' in data) ok_('char_field_val_3' in data)
ok_('char_field_val_4' not in data) ok_('char_field_val_4' not in data)
# integer - equals - test validation # integer - equals - test validation
rv = client.get('/admin/model2/?flt0_0=badval') rv = client.get('/admin/model2/?flt0_0=badval')
eq_(rv.status_code, 200) eq_(rv.status_code, 200)
data = rv.data.decode('utf-8') data = rv.data.decode('utf-8')
ok_('Invalid Filter Value' in data) ok_('Invalid Filter Value' in data)
# integer - not equal # integer - not equal
rv = client.get('/admin/model2/?flt0_1=5000') rv = client.get('/admin/model2/?flt0_1=5000')
eq_(rv.status_code, 200) eq_(rv.status_code, 200)
data = rv.data.decode('utf-8') data = rv.data.decode('utf-8')
ok_('char_field_val_3' not in data) ok_('char_field_val_3' not in data)
ok_('char_field_val_4' in data) ok_('char_field_val_4' in data)
# integer - greater # integer - greater
rv = client.get('/admin/model2/?flt0_2=6000') rv = client.get('/admin/model2/?flt0_2=6000')
eq_(rv.status_code, 200) eq_(rv.status_code, 200)
data = rv.data.decode('utf-8') data = rv.data.decode('utf-8')
ok_('char_field_val_3' not in data) ok_('char_field_val_3' not in data)
ok_('char_field_val_4' in data) ok_('char_field_val_4' in data)
# integer - smaller # integer - smaller
rv = client.get('/admin/model2/?flt0_3=6000') rv = client.get('/admin/model2/?flt0_3=6000')
eq_(rv.status_code, 200) eq_(rv.status_code, 200)
data = rv.data.decode('utf-8') data = rv.data.decode('utf-8')
ok_('char_field_val_3' in data) ok_('char_field_val_3' in data)
ok_('char_field_val_4' not in data) ok_('char_field_val_4' not in data)
# integer - empty # integer - empty
rv = client.get('/admin/model2/?flt0_4=1') rv = client.get('/admin/model2/?flt0_4=1')
eq_(rv.status_code, 200) eq_(rv.status_code, 200)
...@@ -394,7 +394,7 @@ def test_column_filters(): ...@@ -394,7 +394,7 @@ def test_column_filters():
ok_('char_field_val_2' in data) ok_('char_field_val_2' in data)
ok_('char_field_val_3' not in data) ok_('char_field_val_3' not in data)
ok_('char_field_val_4' not in data) ok_('char_field_val_4' not in data)
# integer - not empty # integer - not empty
rv = client.get('/admin/model2/?flt0_4=0') rv = client.get('/admin/model2/?flt0_4=0')
eq_(rv.status_code, 200) eq_(rv.status_code, 200)
...@@ -403,7 +403,7 @@ def test_column_filters(): ...@@ -403,7 +403,7 @@ def test_column_filters():
ok_('char_field_val_2' not in data) ok_('char_field_val_2' not in data)
ok_('char_field_val_3' in data) ok_('char_field_val_3' in data)
ok_('char_field_val_4' in data) ok_('char_field_val_4' in data)
# integer - in list # integer - in list
rv = client.get('/admin/model2/?flt0_5=5000%2C9000') rv = client.get('/admin/model2/?flt0_5=5000%2C9000')
eq_(rv.status_code, 200) eq_(rv.status_code, 200)
...@@ -412,13 +412,13 @@ def test_column_filters(): ...@@ -412,13 +412,13 @@ def test_column_filters():
ok_('char_field_val_2' not in data) ok_('char_field_val_2' not in data)
ok_('char_field_val_3' in data) ok_('char_field_val_3' in data)
ok_('char_field_val_4' in data) ok_('char_field_val_4' in data)
# integer - in list - test validation # integer - in list - test validation
rv = client.get('/admin/model2/?flt0_5=5000%2Cbadval') rv = client.get('/admin/model2/?flt0_5=5000%2Cbadval')
eq_(rv.status_code, 200) eq_(rv.status_code, 200)
data = rv.data.decode('utf-8') data = rv.data.decode('utf-8')
ok_('Invalid Filter Value' in data) ok_('Invalid Filter Value' in data)
# integer - not in list # integer - not in list
rv = client.get('/admin/model2/?flt0_6=5000%2C9000') rv = client.get('/admin/model2/?flt0_6=5000%2C9000')
eq_(rv.status_code, 200) eq_(rv.status_code, 200)
...@@ -427,12 +427,12 @@ def test_column_filters(): ...@@ -427,12 +427,12 @@ def test_column_filters():
ok_('char_field_val_2' in data) ok_('char_field_val_2' in data)
ok_('char_field_val_3' not in data) ok_('char_field_val_3' not in data)
ok_('char_field_val_4' not in data) ok_('char_field_val_4' not in data)
# Test float filter # Test float filter
view = CustomModelView(Model2, column_filters=['float_field'], view = CustomModelView(Model2, column_filters=['float_field'],
endpoint="_float") endpoint="_float")
admin.add_view(view) admin.add_view(view)
eq_([(f['index'], f['operation']) for f in view._filter_groups[u'Float Field']], eq_([(f['index'], f['operation']) for f in view._filter_groups[u'Float Field']],
[ [
(0, 'equals'), (0, 'equals'),
...@@ -443,41 +443,41 @@ def test_column_filters(): ...@@ -443,41 +443,41 @@ def test_column_filters():
(5, 'in list'), (5, 'in list'),
(6, 'not in list'), (6, 'not in list'),
]) ])
# float - equals # float - equals
rv = client.get('/admin/_float/?flt0_0=25.9') rv = client.get('/admin/_float/?flt0_0=25.9')
eq_(rv.status_code, 200) eq_(rv.status_code, 200)
data = rv.data.decode('utf-8') data = rv.data.decode('utf-8')
ok_('char_field_val_3' in data) ok_('char_field_val_3' in data)
ok_('char_field_val_4' not in data) ok_('char_field_val_4' not in data)
# float - equals - test validation # float - equals - test validation
rv = client.get('/admin/_float/?flt0_0=badval') rv = client.get('/admin/_float/?flt0_0=badval')
eq_(rv.status_code, 200) eq_(rv.status_code, 200)
data = rv.data.decode('utf-8') data = rv.data.decode('utf-8')
ok_('Invalid Filter Value' in data) ok_('Invalid Filter Value' in data)
# float - not equal # float - not equal
rv = client.get('/admin/_float/?flt0_1=25.9') rv = client.get('/admin/_float/?flt0_1=25.9')
eq_(rv.status_code, 200) eq_(rv.status_code, 200)
data = rv.data.decode('utf-8') data = rv.data.decode('utf-8')
ok_('char_field_val_3' not in data) ok_('char_field_val_3' not in data)
ok_('char_field_val_4' in data) ok_('char_field_val_4' in data)
# float - greater # float - greater
rv = client.get('/admin/_float/?flt0_2=60.5') rv = client.get('/admin/_float/?flt0_2=60.5')
eq_(rv.status_code, 200) eq_(rv.status_code, 200)
data = rv.data.decode('utf-8') data = rv.data.decode('utf-8')
ok_('char_field_val_3' not in data) ok_('char_field_val_3' not in data)
ok_('char_field_val_4' in data) ok_('char_field_val_4' in data)
# float - smaller # float - smaller
rv = client.get('/admin/_float/?flt0_3=60.5') rv = client.get('/admin/_float/?flt0_3=60.5')
eq_(rv.status_code, 200) eq_(rv.status_code, 200)
data = rv.data.decode('utf-8') data = rv.data.decode('utf-8')
ok_('char_field_val_3' in data) ok_('char_field_val_3' in data)
ok_('char_field_val_4' not in data) ok_('char_field_val_4' not in data)
# float - empty # float - empty
rv = client.get('/admin/_float/?flt0_4=1') rv = client.get('/admin/_float/?flt0_4=1')
eq_(rv.status_code, 200) eq_(rv.status_code, 200)
...@@ -486,7 +486,7 @@ def test_column_filters(): ...@@ -486,7 +486,7 @@ def test_column_filters():
ok_('char_field_val_2' in data) ok_('char_field_val_2' in data)
ok_('char_field_val_3' not in data) ok_('char_field_val_3' not in data)
ok_('char_field_val_4' not in data) ok_('char_field_val_4' not in data)
# float - not empty # float - not empty
rv = client.get('/admin/_float/?flt0_4=0') rv = client.get('/admin/_float/?flt0_4=0')
eq_(rv.status_code, 200) eq_(rv.status_code, 200)
...@@ -495,7 +495,7 @@ def test_column_filters(): ...@@ -495,7 +495,7 @@ def test_column_filters():
ok_('char_field_val_2' not in data) ok_('char_field_val_2' not in data)
ok_('char_field_val_3' in data) ok_('char_field_val_3' in data)
ok_('char_field_val_4' in data) ok_('char_field_val_4' in data)
# float - in list # float - in list
rv = client.get('/admin/_float/?flt0_5=25.9%2C75.5') rv = client.get('/admin/_float/?flt0_5=25.9%2C75.5')
eq_(rv.status_code, 200) eq_(rv.status_code, 200)
...@@ -504,13 +504,13 @@ def test_column_filters(): ...@@ -504,13 +504,13 @@ def test_column_filters():
ok_('char_field_val_2' not in data) ok_('char_field_val_2' not in data)
ok_('char_field_val_3' in data) ok_('char_field_val_3' in data)
ok_('char_field_val_4' in data) ok_('char_field_val_4' in data)
# float - in list - test validation # float - in list - test validation
rv = client.get('/admin/_float/?flt0_5=25.9%2Cbadval') rv = client.get('/admin/_float/?flt0_5=25.9%2Cbadval')
eq_(rv.status_code, 200) eq_(rv.status_code, 200)
data = rv.data.decode('utf-8') data = rv.data.decode('utf-8')
ok_('Invalid Filter Value' in data) ok_('Invalid Filter Value' in data)
# float - not in list # float - not in list
rv = client.get('/admin/_float/?flt0_6=25.9%2C75.5') rv = client.get('/admin/_float/?flt0_6=25.9%2C75.5')
eq_(rv.status_code, 200) eq_(rv.status_code, 200)
...@@ -519,10 +519,10 @@ def test_column_filters(): ...@@ -519,10 +519,10 @@ def test_column_filters():
ok_('char_field_val_2' in data) ok_('char_field_val_2' in data)
ok_('char_field_val_3' not in data) ok_('char_field_val_3' not in data)
ok_('char_field_val_4' not in data) ok_('char_field_val_4' not in data)
# Test date, time, and datetime filters # Test date, time, and datetime filters
view = CustomModelView(Model1, view = CustomModelView(Model1,
column_filters=['date_field', 'datetime_field', 'timeonly_field'], column_filters=['date_field', 'datetime_field', 'timeonly_field'],
endpoint="_datetime") endpoint="_datetime")
admin.add_view(view) admin.add_view(view)
...@@ -536,7 +536,7 @@ def test_column_filters(): ...@@ -536,7 +536,7 @@ def test_column_filters():
(5, 'not between'), (5, 'not between'),
(6, 'empty'), (6, 'empty'),
]) ])
eq_([(f['index'], f['operation']) for f in view._filter_groups[u'Datetime Field']], eq_([(f['index'], f['operation']) for f in view._filter_groups[u'Datetime Field']],
[ [
(7, 'equals'), (7, 'equals'),
...@@ -547,7 +547,7 @@ def test_column_filters(): ...@@ -547,7 +547,7 @@ def test_column_filters():
(12, 'not between'), (12, 'not between'),
(13, 'empty'), (13, 'empty'),
]) ])
eq_([(f['index'], f['operation']) for f in view._filter_groups[u'Timeonly Field']], eq_([(f['index'], f['operation']) for f in view._filter_groups[u'Timeonly Field']],
[ [
(14, 'equals'), (14, 'equals'),
...@@ -558,42 +558,42 @@ def test_column_filters(): ...@@ -558,42 +558,42 @@ def test_column_filters():
(19, 'not between'), (19, 'not between'),
(20, 'empty'), (20, 'empty'),
]) ])
# date - equals # date - equals
rv = client.get('/admin/_datetime/?flt0_0=2014-11-17') rv = client.get('/admin/_datetime/?flt0_0=2014-11-17')
eq_(rv.status_code, 200) eq_(rv.status_code, 200)
data = rv.data.decode('utf-8') data = rv.data.decode('utf-8')
ok_('date_obj1' in data) ok_('date_obj1' in data)
ok_('date_obj2' not in data) ok_('date_obj2' not in data)
# date - not equal # date - not equal
rv = client.get('/admin/_datetime/?flt0_1=2014-11-17') rv = client.get('/admin/_datetime/?flt0_1=2014-11-17')
eq_(rv.status_code, 200) eq_(rv.status_code, 200)
data = rv.data.decode('utf-8') data = rv.data.decode('utf-8')
ok_('date_obj1' not in data) ok_('date_obj1' not in data)
ok_('date_obj2' in data) ok_('date_obj2' in data)
# date - greater # date - greater
rv = client.get('/admin/_datetime/?flt0_2=2014-11-16') rv = client.get('/admin/_datetime/?flt0_2=2014-11-16')
eq_(rv.status_code, 200) eq_(rv.status_code, 200)
data = rv.data.decode('utf-8') data = rv.data.decode('utf-8')
ok_('date_obj1' in data) ok_('date_obj1' in data)
ok_('date_obj2' not in data) ok_('date_obj2' not in data)
# date - smaller # date - smaller
rv = client.get('/admin/_datetime/?flt0_3=2014-11-16') rv = client.get('/admin/_datetime/?flt0_3=2014-11-16')
eq_(rv.status_code, 200) eq_(rv.status_code, 200)
data = rv.data.decode('utf-8') data = rv.data.decode('utf-8')
ok_('date_obj1' not in data) ok_('date_obj1' not in data)
ok_('date_obj2' in data) ok_('date_obj2' in data)
# date - between # date - between
rv = client.get('/admin/_datetime/?flt0_4=2014-11-13+to+2014-11-20') rv = client.get('/admin/_datetime/?flt0_4=2014-11-13+to+2014-11-20')
eq_(rv.status_code, 200) eq_(rv.status_code, 200)
data = rv.data.decode('utf-8') data = rv.data.decode('utf-8')
ok_('date_obj1' in data) ok_('date_obj1' in data)
ok_('date_obj2' not in data) ok_('date_obj2' not in data)
# date - not between # date - not between
rv = client.get('/admin/_datetime/?flt0_5=2014-11-13+to+2014-11-20') rv = client.get('/admin/_datetime/?flt0_5=2014-11-13+to+2014-11-20')
eq_(rv.status_code, 200) eq_(rv.status_code, 200)
...@@ -608,7 +608,7 @@ def test_column_filters(): ...@@ -608,7 +608,7 @@ def test_column_filters():
ok_('test1_val_1' in data) ok_('test1_val_1' in data)
ok_('date_obj1' not in data) ok_('date_obj1' not in data)
ok_('date_obj2' not in data) ok_('date_obj2' not in data)
# date - empty # date - empty
rv = client.get('/admin/_datetime/?flt0_6=0') rv = client.get('/admin/_datetime/?flt0_6=0')
eq_(rv.status_code, 200) eq_(rv.status_code, 200)
...@@ -616,49 +616,49 @@ def test_column_filters(): ...@@ -616,49 +616,49 @@ def test_column_filters():
ok_('test1_val_1' not in data) ok_('test1_val_1' not in data)
ok_('date_obj1' in data) ok_('date_obj1' in data)
ok_('date_obj2' in data) ok_('date_obj2' in data)
# datetime - equals # datetime - equals
rv = client.get('/admin/_datetime/?flt0_7=2014-04-03+01%3A09%3A00') rv = client.get('/admin/_datetime/?flt0_7=2014-04-03+01%3A09%3A00')
eq_(rv.status_code, 200) eq_(rv.status_code, 200)
data = rv.data.decode('utf-8') data = rv.data.decode('utf-8')
ok_('datetime_obj1' in data) ok_('datetime_obj1' in data)
ok_('datetime_obj2' not in data) ok_('datetime_obj2' not in data)
# datetime - not equal # datetime - not equal
rv = client.get('/admin/_datetime/?flt0_8=2014-04-03+01%3A09%3A00') rv = client.get('/admin/_datetime/?flt0_8=2014-04-03+01%3A09%3A00')
eq_(rv.status_code, 200) eq_(rv.status_code, 200)
data = rv.data.decode('utf-8') data = rv.data.decode('utf-8')
ok_('datetime_obj1' not in data) ok_('datetime_obj1' not in data)
ok_('datetime_obj2' in data) ok_('datetime_obj2' in data)
# datetime - greater # datetime - greater
rv = client.get('/admin/_datetime/?flt0_9=2014-04-03+01%3A08%3A00') rv = client.get('/admin/_datetime/?flt0_9=2014-04-03+01%3A08%3A00')
eq_(rv.status_code, 200) eq_(rv.status_code, 200)
data = rv.data.decode('utf-8') data = rv.data.decode('utf-8')
ok_('datetime_obj1' in data) ok_('datetime_obj1' in data)
ok_('datetime_obj2' not in data) ok_('datetime_obj2' not in data)
# datetime - smaller # datetime - smaller
rv = client.get('/admin/_datetime/?flt0_10=2014-04-03+01%3A08%3A00') rv = client.get('/admin/_datetime/?flt0_10=2014-04-03+01%3A08%3A00')
eq_(rv.status_code, 200) eq_(rv.status_code, 200)
data = rv.data.decode('utf-8') data = rv.data.decode('utf-8')
ok_('datetime_obj1' not in data) ok_('datetime_obj1' not in data)
ok_('datetime_obj2' in data) ok_('datetime_obj2' in data)
# datetime - between # datetime - between
rv = client.get('/admin/_datetime/?flt0_11=2014-04-02+00%3A00%3A00+to+2014-11-20+23%3A59%3A59') rv = client.get('/admin/_datetime/?flt0_11=2014-04-02+00%3A00%3A00+to+2014-11-20+23%3A59%3A59')
eq_(rv.status_code, 200) eq_(rv.status_code, 200)
data = rv.data.decode('utf-8') data = rv.data.decode('utf-8')
ok_('datetime_obj1' in data) ok_('datetime_obj1' in data)
ok_('datetime_obj2' not in data) ok_('datetime_obj2' not in data)
# datetime - not between # datetime - not between
rv = client.get('/admin/_datetime/?flt0_12=2014-04-02+00%3A00%3A00+to+2014-11-20+23%3A59%3A59') rv = client.get('/admin/_datetime/?flt0_12=2014-04-02+00%3A00%3A00+to+2014-11-20+23%3A59%3A59')
eq_(rv.status_code, 200) eq_(rv.status_code, 200)
data = rv.data.decode('utf-8') data = rv.data.decode('utf-8')
ok_('datetime_obj1' not in data) ok_('datetime_obj1' not in data)
ok_('datetime_obj2' in data) ok_('datetime_obj2' in data)
# datetime - empty # datetime - empty
rv = client.get('/admin/_datetime/?flt0_13=1') rv = client.get('/admin/_datetime/?flt0_13=1')
eq_(rv.status_code, 200) eq_(rv.status_code, 200)
...@@ -666,7 +666,7 @@ def test_column_filters(): ...@@ -666,7 +666,7 @@ def test_column_filters():
ok_('test1_val_1' in data) ok_('test1_val_1' in data)
ok_('datetime_obj1' not in data) ok_('datetime_obj1' not in data)
ok_('datetime_obj2' not in data) ok_('datetime_obj2' not in data)
# datetime - not empty # datetime - not empty
rv = client.get('/admin/_datetime/?flt0_13=0') rv = client.get('/admin/_datetime/?flt0_13=0')
eq_(rv.status_code, 200) eq_(rv.status_code, 200)
...@@ -674,49 +674,49 @@ def test_column_filters(): ...@@ -674,49 +674,49 @@ def test_column_filters():
ok_('test1_val_1' not in data) ok_('test1_val_1' not in data)
ok_('datetime_obj1' in data) ok_('datetime_obj1' in data)
ok_('datetime_obj2' in data) ok_('datetime_obj2' in data)
# time - equals # time - equals
rv = client.get('/admin/_datetime/?flt0_14=11%3A10%3A09') rv = client.get('/admin/_datetime/?flt0_14=11%3A10%3A09')
eq_(rv.status_code, 200) eq_(rv.status_code, 200)
data = rv.data.decode('utf-8') data = rv.data.decode('utf-8')
ok_('timeonly_obj1' in data) ok_('timeonly_obj1' in data)
ok_('timeonly_obj2' not in data) ok_('timeonly_obj2' not in data)
# time - not equal # time - not equal
rv = client.get('/admin/_datetime/?flt0_15=11%3A10%3A09') rv = client.get('/admin/_datetime/?flt0_15=11%3A10%3A09')
eq_(rv.status_code, 200) eq_(rv.status_code, 200)
data = rv.data.decode('utf-8') data = rv.data.decode('utf-8')
ok_('timeonly_obj1' not in data) ok_('timeonly_obj1' not in data)
ok_('timeonly_obj2' in data) ok_('timeonly_obj2' in data)
# time - greater # time - greater
rv = client.get('/admin/_datetime/?flt0_16=11%3A09%3A09') rv = client.get('/admin/_datetime/?flt0_16=11%3A09%3A09')
eq_(rv.status_code, 200) eq_(rv.status_code, 200)
data = rv.data.decode('utf-8') data = rv.data.decode('utf-8')
ok_('timeonly_obj1' in data) ok_('timeonly_obj1' in data)
ok_('timeonly_obj2' not in data) ok_('timeonly_obj2' not in data)
# time - smaller # time - smaller
rv = client.get('/admin/_datetime/?flt0_17=11%3A09%3A09') rv = client.get('/admin/_datetime/?flt0_17=11%3A09%3A09')
eq_(rv.status_code, 200) eq_(rv.status_code, 200)
data = rv.data.decode('utf-8') data = rv.data.decode('utf-8')
ok_('timeonly_obj1' not in data) ok_('timeonly_obj1' not in data)
ok_('timeonly_obj2' in data) ok_('timeonly_obj2' in data)
# time - between # time - between
rv = client.get('/admin/_datetime/?flt0_18=10%3A40%3A00+to+11%3A50%3A59') rv = client.get('/admin/_datetime/?flt0_18=10%3A40%3A00+to+11%3A50%3A59')
eq_(rv.status_code, 200) eq_(rv.status_code, 200)
data = rv.data.decode('utf-8') data = rv.data.decode('utf-8')
ok_('timeonly_obj1' in data) ok_('timeonly_obj1' in data)
ok_('timeonly_obj2' not in data) ok_('timeonly_obj2' not in data)
# time - not between # time - not between
rv = client.get('/admin/_datetime/?flt0_19=10%3A40%3A00+to+11%3A50%3A59') rv = client.get('/admin/_datetime/?flt0_19=10%3A40%3A00+to+11%3A50%3A59')
eq_(rv.status_code, 200) eq_(rv.status_code, 200)
data = rv.data.decode('utf-8') data = rv.data.decode('utf-8')
ok_('timeonly_obj1' not in data) ok_('timeonly_obj1' not in data)
ok_('timeonly_obj2' in data) ok_('timeonly_obj2' in data)
# time - empty # time - empty
rv = client.get('/admin/_datetime/?flt0_20=1') rv = client.get('/admin/_datetime/?flt0_20=1')
eq_(rv.status_code, 200) eq_(rv.status_code, 200)
...@@ -724,7 +724,7 @@ def test_column_filters(): ...@@ -724,7 +724,7 @@ def test_column_filters():
ok_('test1_val_1' in data) ok_('test1_val_1' in data)
ok_('timeonly_obj1' not in data) ok_('timeonly_obj1' not in data)
ok_('timeonly_obj2' not in data) ok_('timeonly_obj2' not in data)
# time - not empty # time - not empty
rv = client.get('/admin/_datetime/?flt0_20=0') rv = client.get('/admin/_datetime/?flt0_20=0')
eq_(rv.status_code, 200) eq_(rv.status_code, 200)
...@@ -732,7 +732,7 @@ def test_column_filters(): ...@@ -732,7 +732,7 @@ def test_column_filters():
ok_('test1_val_1' not in data) ok_('test1_val_1' not in data)
ok_('timeonly_obj1' in data) ok_('timeonly_obj1' in data)
ok_('timeonly_obj2' in data) ok_('timeonly_obj2' in data)
def test_default_sort(): def test_default_sort():
app, db, admin = setup() app, db, admin = setup()
M1, _ = create_models(db) M1, _ = create_models(db)
...@@ -875,4 +875,4 @@ def test_ajax_fk(): ...@@ -875,4 +875,4 @@ def test_ajax_fk():
ok_(mdl is not None) ok_(mdl is not None)
ok_(mdl.model1 is not None) ok_(mdl.model1 is not None)
eq_(mdl.model1.id, model.id) eq_(mdl.model1.id, model.id)
eq_(mdl.model1.test1, u'first') eq_(mdl.model1.test1, u'first')
\ No newline at end of file
import pymongo import pymongo
from flask import Flask from flask import Flask
from flask.ext.admin import Admin from flask_admin import Admin
def setup(): def setup():
......
...@@ -2,7 +2,7 @@ from nose.tools import eq_, ok_ ...@@ -2,7 +2,7 @@ from nose.tools import eq_, ok_
from wtforms import form, fields from wtforms import form, fields
from flask.ext.admin.contrib.pymongo import ModelView from flask_admin.contrib.pymongo import ModelView
from . import setup from . import setup
......
from flask import Flask from flask import Flask
from flask.ext.admin import Admin from flask_admin import Admin
from flask.ext.sqlalchemy import SQLAlchemy from flask_sqlalchemy import SQLAlchemy
def setup(): def setup():
......
...@@ -2,11 +2,11 @@ from nose.tools import eq_, ok_, raises ...@@ -2,11 +2,11 @@ from nose.tools import eq_, ok_, raises
from wtforms import fields from wtforms import fields
from flask.ext.admin import form from flask_admin import form
from flask.ext.admin._compat import as_unicode from flask_admin._compat import as_unicode
from flask.ext.admin._compat import iteritems from flask_admin._compat import iteritems
from flask.ext.admin.contrib.sqla import ModelView, filters from flask_admin.contrib.sqla import ModelView, filters
from flask.ext.babelex import Babel from flask_babel import Babel
from . import setup from . import setup
...@@ -25,7 +25,7 @@ class CustomModelView(ModelView): ...@@ -25,7 +25,7 @@ class CustomModelView(ModelView):
def create_models(db): def create_models(db):
class Model1(db.Model): class Model1(db.Model):
def __init__(self, test1=None, test2=None, test3=None, test4=None, def __init__(self, test1=None, test2=None, test3=None, test4=None,
bool_field=False, date_field=None, time_field=None, bool_field=False, date_field=None, time_field=None,
datetime_field=None, enum_field=None): datetime_field=None, enum_field=None):
self.test1 = test1 self.test1 = test1
...@@ -45,11 +45,11 @@ def create_models(db): ...@@ -45,11 +45,11 @@ def create_models(db):
test4 = db.Column(db.UnicodeText) test4 = db.Column(db.UnicodeText)
bool_field = db.Column(db.Boolean) bool_field = db.Column(db.Boolean)
enum_field = db.Column(db.Enum('model1_v1', 'model1_v2'), nullable=True) enum_field = db.Column(db.Enum('model1_v1', 'model1_v2'), nullable=True)
date_field = db.Column(db.Date) date_field = db.Column(db.Date)
time_field = db.Column(db.Time) time_field = db.Column(db.Time)
datetime_field = db.Column(db.DateTime) datetime_field = db.Column(db.DateTime)
def __unicode__(self): def __unicode__(self):
return self.test1 return self.test1
...@@ -172,7 +172,7 @@ def test_model(): ...@@ -172,7 +172,7 @@ def test_model():
url = '/admin/model1/edit/?id=%s' % model.id url = '/admin/model1/edit/?id=%s' % model.id
rv = client.get(url) rv = client.get(url)
eq_(rv.status_code, 200) eq_(rv.status_code, 200)
# verify that midnight does not show as blank # verify that midnight does not show as blank
ok_(u'00:00:00' in rv.data.decode('utf-8')) ok_(u'00:00:00' in rv.data.decode('utf-8'))
...@@ -274,7 +274,7 @@ def test_column_searchable_list(): ...@@ -274,7 +274,7 @@ def test_column_searchable_list():
data = rv.data.decode('utf-8') data = rv.data.decode('utf-8')
ok_('model1-test' in data) ok_('model1-test' in data)
ok_('model2-test' not in data) ok_('model2-test' not in data)
rv = client.get('/admin/model2/?search=9000') rv = client.get('/admin/model2/?search=9000')
data = rv.data.decode('utf-8') data = rv.data.decode('utf-8')
ok_('model1-test' not in data) ok_('model1-test' not in data)
...@@ -502,7 +502,7 @@ def test_column_filters(): ...@@ -502,7 +502,7 @@ def test_column_filters():
(0, 'equals'), (0, 'equals'),
(1, 'not equal'), (1, 'not equal'),
]) ])
# Test column_labels on filters # Test column_labels on filters
view = CustomModelView(Model2, db.session, view = CustomModelView(Model2, db.session,
column_filters=['model1.bool_field', 'string_field'], column_filters=['model1.bool_field', 'string_field'],
...@@ -510,9 +510,9 @@ def test_column_filters(): ...@@ -510,9 +510,9 @@ def test_column_filters():
'model1.bool_field': 'Test Filter #1', 'model1.bool_field': 'Test Filter #1',
'string_field': 'Test Filter #2', 'string_field': 'Test Filter #2',
}) })
eq_(list(view._filter_groups.keys()), [u'Test Filter #1', u'Test Filter #2']) eq_(list(view._filter_groups.keys()), [u'Test Filter #1', u'Test Filter #2'])
fill_db(db, Model1, Model2) fill_db(db, Model1, Model2)
client = app.test_client() client = app.test_client()
...@@ -553,28 +553,28 @@ def test_column_filters(): ...@@ -553,28 +553,28 @@ def test_column_filters():
data = rv.data.decode('utf-8') data = rv.data.decode('utf-8')
ok_('test2_val_1' in data) ok_('test2_val_1' in data)
ok_('test1_val_2' not in data) ok_('test1_val_2' not in data)
# string - not equal # string - not equal
rv = client.get('/admin/_strings/?flt0_1=test1_val_1') rv = client.get('/admin/_strings/?flt0_1=test1_val_1')
eq_(rv.status_code, 200) eq_(rv.status_code, 200)
data = rv.data.decode('utf-8') data = rv.data.decode('utf-8')
ok_('test2_val_1' not in data) ok_('test2_val_1' not in data)
ok_('test1_val_2' in data) ok_('test1_val_2' in data)
# string - contains # string - contains
rv = client.get('/admin/_strings/?flt0_2=test1_val_1') rv = client.get('/admin/_strings/?flt0_2=test1_val_1')
eq_(rv.status_code, 200) eq_(rv.status_code, 200)
data = rv.data.decode('utf-8') data = rv.data.decode('utf-8')
ok_('test2_val_1' in data) ok_('test2_val_1' in data)
ok_('test1_val_2' not in data) ok_('test1_val_2' not in data)
# string - not contains # string - not contains
rv = client.get('/admin/_strings/?flt0_3=test1_val_1') rv = client.get('/admin/_strings/?flt0_3=test1_val_1')
eq_(rv.status_code, 200) eq_(rv.status_code, 200)
data = rv.data.decode('utf-8') data = rv.data.decode('utf-8')
ok_('test2_val_1' not in data) ok_('test2_val_1' not in data)
ok_('test1_val_2' in data) ok_('test1_val_2' in data)
# string - empty # string - empty
rv = client.get('/admin/_strings/?flt0_4=1') rv = client.get('/admin/_strings/?flt0_4=1')
eq_(rv.status_code, 200) eq_(rv.status_code, 200)
...@@ -582,7 +582,7 @@ def test_column_filters(): ...@@ -582,7 +582,7 @@ def test_column_filters():
ok_('empty_obj' in data) ok_('empty_obj' in data)
ok_('test1_val_1' not in data) ok_('test1_val_1' not in data)
ok_('test1_val_2' not in data) ok_('test1_val_2' not in data)
# string - not empty # string - not empty
rv = client.get('/admin/_strings/?flt0_4=0') rv = client.get('/admin/_strings/?flt0_4=0')
eq_(rv.status_code, 200) eq_(rv.status_code, 200)
...@@ -590,7 +590,7 @@ def test_column_filters(): ...@@ -590,7 +590,7 @@ def test_column_filters():
ok_('empty_obj' not in data) ok_('empty_obj' not in data)
ok_('test1_val_1' in data) ok_('test1_val_1' in data)
ok_('test1_val_2' in data) ok_('test1_val_2' in data)
# string - in list # string - in list
rv = client.get('/admin/_strings/?flt0_5=test1_val_1%2Ctest1_val_2') rv = client.get('/admin/_strings/?flt0_5=test1_val_1%2Ctest1_val_2')
eq_(rv.status_code, 200) eq_(rv.status_code, 200)
...@@ -599,7 +599,7 @@ def test_column_filters(): ...@@ -599,7 +599,7 @@ def test_column_filters():
ok_('test2_val_2' in data) ok_('test2_val_2' in data)
ok_('test1_val_3' not in data) ok_('test1_val_3' not in data)
ok_('test1_val_4' not in data) ok_('test1_val_4' not in data)
# string - not in list # string - not in list
rv = client.get('/admin/_strings/?flt0_6=test1_val_1%2Ctest1_val_2') rv = client.get('/admin/_strings/?flt0_6=test1_val_1%2Ctest1_val_2')
eq_(rv.status_code, 200) eq_(rv.status_code, 200)
...@@ -608,12 +608,12 @@ def test_column_filters(): ...@@ -608,12 +608,12 @@ def test_column_filters():
ok_('test2_val_2' not in data) ok_('test2_val_2' not in data)
ok_('test1_val_3' in data) ok_('test1_val_3' in data)
ok_('test1_val_4' in data) ok_('test1_val_4' in data)
# Test integer filter # Test integer filter
view = CustomModelView(Model2, db.session, view = CustomModelView(Model2, db.session,
column_filters=['int_field']) column_filters=['int_field'])
admin.add_view(view) admin.add_view(view)
eq_([(f['index'], f['operation']) for f in view._filter_groups[u'Int Field']], eq_([(f['index'], f['operation']) for f in view._filter_groups[u'Int Field']],
[ [
(0, 'equals'), (0, 'equals'),
...@@ -631,34 +631,34 @@ def test_column_filters(): ...@@ -631,34 +631,34 @@ def test_column_filters():
data = rv.data.decode('utf-8') data = rv.data.decode('utf-8')
ok_('test2_val_3' in data) ok_('test2_val_3' in data)
ok_('test2_val_4' not in data) ok_('test2_val_4' not in data)
# integer - equals - test validation # integer - equals - test validation
rv = client.get('/admin/model2/?flt0_0=badval') rv = client.get('/admin/model2/?flt0_0=badval')
eq_(rv.status_code, 200) eq_(rv.status_code, 200)
data = rv.data.decode('utf-8') data = rv.data.decode('utf-8')
ok_('Invalid Filter Value' in data) ok_('Invalid Filter Value' in data)
# integer - not equal # integer - not equal
rv = client.get('/admin/model2/?flt0_1=5000') rv = client.get('/admin/model2/?flt0_1=5000')
eq_(rv.status_code, 200) eq_(rv.status_code, 200)
data = rv.data.decode('utf-8') data = rv.data.decode('utf-8')
ok_('test2_val_3' not in data) ok_('test2_val_3' not in data)
ok_('test2_val_4' in data) ok_('test2_val_4' in data)
# integer - greater # integer - greater
rv = client.get('/admin/model2/?flt0_2=6000') rv = client.get('/admin/model2/?flt0_2=6000')
eq_(rv.status_code, 200) eq_(rv.status_code, 200)
data = rv.data.decode('utf-8') data = rv.data.decode('utf-8')
ok_('test2_val_3' not in data) ok_('test2_val_3' not in data)
ok_('test2_val_4' in data) ok_('test2_val_4' in data)
# integer - smaller # integer - smaller
rv = client.get('/admin/model2/?flt0_3=6000') rv = client.get('/admin/model2/?flt0_3=6000')
eq_(rv.status_code, 200) eq_(rv.status_code, 200)
data = rv.data.decode('utf-8') data = rv.data.decode('utf-8')
ok_('test2_val_3' in data) ok_('test2_val_3' in data)
ok_('test2_val_4' not in data) ok_('test2_val_4' not in data)
# integer - empty # integer - empty
rv = client.get('/admin/model2/?flt0_4=1') rv = client.get('/admin/model2/?flt0_4=1')
eq_(rv.status_code, 200) eq_(rv.status_code, 200)
...@@ -667,7 +667,7 @@ def test_column_filters(): ...@@ -667,7 +667,7 @@ def test_column_filters():
ok_('test2_val_2' in data) ok_('test2_val_2' in data)
ok_('test2_val_3' not in data) ok_('test2_val_3' not in data)
ok_('test2_val_4' not in data) ok_('test2_val_4' not in data)
# integer - not empty # integer - not empty
rv = client.get('/admin/model2/?flt0_4=0') rv = client.get('/admin/model2/?flt0_4=0')
eq_(rv.status_code, 200) eq_(rv.status_code, 200)
...@@ -676,7 +676,7 @@ def test_column_filters(): ...@@ -676,7 +676,7 @@ def test_column_filters():
ok_('test2_val_2' not in data) ok_('test2_val_2' not in data)
ok_('test2_val_3' in data) ok_('test2_val_3' in data)
ok_('test2_val_4' in data) ok_('test2_val_4' in data)
# integer - in list # integer - in list
rv = client.get('/admin/model2/?flt0_5=5000%2C9000') rv = client.get('/admin/model2/?flt0_5=5000%2C9000')
eq_(rv.status_code, 200) eq_(rv.status_code, 200)
...@@ -685,13 +685,13 @@ def test_column_filters(): ...@@ -685,13 +685,13 @@ def test_column_filters():
ok_('test2_val_2' not in data) ok_('test2_val_2' not in data)
ok_('test2_val_3' in data) ok_('test2_val_3' in data)
ok_('test2_val_4' in data) ok_('test2_val_4' in data)
# integer - in list - test validation # integer - in list - test validation
rv = client.get('/admin/model2/?flt0_5=5000%2Cbadval') rv = client.get('/admin/model2/?flt0_5=5000%2Cbadval')
eq_(rv.status_code, 200) eq_(rv.status_code, 200)
data = rv.data.decode('utf-8') data = rv.data.decode('utf-8')
ok_('Invalid Filter Value' in data) ok_('Invalid Filter Value' in data)
# integer - not in list # integer - not in list
rv = client.get('/admin/model2/?flt0_6=5000%2C9000') rv = client.get('/admin/model2/?flt0_6=5000%2C9000')
eq_(rv.status_code, 200) eq_(rv.status_code, 200)
...@@ -699,13 +699,13 @@ def test_column_filters(): ...@@ -699,13 +699,13 @@ def test_column_filters():
ok_('test2_val_1' in data) ok_('test2_val_1' in data)
ok_('test2_val_2' in data) ok_('test2_val_2' in data)
ok_('test2_val_3' not in data) ok_('test2_val_3' not in data)
ok_('test2_val_4' not in data) ok_('test2_val_4' not in data)
# Test float filter # Test float filter
view = CustomModelView(Model2, db.session, column_filters=['float_field'], view = CustomModelView(Model2, db.session, column_filters=['float_field'],
endpoint="_float") endpoint="_float")
admin.add_view(view) admin.add_view(view)
eq_([(f['index'], f['operation']) for f in view._filter_groups[u'Float Field']], eq_([(f['index'], f['operation']) for f in view._filter_groups[u'Float Field']],
[ [
(0, 'equals'), (0, 'equals'),
...@@ -716,41 +716,41 @@ def test_column_filters(): ...@@ -716,41 +716,41 @@ def test_column_filters():
(5, 'in list'), (5, 'in list'),
(6, 'not in list'), (6, 'not in list'),
]) ])
# float - equals # float - equals
rv = client.get('/admin/_float/?flt0_0=25.9') rv = client.get('/admin/_float/?flt0_0=25.9')
eq_(rv.status_code, 200) eq_(rv.status_code, 200)
data = rv.data.decode('utf-8') data = rv.data.decode('utf-8')
ok_('test2_val_3' in data) ok_('test2_val_3' in data)
ok_('test2_val_4' not in data) ok_('test2_val_4' not in data)
# float - equals - test validation # float - equals - test validation
rv = client.get('/admin/_float/?flt0_0=badval') rv = client.get('/admin/_float/?flt0_0=badval')
eq_(rv.status_code, 200) eq_(rv.status_code, 200)
data = rv.data.decode('utf-8') data = rv.data.decode('utf-8')
ok_('Invalid Filter Value' in data) ok_('Invalid Filter Value' in data)
# float - not equal # float - not equal
rv = client.get('/admin/_float/?flt0_1=25.9') rv = client.get('/admin/_float/?flt0_1=25.9')
eq_(rv.status_code, 200) eq_(rv.status_code, 200)
data = rv.data.decode('utf-8') data = rv.data.decode('utf-8')
ok_('test2_val_3' not in data) ok_('test2_val_3' not in data)
ok_('test2_val_4' in data) ok_('test2_val_4' in data)
# float - greater # float - greater
rv = client.get('/admin/_float/?flt0_2=60.5') rv = client.get('/admin/_float/?flt0_2=60.5')
eq_(rv.status_code, 200) eq_(rv.status_code, 200)
data = rv.data.decode('utf-8') data = rv.data.decode('utf-8')
ok_('test2_val_3' not in data) ok_('test2_val_3' not in data)
ok_('test2_val_4' in data) ok_('test2_val_4' in data)
# float - smaller # float - smaller
rv = client.get('/admin/_float/?flt0_3=60.5') rv = client.get('/admin/_float/?flt0_3=60.5')
eq_(rv.status_code, 200) eq_(rv.status_code, 200)
data = rv.data.decode('utf-8') data = rv.data.decode('utf-8')
ok_('test2_val_3' in data) ok_('test2_val_3' in data)
ok_('test2_val_4' not in data) ok_('test2_val_4' not in data)
# float - empty # float - empty
rv = client.get('/admin/_float/?flt0_4=1') rv = client.get('/admin/_float/?flt0_4=1')
eq_(rv.status_code, 200) eq_(rv.status_code, 200)
...@@ -759,7 +759,7 @@ def test_column_filters(): ...@@ -759,7 +759,7 @@ def test_column_filters():
ok_('test2_val_2' in data) ok_('test2_val_2' in data)
ok_('test2_val_3' not in data) ok_('test2_val_3' not in data)
ok_('test2_val_4' not in data) ok_('test2_val_4' not in data)
# float - not empty # float - not empty
rv = client.get('/admin/_float/?flt0_4=0') rv = client.get('/admin/_float/?flt0_4=0')
eq_(rv.status_code, 200) eq_(rv.status_code, 200)
...@@ -768,7 +768,7 @@ def test_column_filters(): ...@@ -768,7 +768,7 @@ def test_column_filters():
ok_('test2_val_2' not in data) ok_('test2_val_2' not in data)
ok_('test2_val_3' in data) ok_('test2_val_3' in data)
ok_('test2_val_4' in data) ok_('test2_val_4' in data)
# float - in list # float - in list
rv = client.get('/admin/_float/?flt0_5=25.9%2C75.5') rv = client.get('/admin/_float/?flt0_5=25.9%2C75.5')
eq_(rv.status_code, 200) eq_(rv.status_code, 200)
...@@ -777,13 +777,13 @@ def test_column_filters(): ...@@ -777,13 +777,13 @@ def test_column_filters():
ok_('test2_val_2' not in data) ok_('test2_val_2' not in data)
ok_('test2_val_3' in data) ok_('test2_val_3' in data)
ok_('test2_val_4' in data) ok_('test2_val_4' in data)
# float - in list - test validation # float - in list - test validation
rv = client.get('/admin/_float/?flt0_5=25.9%2Cbadval') rv = client.get('/admin/_float/?flt0_5=25.9%2Cbadval')
eq_(rv.status_code, 200) eq_(rv.status_code, 200)
data = rv.data.decode('utf-8') data = rv.data.decode('utf-8')
ok_('Invalid Filter Value' in data) ok_('Invalid Filter Value' in data)
# float - not in list # float - not in list
rv = client.get('/admin/_float/?flt0_6=25.9%2C75.5') rv = client.get('/admin/_float/?flt0_6=25.9%2C75.5')
eq_(rv.status_code, 200) eq_(rv.status_code, 200)
...@@ -792,7 +792,7 @@ def test_column_filters(): ...@@ -792,7 +792,7 @@ def test_column_filters():
ok_('test2_val_2' in data) ok_('test2_val_2' in data)
ok_('test2_val_3' not in data) ok_('test2_val_3' not in data)
ok_('test2_val_4' not in data) ok_('test2_val_4' not in data)
# Test filters to joined table field # Test filters to joined table field
view = CustomModelView( view = CustomModelView(
Model2, db.session, Model2, db.session,
...@@ -828,10 +828,10 @@ def test_column_filters(): ...@@ -828,10 +828,10 @@ def test_column_filters():
data = rv.data.decode('utf-8') data = rv.data.decode('utf-8')
ok_('test1_val_1' in data) ok_('test1_val_1' in data)
ok_('test1_val_2' not in data) ok_('test1_val_2' not in data)
# Test date, time, and datetime filters # Test date, time, and datetime filters
view = CustomModelView(Model1, db.session, view = CustomModelView(Model1, db.session,
column_filters=['date_field', 'datetime_field', 'time_field'], column_filters=['date_field', 'datetime_field', 'time_field'],
endpoint="_datetime") endpoint="_datetime")
admin.add_view(view) admin.add_view(view)
...@@ -845,7 +845,7 @@ def test_column_filters(): ...@@ -845,7 +845,7 @@ def test_column_filters():
(5, 'not between'), (5, 'not between'),
(6, 'empty'), (6, 'empty'),
]) ])
eq_([(f['index'], f['operation']) for f in view._filter_groups[u'Datetime Field']], eq_([(f['index'], f['operation']) for f in view._filter_groups[u'Datetime Field']],
[ [
(7, 'equals'), (7, 'equals'),
...@@ -856,7 +856,7 @@ def test_column_filters(): ...@@ -856,7 +856,7 @@ def test_column_filters():
(12, 'not between'), (12, 'not between'),
(13, 'empty'), (13, 'empty'),
]) ])
eq_([(f['index'], f['operation']) for f in view._filter_groups[u'Time Field']], eq_([(f['index'], f['operation']) for f in view._filter_groups[u'Time Field']],
[ [
(14, 'equals'), (14, 'equals'),
...@@ -867,42 +867,42 @@ def test_column_filters(): ...@@ -867,42 +867,42 @@ def test_column_filters():
(19, 'not between'), (19, 'not between'),
(20, 'empty'), (20, 'empty'),
]) ])
# date - equals # date - equals
rv = client.get('/admin/_datetime/?flt0_0=2014-11-17') rv = client.get('/admin/_datetime/?flt0_0=2014-11-17')
eq_(rv.status_code, 200) eq_(rv.status_code, 200)
data = rv.data.decode('utf-8') data = rv.data.decode('utf-8')
ok_('date_obj1' in data) ok_('date_obj1' in data)
ok_('date_obj2' not in data) ok_('date_obj2' not in data)
# date - not equal # date - not equal
rv = client.get('/admin/_datetime/?flt0_1=2014-11-17') rv = client.get('/admin/_datetime/?flt0_1=2014-11-17')
eq_(rv.status_code, 200) eq_(rv.status_code, 200)
data = rv.data.decode('utf-8') data = rv.data.decode('utf-8')
ok_('date_obj1' not in data) ok_('date_obj1' not in data)
ok_('date_obj2' in data) ok_('date_obj2' in data)
# date - greater # date - greater
rv = client.get('/admin/_datetime/?flt0_2=2014-11-16') rv = client.get('/admin/_datetime/?flt0_2=2014-11-16')
eq_(rv.status_code, 200) eq_(rv.status_code, 200)
data = rv.data.decode('utf-8') data = rv.data.decode('utf-8')
ok_('date_obj1' in data) ok_('date_obj1' in data)
ok_('date_obj2' not in data) ok_('date_obj2' not in data)
# date - smaller # date - smaller
rv = client.get('/admin/_datetime/?flt0_3=2014-11-16') rv = client.get('/admin/_datetime/?flt0_3=2014-11-16')
eq_(rv.status_code, 200) eq_(rv.status_code, 200)
data = rv.data.decode('utf-8') data = rv.data.decode('utf-8')
ok_('date_obj1' not in data) ok_('date_obj1' not in data)
ok_('date_obj2' in data) ok_('date_obj2' in data)
# date - between # date - between
rv = client.get('/admin/_datetime/?flt0_4=2014-11-13+to+2014-11-20') rv = client.get('/admin/_datetime/?flt0_4=2014-11-13+to+2014-11-20')
eq_(rv.status_code, 200) eq_(rv.status_code, 200)
data = rv.data.decode('utf-8') data = rv.data.decode('utf-8')
ok_('date_obj1' in data) ok_('date_obj1' in data)
ok_('date_obj2' not in data) ok_('date_obj2' not in data)
# date - not between # date - not between
rv = client.get('/admin/_datetime/?flt0_5=2014-11-13+to+2014-11-20') rv = client.get('/admin/_datetime/?flt0_5=2014-11-13+to+2014-11-20')
eq_(rv.status_code, 200) eq_(rv.status_code, 200)
...@@ -917,7 +917,7 @@ def test_column_filters(): ...@@ -917,7 +917,7 @@ def test_column_filters():
ok_('test1_val_1' in data) ok_('test1_val_1' in data)
ok_('date_obj1' not in data) ok_('date_obj1' not in data)
ok_('date_obj2' not in data) ok_('date_obj2' not in data)
# date - empty # date - empty
rv = client.get('/admin/_datetime/?flt0_6=0') rv = client.get('/admin/_datetime/?flt0_6=0')
eq_(rv.status_code, 200) eq_(rv.status_code, 200)
...@@ -925,49 +925,49 @@ def test_column_filters(): ...@@ -925,49 +925,49 @@ def test_column_filters():
ok_('test1_val_1' not in data) ok_('test1_val_1' not in data)
ok_('date_obj1' in data) ok_('date_obj1' in data)
ok_('date_obj2' in data) ok_('date_obj2' in data)
# datetime - equals # datetime - equals
rv = client.get('/admin/_datetime/?flt0_7=2014-04-03+01%3A09%3A00') rv = client.get('/admin/_datetime/?flt0_7=2014-04-03+01%3A09%3A00')
eq_(rv.status_code, 200) eq_(rv.status_code, 200)
data = rv.data.decode('utf-8') data = rv.data.decode('utf-8')
ok_('datetime_obj1' in data) ok_('datetime_obj1' in data)
ok_('datetime_obj2' not in data) ok_('datetime_obj2' not in data)
# datetime - not equal # datetime - not equal
rv = client.get('/admin/_datetime/?flt0_8=2014-04-03+01%3A09%3A00') rv = client.get('/admin/_datetime/?flt0_8=2014-04-03+01%3A09%3A00')
eq_(rv.status_code, 200) eq_(rv.status_code, 200)
data = rv.data.decode('utf-8') data = rv.data.decode('utf-8')
ok_('datetime_obj1' not in data) ok_('datetime_obj1' not in data)
ok_('datetime_obj2' in data) ok_('datetime_obj2' in data)
# datetime - greater # datetime - greater
rv = client.get('/admin/_datetime/?flt0_9=2014-04-03+01%3A08%3A00') rv = client.get('/admin/_datetime/?flt0_9=2014-04-03+01%3A08%3A00')
eq_(rv.status_code, 200) eq_(rv.status_code, 200)
data = rv.data.decode('utf-8') data = rv.data.decode('utf-8')
ok_('datetime_obj1' in data) ok_('datetime_obj1' in data)
ok_('datetime_obj2' not in data) ok_('datetime_obj2' not in data)
# datetime - smaller # datetime - smaller
rv = client.get('/admin/_datetime/?flt0_10=2014-04-03+01%3A08%3A00') rv = client.get('/admin/_datetime/?flt0_10=2014-04-03+01%3A08%3A00')
eq_(rv.status_code, 200) eq_(rv.status_code, 200)
data = rv.data.decode('utf-8') data = rv.data.decode('utf-8')
ok_('datetime_obj1' not in data) ok_('datetime_obj1' not in data)
ok_('datetime_obj2' in data) ok_('datetime_obj2' in data)
# datetime - between # datetime - between
rv = client.get('/admin/_datetime/?flt0_11=2014-04-02+00%3A00%3A00+to+2014-11-20+23%3A59%3A59') rv = client.get('/admin/_datetime/?flt0_11=2014-04-02+00%3A00%3A00+to+2014-11-20+23%3A59%3A59')
eq_(rv.status_code, 200) eq_(rv.status_code, 200)
data = rv.data.decode('utf-8') data = rv.data.decode('utf-8')
ok_('datetime_obj1' in data) ok_('datetime_obj1' in data)
ok_('datetime_obj2' not in data) ok_('datetime_obj2' not in data)
# datetime - not between # datetime - not between
rv = client.get('/admin/_datetime/?flt0_12=2014-04-02+00%3A00%3A00+to+2014-11-20+23%3A59%3A59') rv = client.get('/admin/_datetime/?flt0_12=2014-04-02+00%3A00%3A00+to+2014-11-20+23%3A59%3A59')
eq_(rv.status_code, 200) eq_(rv.status_code, 200)
data = rv.data.decode('utf-8') data = rv.data.decode('utf-8')
ok_('datetime_obj1' not in data) ok_('datetime_obj1' not in data)
ok_('datetime_obj2' in data) ok_('datetime_obj2' in data)
# datetime - empty # datetime - empty
rv = client.get('/admin/_datetime/?flt0_13=1') rv = client.get('/admin/_datetime/?flt0_13=1')
eq_(rv.status_code, 200) eq_(rv.status_code, 200)
...@@ -975,7 +975,7 @@ def test_column_filters(): ...@@ -975,7 +975,7 @@ def test_column_filters():
ok_('test1_val_1' in data) ok_('test1_val_1' in data)
ok_('datetime_obj1' not in data) ok_('datetime_obj1' not in data)
ok_('datetime_obj2' not in data) ok_('datetime_obj2' not in data)
# datetime - not empty # datetime - not empty
rv = client.get('/admin/_datetime/?flt0_13=0') rv = client.get('/admin/_datetime/?flt0_13=0')
eq_(rv.status_code, 200) eq_(rv.status_code, 200)
...@@ -983,49 +983,49 @@ def test_column_filters(): ...@@ -983,49 +983,49 @@ def test_column_filters():
ok_('test1_val_1' not in data) ok_('test1_val_1' not in data)
ok_('datetime_obj1' in data) ok_('datetime_obj1' in data)
ok_('datetime_obj2' in data) ok_('datetime_obj2' in data)
# time - equals # time - equals
rv = client.get('/admin/_datetime/?flt0_14=11%3A10%3A09') rv = client.get('/admin/_datetime/?flt0_14=11%3A10%3A09')
eq_(rv.status_code, 200) eq_(rv.status_code, 200)
data = rv.data.decode('utf-8') data = rv.data.decode('utf-8')
ok_('timeonly_obj1' in data) ok_('timeonly_obj1' in data)
ok_('timeonly_obj2' not in data) ok_('timeonly_obj2' not in data)
# time - not equal # time - not equal
rv = client.get('/admin/_datetime/?flt0_15=11%3A10%3A09') rv = client.get('/admin/_datetime/?flt0_15=11%3A10%3A09')
eq_(rv.status_code, 200) eq_(rv.status_code, 200)
data = rv.data.decode('utf-8') data = rv.data.decode('utf-8')
ok_('timeonly_obj1' not in data) ok_('timeonly_obj1' not in data)
ok_('timeonly_obj2' in data) ok_('timeonly_obj2' in data)
# time - greater # time - greater
rv = client.get('/admin/_datetime/?flt0_16=11%3A09%3A09') rv = client.get('/admin/_datetime/?flt0_16=11%3A09%3A09')
eq_(rv.status_code, 200) eq_(rv.status_code, 200)
data = rv.data.decode('utf-8') data = rv.data.decode('utf-8')
ok_('timeonly_obj1' in data) ok_('timeonly_obj1' in data)
ok_('timeonly_obj2' not in data) ok_('timeonly_obj2' not in data)
# time - smaller # time - smaller
rv = client.get('/admin/_datetime/?flt0_17=11%3A09%3A09') rv = client.get('/admin/_datetime/?flt0_17=11%3A09%3A09')
eq_(rv.status_code, 200) eq_(rv.status_code, 200)
data = rv.data.decode('utf-8') data = rv.data.decode('utf-8')
ok_('timeonly_obj1' not in data) ok_('timeonly_obj1' not in data)
ok_('timeonly_obj2' in data) ok_('timeonly_obj2' in data)
# time - between # time - between
rv = client.get('/admin/_datetime/?flt0_18=10%3A40%3A00+to+11%3A50%3A59') rv = client.get('/admin/_datetime/?flt0_18=10%3A40%3A00+to+11%3A50%3A59')
eq_(rv.status_code, 200) eq_(rv.status_code, 200)
data = rv.data.decode('utf-8') data = rv.data.decode('utf-8')
ok_('timeonly_obj1' in data) ok_('timeonly_obj1' in data)
ok_('timeonly_obj2' not in data) ok_('timeonly_obj2' not in data)
# time - not between # time - not between
rv = client.get('/admin/_datetime/?flt0_19=10%3A40%3A00+to+11%3A50%3A59') rv = client.get('/admin/_datetime/?flt0_19=10%3A40%3A00+to+11%3A50%3A59')
eq_(rv.status_code, 200) eq_(rv.status_code, 200)
data = rv.data.decode('utf-8') data = rv.data.decode('utf-8')
ok_('timeonly_obj1' not in data) ok_('timeonly_obj1' not in data)
ok_('timeonly_obj2' in data) ok_('timeonly_obj2' in data)
# time - empty # time - empty
rv = client.get('/admin/_datetime/?flt0_20=1') rv = client.get('/admin/_datetime/?flt0_20=1')
eq_(rv.status_code, 200) eq_(rv.status_code, 200)
...@@ -1033,7 +1033,7 @@ def test_column_filters(): ...@@ -1033,7 +1033,7 @@ def test_column_filters():
ok_('test1_val_1' in data) ok_('test1_val_1' in data)
ok_('timeonly_obj1' not in data) ok_('timeonly_obj1' not in data)
ok_('timeonly_obj2' not in data) ok_('timeonly_obj2' not in data)
# time - not empty # time - not empty
rv = client.get('/admin/_datetime/?flt0_20=0') rv = client.get('/admin/_datetime/?flt0_20=0')
eq_(rv.status_code, 200) eq_(rv.status_code, 200)
...@@ -1041,27 +1041,27 @@ def test_column_filters(): ...@@ -1041,27 +1041,27 @@ def test_column_filters():
ok_('test1_val_1' not in data) ok_('test1_val_1' not in data)
ok_('timeonly_obj1' in data) ok_('timeonly_obj1' in data)
ok_('timeonly_obj2' in data) ok_('timeonly_obj2' in data)
# Test enum filter # Test enum filter
view = CustomModelView(Model1, db.session, view = CustomModelView(Model1, db.session,
column_filters=['enum_field'], column_filters=['enum_field'],
endpoint="_enumfield") endpoint="_enumfield")
admin.add_view(view) admin.add_view(view)
# enum - equals # enum - equals
rv = client.get('/admin/_enumfield/?flt0_0=model1_v1') rv = client.get('/admin/_enumfield/?flt0_0=model1_v1')
eq_(rv.status_code, 200) eq_(rv.status_code, 200)
data = rv.data.decode('utf-8') data = rv.data.decode('utf-8')
ok_('enum_obj1' in data) ok_('enum_obj1' in data)
ok_('enum_obj2' not in data) ok_('enum_obj2' not in data)
# enum - not equal # enum - not equal
rv = client.get('/admin/_enumfield/?flt0_1=model1_v1') rv = client.get('/admin/_enumfield/?flt0_1=model1_v1')
eq_(rv.status_code, 200) eq_(rv.status_code, 200)
data = rv.data.decode('utf-8') data = rv.data.decode('utf-8')
ok_('enum_obj1' not in data) ok_('enum_obj1' not in data)
ok_('enum_obj2' in data) ok_('enum_obj2' in data)
# enum - empty # enum - empty
rv = client.get('/admin/_enumfield/?flt0_2=1') rv = client.get('/admin/_enumfield/?flt0_2=1')
eq_(rv.status_code, 200) eq_(rv.status_code, 200)
...@@ -1069,7 +1069,7 @@ def test_column_filters(): ...@@ -1069,7 +1069,7 @@ def test_column_filters():
ok_('test1_val_1' in data) ok_('test1_val_1' in data)
ok_('enum_obj1' not in data) ok_('enum_obj1' not in data)
ok_('enum_obj2' not in data) ok_('enum_obj2' not in data)
# enum - not empty # enum - not empty
rv = client.get('/admin/_enumfield/?flt0_2=0') rv = client.get('/admin/_enumfield/?flt0_2=0')
eq_(rv.status_code, 200) eq_(rv.status_code, 200)
...@@ -1077,7 +1077,7 @@ def test_column_filters(): ...@@ -1077,7 +1077,7 @@ def test_column_filters():
ok_('test1_val_1' not in data) ok_('test1_val_1' not in data)
ok_('enum_obj1' in data) ok_('enum_obj1' in data)
ok_('enum_obj2' in data) ok_('enum_obj2' in data)
# enum - in list # enum - in list
rv = client.get('/admin/_enumfield/?flt0_3=model1_v1%2Cmodel1_v2') rv = client.get('/admin/_enumfield/?flt0_3=model1_v1%2Cmodel1_v2')
eq_(rv.status_code, 200) eq_(rv.status_code, 200)
...@@ -1085,7 +1085,7 @@ def test_column_filters(): ...@@ -1085,7 +1085,7 @@ def test_column_filters():
ok_('test1_val_1' not in data) ok_('test1_val_1' not in data)
ok_('enum_obj1' in data) ok_('enum_obj1' in data)
ok_('enum_obj2' in data) ok_('enum_obj2' in data)
# enum - not in list # enum - not in list
rv = client.get('/admin/_enumfield/?flt0_4=model1_v1%2Cmodel1_v2') rv = client.get('/admin/_enumfield/?flt0_4=model1_v1%2Cmodel1_v2')
eq_(rv.status_code, 200) eq_(rv.status_code, 200)
...@@ -1093,14 +1093,14 @@ def test_column_filters(): ...@@ -1093,14 +1093,14 @@ def test_column_filters():
ok_('test1_val_1' in data) ok_('test1_val_1' in data)
ok_('enum_obj1' not in data) ok_('enum_obj1' not in data)
ok_('enum_obj2' not in data) ok_('enum_obj2' not in data)
# Test single custom filter on relation # Test single custom filter on relation
view = CustomModelView(Model2, db.session, view = CustomModelView(Model2, db.session,
column_filters = [ column_filters = [
filters.FilterEqual(Model1.test1, "Test1") filters.FilterEqual(Model1.test1, "Test1")
], endpoint='_relation_test') ], endpoint='_relation_test')
admin.add_view(view) admin.add_view(view)
rv = client.get('/admin/_relation_test/?flt1_0=test1_val_1') rv = client.get('/admin/_relation_test/?flt1_0=test1_val_1')
data = rv.data.decode('utf-8') data = rv.data.decode('utf-8')
ok_('test1_val_1' in data) ok_('test1_val_1' in data)
...@@ -1479,34 +1479,34 @@ def test_modelview_localization(): ...@@ -1479,34 +1479,34 @@ def test_modelview_localization():
def test_locale(locale): def test_locale(locale):
try: try:
app, db, admin = setup() app, db, admin = setup()
app.config['BABEL_DEFAULT_LOCALE'] = locale app.config['BABEL_DEFAULT_LOCALE'] = locale
babel = Babel(app) babel = Babel(app)
Model1, _ = create_models(db) Model1, _ = create_models(db)
view = CustomModelView( view = CustomModelView(
Model1, db.session, Model1, db.session,
column_filters=['test1', 'bool_field', 'date_field', 'datetime_field', 'time_field'] column_filters=['test1', 'bool_field', 'date_field', 'datetime_field', 'time_field']
) )
admin.add_view(view) admin.add_view(view)
client = app.test_client() client = app.test_client()
rv = client.get('/admin/model1/') rv = client.get('/admin/model1/')
eq_(rv.status_code, 200) eq_(rv.status_code, 200)
rv = client.get('/admin/model1/new/') rv = client.get('/admin/model1/new/')
eq_(rv.status_code, 200) eq_(rv.status_code, 200)
except: except:
print("Error on the following locale:", locale) print("Error on the following locale:", locale)
raise raise
locales = ['en', 'cs', 'de', 'es', 'fa', 'fr', 'pt', 'ru', 'zh_CN', 'zh_TW'] locales = ['en', 'cs', 'de', 'es', 'fa', 'fr', 'pt', 'ru', 'zh_CN', 'zh_TW']
for locale in locales: for locale in locales:
test_locale(locale) test_locale(locale)
def test_custom_form_base(): def test_custom_form_base():
app, db, admin = setup() app, db, admin = setup()
......
...@@ -3,7 +3,7 @@ from nose.tools import eq_, ok_, raises ...@@ -3,7 +3,7 @@ from nose.tools import eq_, ok_, raises
from . import setup from . import setup
from .test_basic import CustomModelView, create_models from .test_basic import CustomModelView, create_models
from flask.ext.admin.form import rules from flask_admin.form import rules
def test_form_rules(): def test_form_rules():
......
...@@ -3,9 +3,9 @@ from nose.tools import eq_, ok_, raises ...@@ -3,9 +3,9 @@ from nose.tools import eq_, ok_, raises
from wtforms import fields from wtforms import fields
from flask.ext.admin.contrib.sqla import ModelView from flask_admin.contrib.sqla import ModelView
from flask.ext.admin.contrib.sqla.fields import InlineModelFormList from flask_admin.contrib.sqla.fields import InlineModelFormList
from flask.ext.admin.contrib.sqla.validators import ItemsRequired from flask_admin.contrib.sqla.validators import ItemsRequired
from . import setup from . import setup
......
...@@ -3,7 +3,7 @@ from nose.tools import eq_, ok_ ...@@ -3,7 +3,7 @@ from nose.tools import eq_, ok_
from . import setup from . import setup
from .test_basic import CustomModelView from .test_basic import CustomModelView
from flask.ext.sqlalchemy import Model from flask_sqlalchemy import Model
from sqlalchemy.ext.declarative import declarative_base from sqlalchemy.ext.declarative import declarative_base
......
...@@ -2,7 +2,7 @@ from nose.tools import ok_, eq_, raises ...@@ -2,7 +2,7 @@ from nose.tools import ok_, eq_, raises
from flask import Flask, request, abort, url_for from flask import Flask, request, abort, url_for
from flask.views import MethodView from flask.views import MethodView
from flask.ext.admin import base from flask_admin import base
class MockView(base.BaseView): class MockView(base.BaseView):
...@@ -132,11 +132,11 @@ def test_admin_customizations(): ...@@ -132,11 +132,11 @@ def test_admin_customizations():
client = app.test_client() client = app.test_client()
rv = client.get('/foobar/') rv = client.get('/foobar/')
eq_(rv.status_code, 200) eq_(rv.status_code, 200)
# test custom static_url_path # test custom static_url_path
with app.test_request_context('/'): with app.test_request_context('/'):
rv = client.get(url_for('admin.static', filename='bootstrap/bootstrap2/css/bootstrap.css')) rv = client.get(url_for('admin.static', filename='bootstrap/bootstrap2/css/bootstrap.css'))
eq_(rv.status_code, 200) eq_(rv.status_code, 200)
def test_baseview_registration(): def test_baseview_registration():
...@@ -364,7 +364,7 @@ def test_root_mount(): ...@@ -364,7 +364,7 @@ def test_root_mount():
client = app.test_client() client = app.test_client()
rv = client.get('/mockview/') rv = client.get('/mockview/')
eq_(rv.data, b'Success!') eq_(rv.data, b'Success!')
# test static files when url='/' # test static files when url='/'
with app.test_request_context('/'): with app.test_request_context('/'):
rv = client.get(url_for('admin.static', filename='bootstrap/bootstrap2/css/bootstrap.css')) rv = client.get(url_for('admin.static', filename='bootstrap/bootstrap2/css/bootstrap.css'))
......
...@@ -6,7 +6,7 @@ from io import BytesIO ...@@ -6,7 +6,7 @@ from io import BytesIO
from nose.tools import eq_, ok_ from nose.tools import eq_, ok_
from flask import Flask, url_for from flask import Flask, url_for
from flask.ext.admin import form, helpers from flask_admin import form, helpers
def _create_temp(): def _create_temp():
......
...@@ -9,9 +9,9 @@ from werkzeug.test import Client ...@@ -9,9 +9,9 @@ from werkzeug.test import Client
from wtforms import fields from wtforms import fields
from flask.ext.admin import Admin, form from flask_admin import Admin, form
from flask.ext.admin._compat import iteritems, itervalues from flask_admin._compat import iteritems, itervalues
from flask.ext.admin.model import base, filters from flask_admin.model import base, filters
def wtforms2_and_up(func): def wtforms2_and_up(func):
...@@ -404,7 +404,7 @@ def test_csrf(): ...@@ -404,7 +404,7 @@ def test_csrf():
csrf_token = get_csrf_token(rv.data.decode('utf-8')) csrf_token = get_csrf_token(rv.data.decode('utf-8'))
# Edit without CSRF token # Edit without CSRF token
rv = client.post('/admin/secure/edit/?url=%2Fadmin%2Fsecure%2F&id=1', rv = client.post('/admin/secure/edit/?url=%2Fadmin%2Fsecure%2F&id=1',
data=dict(name='test1')) data=dict(name='test1'))
eq_(rv.status_code, 200) eq_(rv.status_code, 200)
...@@ -423,7 +423,7 @@ def test_csrf(): ...@@ -423,7 +423,7 @@ def test_csrf():
csrf_token = get_csrf_token(rv.data.decode('utf-8')) csrf_token = get_csrf_token(rv.data.decode('utf-8'))
# Delete without CSRF token, test validation errors # Delete without CSRF token, test validation errors
rv = client.post('/admin/secure/delete/', rv = client.post('/admin/secure/delete/',
data=dict(id="1", url="/admin/secure/"), follow_redirects=True) data=dict(id="1", url="/admin/secure/"), follow_redirects=True)
eq_(rv.status_code, 200) eq_(rv.status_code, 200)
ok_(u'Record was successfully deleted.' not in rv.data.decode('utf-8')) ok_(u'Record was successfully deleted.' not in rv.data.decode('utf-8'))
......
from nose.tools import eq_, ok_ from nose.tools import eq_, ok_
from flask.ext.admin import tools from flask_admin import tools
def test_encode_decode(): def test_encode_decode():
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment