From fd89cf20fe9525b195596d17ee122110a110f67d Mon Sep 17 00:00:00 2001 From: Charles Leifer Date: Mon, 6 Jan 2020 17:12:44 -0600 Subject: [PATCH] Compatibility with new(er) werkzeug and flask. Tests passing and general cleanup. --- flask_peewee/admin.py | 2 +- flask_peewee/rest.py | 3 +-- flask_peewee/tests/base.py | 16 ++++++++-------- flask_peewee/tests/rest.py | 9 ++++----- flask_peewee/tests/serializer.py | 28 ++++++++++++++-------------- flask_peewee/tests/test_app.py | 14 +++++++------- flask_peewee/tests/utils.py | 10 +++++----- 7 files changed, 40 insertions(+), 42 deletions(-) diff --git a/flask_peewee/admin.py b/flask_peewee/admin.py index 7566e0f..9191c43 100644 --- a/flask_peewee/admin.py +++ b/flask_peewee/admin.py @@ -32,7 +32,7 @@ from peewee import DateTimeField from peewee import ForeignKeyField from peewee import TextField -from werkzeug import Headers +from werkzeug.datastructures import Headers from wtforms import fields from wtforms import widgets from wtfpeewee.fields import ModelHiddenField diff --git a/flask_peewee/rest.py b/flask_peewee/rest.py index e4a7934..05c3170 100644 --- a/flask_peewee/rest.py +++ b/flask_peewee/rest.py @@ -288,8 +288,7 @@ def response_bad_request(self): return Response('Bad request', 400) def response(self, data): - kwargs = {} if request.is_xhr else {'indent': 2} - return Response(json.dumps(data, **kwargs), mimetype='application/json') + return Response(json.dumps(data), mimetype='application/json') def require_method(self, func, methods): @functools.wraps(func) diff --git a/flask_peewee/tests/base.py b/flask_peewee/tests/base.py index 3744510..e7cf19e 100644 --- a/flask_peewee/tests/base.py +++ b/flask_peewee/tests/base.py @@ -26,21 +26,21 @@ def setUp(self): EModel.drop_table(True) EModel.create_table() FModel.create_table() - + self.flask_app = test_app.app self.flask_app._template_context = {} - - self.app = test_app.app.test_client() - + + self.app = test_app.app.test_client() + def create_user(self, username, password, **kwargs): user = User(username=username, email=kwargs.pop('email', ''), **kwargs) user.set_password(password) user.save() return user - + def create_message(self, user, content, **kwargs): return Message.create(user=user, content=content, **kwargs) - + def create_users(self): users = [ self.create_user('admin', 'admin', admin=True), @@ -49,11 +49,11 @@ def create_users(self): ] self.admin, self.normal, self.inactive = users return users - + def get_context(self, var_name): if var_name not in self.flask_app._template_context: raise KeyError('%s not in template context' % var_name) return self.flask_app._template_context[var_name] - + def assertContext(self, key, value): self.assertEqual(self.get_context(key), value) diff --git a/flask_peewee/tests/rest.py b/flask_peewee/tests/rest.py index ed8f80c..07970cc 100644 --- a/flask_peewee/tests/rest.py +++ b/flask_peewee/tests/rest.py @@ -18,8 +18,10 @@ from flask_peewee.tests.base import FlaskPeeweeTestCase from flask_peewee.tests.test_app import AModel from flask_peewee.tests.test_app import APIKey +from flask_peewee.tests.test_app import BDetails from flask_peewee.tests.test_app import BModel from flask_peewee.tests.test_app import CModel +from flask_peewee.tests.test_app import DModel from flask_peewee.tests.test_app import EModel from flask_peewee.tests.test_app import FModel from flask_peewee.tests.test_app import Message @@ -106,11 +108,8 @@ def assertAPITestModels(self, json_data, tms): class RestApiResourceTestCase(RestApiTestCase): def setUp(self): super(RestApiResourceTestCase, self).setUp() - FModel.delete().execute() - EModel.delete().execute() - CModel.delete().execute() - BModel.delete().execute() - AModel.delete().execute() + for M in (FModel, EModel, DModel, CModel, BDetails, BModel, AModel): + M.delete().execute() def create_test_models(self): self.a1 = AModel.create(a_field='a1') diff --git a/flask_peewee/tests/serializer.py b/flask_peewee/tests/serializer.py index d0beabc..5734cd4 100644 --- a/flask_peewee/tests/serializer.py +++ b/flask_peewee/tests/serializer.py @@ -13,7 +13,7 @@ def setUp(self): super(SerializerTestCase, self).setUp() self.s = Serializer() self.d = Deserializer() - + def test_serializer(self): users = self.create_users() serialized = self.s.serialize_object(self.admin) @@ -26,13 +26,13 @@ def test_serializer(self): 'admin': True, 'email': '', }) - + serialized = self.s.serialize_object(self.admin, fields={User: ['id', 'username']}) self.assertEqual(serialized, { 'id': self.admin.id, 'username': 'admin', }) - + serialized = self.s.serialize_object(self.admin, exclude={User: ['password', 'join_date']}) self.assertEqual(serialized, { 'id': self.admin.id, @@ -41,10 +41,10 @@ def test_serializer(self): 'admin': True, 'email': '', }) - + def test_deserializer(self): users = self.create_users() - + deserialized, models = self.d.deserialize_object(User(), { 'id': self.admin.id, 'username': 'admin', @@ -53,40 +53,40 @@ def test_deserializer(self): 'active': True, 'admin': True, }) - + for attr in ['id', 'username', 'password', 'active', 'admin']: self.assertEqual( getattr(deserialized, attr), getattr(self.admin, attr), ) - + self.assertEqual( deserialized.join_date.strftime('%Y-%m-%d %H:%M:%S'), self.admin.join_date.strftime('%Y-%m-%d %H:%M:%S'), ) - + admin_pk = self.admin.id - + deserialized, models = self.d.deserialize_object(self.admin, { 'username': 'edited', 'active': False, 'admin': False, }) - + self.assertEqual(deserialized.username, 'edited') self.assertEqual(deserialized.admin, False) self.assertEqual(deserialized.active, False) self.assertEqual(deserialized.id, admin_pk) - + deserialized.save() - + self.assertEqual(User.select().count(), 3) edited = User.get(username='edited') self.assertEqual(edited.id, admin_pk) - + def test_s_and_d(self): self.create_users() - + s = self.s.serialize_object(self.admin) d, model_list = self.d.deserialize_object(User(), s) self.assertEqual(d, self.admin) diff --git a/flask_peewee/tests/test_app.py b/flask_peewee/tests/test_app.py index 25c72ad..c90d4a9 100644 --- a/flask_peewee/tests/test_app.py +++ b/flask_peewee/tests/test_app.py @@ -70,7 +70,7 @@ class Message(db.Model): user = ForeignKeyField(User) content = TextField() pub_date = DateTimeField(default=datetime.datetime.now) - + def __unicode__(self): return '%s: %s' % (self.user, self.content) @@ -83,7 +83,7 @@ class Note(db.Model): class TestModel(db.Model): data = TextField() - + class Meta: order_by = ('id',) @@ -98,7 +98,7 @@ class BModel(db.Model): class CModel(db.Model): b = ForeignKeyField(BModel) c_field = CharField() - + class DModel(db.Model): c = ForeignKeyField(CModel) d_field = CharField() @@ -122,12 +122,12 @@ class APIKey(db.Model): class NotePanel(AdminPanel): template_name = 'admin/notes.html' - + def get_urls(self): return ( ('/create/', self.create), ) - + def create(self): if request.method == 'POST': if request.form.get('message'): @@ -137,7 +137,7 @@ def create(self): ) next = request.form.get('next') or self.dashboard_url() return redirect(next) - + def get_context(self): return { 'note_list': Note.select().order_by(('created_date', 'desc')).paginate(1, 3) @@ -183,7 +183,7 @@ class NoteAdmin(ModelAdmin): class UserResource(RestResource): exclude = ('password', 'email',) - + def get_query(self): return User.select().where(User.active==True) diff --git a/flask_peewee/tests/utils.py b/flask_peewee/tests/utils.py index 64bed7c..d975bdf 100644 --- a/flask_peewee/tests/utils.py +++ b/flask_peewee/tests/utils.py @@ -21,27 +21,27 @@ class UtilsTestCase(FlaskPeeweeTestCase): def setUp(self): super(UtilsTestCase, self).setUp() - + def test_get_object_or_404(self): user = self.create_user('test', 'test') - + # test with model as first arg self.assertRaises(NotFound, get_object_or_404, User, User.username=='not-here') self.assertEqual(user, get_object_or_404(User, User.username=='test')) - + # test with query as first arg active = User.select().where(User.active==True) inactive = User.select().where(User.active==False) self.assertRaises(NotFound, get_object_or_404, active, User.username=='not-here') self.assertRaises(NotFound, get_object_or_404, inactive, User.username=='test') self.assertEqual(user, get_object_or_404(active, User.username=='test')) - + def test_passwords(self): p = make_password('testing') self.assertTrue(check_password('testing', p)) self.assertFalse(check_password('testing ', p)) self.assertFalse(check_password('Testing', p)) self.assertFalse(check_password('', p)) - + p2 = make_password('Testing') self.assertFalse(p == p2)