1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66
|
import sqlalchemy as sa
from sqlalchemy import create_engine
from sqlalchemy.orm import declarative_base
from sqlalchemy.orm import sessionmaker
from wtforms_alchemy import ModelForm
engine = create_engine('sqlite:///:memory:')
Base = sa.orm.declarative_base()
Session = sessionmaker(bind=engine)
session = Session()
class Fake(Base):
__tablename__ = 'fake'
id = sa.Column(sa.BigInteger, autoincrement=True, primary_key=True)
a = sa.Column(sa.Unicode(100), nullable=True)
b = sa.Column(sa.Unicode(255), nullable=True)
c = sa.Column(sa.Unicode(100), nullable=True)
d = sa.Column(sa.Unicode(255), nullable=True)
class FakeForm(ModelForm):
class Meta:
model = Fake
Base.metadata.create_all(engine)
# Example
def create_form_from_json(**kwargs):
if not kwargs.get('json'):
kwargs['json'] = {
'a': u'First Event',
'b': u'Second',
'c': u'Third',
'd': u'Fourth'
}
return FakeForm.from_json(kwargs['json'])
def create_populated_obj_from_json_form():
form = create_form_from_json()
obj = Fake()
form.populate_obj(obj)
return obj
def test_init_formdata():
json = {
'a': u'First Event',
'b': u'Second',
'c': u'Third',
'd': u'Fourth'
}
form = create_form_from_json(json=json)
assert form.data == json
def test_populate_form_from_object():
obj = create_populated_obj_from_json_form()
form = FakeForm(obj=obj)
assert len(form.data) == 4
for key in form.data:
assert form.data[key] == obj.__dict__[key]
|