mattupstate / overholt

Example Flask application illustrating some of my common practices
http://mattupstate.com/blog/how-i-structure-my-flask-applications/
MIT License
1.6k stars 236 forks source link

Outdated dependencies in requirements.txt #14

Closed peterdemin closed 10 years ago

peterdemin commented 10 years ago

I tried to launch your example, but found out, that there is no such version for kombu. I tried to remove all version specifications, and found out, that you are using deprecated (and removed in current stable version) factory-boy method set_creation_function(). One more error is in WTForms usage.

Possible fix could be:

diff --git a/overholt/products/forms.py b/overholt/products/forms.py
index 2e7adbf..106d72c 100644
--- a/overholt/products/forms.py
+++ b/overholt/products/forms.py
@@ -6,8 +6,7 @@
     Product forms
 """

-from flask_wtf import Form, TextField, SelectMultipleField, Required, \
-    Optional
+from wtforms import Form, TextField, SelectMultipleField, validators

 from ..services import products

@@ -22,12 +21,12 @@ class ProductFormMixin(object):

 class NewProductForm(ProductFormMixin, Form):
-    name = TextField('Name', validators=[Required()])
+    name = TextField('Name', validators=[validators.Required()])
     categories = SelectMultipleField(
-        'Categories', coerce=int, validators=[Required()])
+        'Categories', coerce=int, validators=[validators.Required()])

 class UpdateProductForm(ProductFormMixin, Form):
-    name = TextField('Name', validators=[Optional()])
+    name = TextField('Name', validators=[validators.Optional()])
     categories = SelectMultipleField(
-        'Categories', coerce=int, validators=[Optional()])
+        'Categories', coerce=int, validators=[validators.Optional()])
diff --git a/overholt/stores/forms.py b/overholt/stores/forms.py
index 4edf74c..5899bae 100644
--- a/overholt/stores/forms.py
+++ b/overholt/stores/forms.py
@@ -6,22 +6,22 @@
     Store forms
 """

-from flask_wtf import Form, TextField, Required, Optional
+from wtforms import Form, TextField, validators

 __all__ = ['NewStoreForm', 'UpdateStoreForm']

 class NewStoreForm(Form):
-    name = TextField('Name', validators=[Required()])
-    address = TextField('Address', validators=[Required()])
-    city = TextField('City', validators=[Required()])
-    state = TextField('State', validators=[Required()])
-    zip_code = TextField('Zip Code', validators=[Required()])
+    name = TextField('Name', validators=[validators.Required()])
+    address = TextField('Address', validators=[validators.Required()])
+    city = TextField('City', validators=[validators.Required()])
+    state = TextField('State', validators=[validators.Required()])
+    zip_code = TextField('Zip Code', validators=[validators.Required()])

 class UpdateStoreForm(Form):
-    name = TextField('Name', validators=[Optional()])
-    address = TextField('Address', validators=[Optional()])
-    city = TextField('City', validators=[Optional()])
-    state = TextField('State', validators=[Optional()])
-    zip_code = TextField('Zip Code', validators=[Optional()])
+    name = TextField('Name', validators=[validators.Optional()])
+    address = TextField('Address', validators=[validators.Optional()])
+    city = TextField('City', validators=[validators.Optional()])
+    state = TextField('State', validators=[validators.Optional()])
+    zip_code = TextField('Zip Code', validators=[validators.Optional()])
diff --git a/tests/factories.py b/tests/factories.py
index 9ebdcb9..63539d2 100644
--- a/tests/factories.py
+++ b/tests/factories.py
@@ -15,22 +15,22 @@ from overholt.core import db
 from overholt.models import *

-def create_sqlalchemy_model_function(class_to_create, *args, **kwargs):
-    entity = class_to_create(**kwargs)
-    db.session.add(entity)
-    db.session.commit()
-    return entity
+class MyFactory(Factory):
+    @classmethod
+    def _create(cls, target_class, *args, **kwargs):
+        entity = target_class(**kwargs)
+        db.session.add(entity)
+        db.session.commit()
+        return entity

-Factory.set_creation_function(create_sqlalchemy_model_function)

-
-class RoleFactory(Factory):
+class RoleFactory(MyFactory):
     FACTORY_FOR = Role
     name = 'admin'
     description = 'Administrator'

-class UserFactory(Factory):
+class UserFactory(MyFactory):
     FACTORY_FOR = User
     email = Sequence(lambda n: 'user{0}@overholt.com'.format(n))
     password = LazyAttribute(lambda a: encrypt_password('password'))
@@ -43,7 +43,7 @@ class UserFactory(Factory):
     active = True

-class StoreFactory(Factory):
+class StoreFactory(MyFactory):
     FACTORY_FOR = Store
     name = Sequence(lambda n: 'Store Number {0}'.format(n))
     address = '123 Overholt Alley'
@@ -52,11 +52,11 @@ class StoreFactory(Factory):
     zip_code = '12345'

-class ProductFactory(Factory):
+class ProductFactory(MyFactory):
     FACTORY_FOR = Product
     name = Sequence(lambda n: 'Product Number {0}'.format(n))

-class CategoryFactory(Factory):
+class CategoryFactory(MyFactory):
     FACTORY_FOR = Category
     name = Sequence(lambda n: 'Category {0}'.format(n))
davidmturner commented 10 years ago

In your new _create method, the entity should be created with:

entity = target_class(**kwargs)

peterdemin commented 10 years ago

Thanks, David. I fixed my comment.

mattupstate commented 10 years ago

See #23