def validate(self, context=None): """Validate form. ``context`` is to be given **if and only if** this is an add form and we must therefore validate the given id. """ success = Form.validate(self) if context: if not context.validate_id(self.id.data): success = False self.id.errors.append( u'An item with the same id already exists.') return success
def test(self): expected = """<label for="test">Caption</label>""" label = Label('test', 'Caption') self.assertEqual(label(), expected) self.assertEqual(str(label), expected) self.assertEqual(text_type(label), expected) self.assertEqual(label.__html__(), expected) self.assertEqual(label().__html__(), expected) self.assertEqual(label('hello'), """<label for="test">hello</label>""") self.assertEqual(TextField('hi').bind(Form(), 'a').label.text, 'hi') if PYTHON_VERSION < (3, ): self.assertEqual(repr(label), "Label(u'test', u'Caption')") else: self.assertEqual(repr(label), "Label('test', 'Caption')") self.assertEqual(label.__unicode__(), expected)
def test(self): expected = """<label for="test">Caption</label>""" label = Label("test", "Caption") self.assertEqual(label(), expected) self.assertEqual(str(label), expected) self.assertEqual(text_type(label), expected) self.assertEqual(label.__html__(), expected) self.assertEqual(label().__html__(), expected) self.assertEqual(label("hello"), """<label for="test">hello</label>""") self.assertEqual(StringField("hi").bind(Form(), "a").label.text, "hi") if PYTHON_VERSION < (3,): self.assertEqual(repr(label), "Label(u'test', u'Caption')") else: self.assertEqual(repr(label), "Label('test', 'Caption')") self.assertEqual(label.__unicode__(), expected)
def test_datetime_field(app): """Test fields supports date with year < 1900.""" assert "fr" in app.config["BABEL_ACCEPT_LANGUAGES"] patch_babel(app) obj = mock.Mock() headers = {"Accept-Language": "fr-FR,fr;q=0.8"} with app.test_request_context(headers=headers): field = fields.DateTimeField(use_naive=False).bind(Form(), "dt") field.process_formdata(["17/06/1789 | 10:42"]) # 1789: applied offset for HongKong is equal to LMT+7:37:00, # thus we compare with tzinfo=user_tz expected_datetime = datetime.datetime(1789, 6, 17, 10, 42, tzinfo=USER_TZ) assert field.data == expected_datetime # UTC stored assert field.data.tzinfo is pytz.UTC # displayed in user current timezone assert field._value() == "17/06/1789 10:42" # non-naive mode: test process_data change TZ to user's TZ field.process_data(field.data) assert field.data.tzinfo is USER_TZ assert field.data == expected_datetime field.populate_obj(obj, "dt") assert obj.dt == expected_datetime # test more recent date: offset is GMT+8 field.process_formdata(["23/01/2011 | 10:42"]) expected_datetime = datetime.datetime(2011, 1, 23, 2, 42, tzinfo=pytz.utc) assert field.data == expected_datetime
def test_datetime_field(self): """Test fields supports date with year < 1900.""" obj = mock.Mock() headers = {'Accept-Language': 'fr-FR,fr;q=0.8'} with self.app.test_request_context(headers=headers): field = fields.DateTimeField(use_naive=False).bind(Form(), 'dt') field.process_formdata(['17/06/1789 | 10:42']) # 1789: applied offset for HongKong is equal to LMT+7:37:00, # thus we compare with tzinfo=user_tz expected_datetime = datetime.datetime( 1789, 6, 17, 10, 42, tzinfo=USER_TZ, ) assert field.data == expected_datetime # UTC stored assert field.data.tzinfo is pytz.UTC # displayed in user current timezone assert field._value() == '17/06/1789 10:42' # non-naive mode: test process_data change TZ to user's TZ field.process_data(field.data) assert field.data.tzinfo is USER_TZ assert field.data == expected_datetime field.populate_obj(obj, 'dt') assert obj.dt == expected_datetime # test more recent date: offset is GMT+8 field.process_formdata(['23/01/2011 | 10:42']) expected_datetime = datetime.datetime( 2011, 1, 23, 2, 42, tzinfo=pytz.utc, ) assert field.data == expected_datetime
def test_auto_label(self): t1 = StringField().bind(Form(), "foo_bar") assert t1.label.text == "Foo Bar" t2 = StringField("").bind(Form(), "foo_bar") assert t2.label.text == ""
def flags(): return StringField(validators=[validators.DataRequired()]).bind( Form(), "a").flags
def test_no_filters(self): with pytest.raises(TypeError): FieldList(self.t, filters=[lambda x: x], _form=Form(), _name="foo")
def setUp(self): t = TextField(validators=[validators.Required()]).bind(Form(), 'a') self.flags = t.flags
def test_auto_label(self): t1 = TextField().bind(Form(), 'foo_bar') self.assertEqual(t1.label.text, 'Foo Bar') t2 = TextField('').bind(Form(), 'foo_bar') self.assertEqual(t2.label.text, '')
def setUp(self): t = StringField(validators=[validators.DataRequired()]).bind( Form(), 'a') self.flags = t.flags
def test_no_filters(self): my_filter = lambda x: x self.assertRaises(TypeError, FieldList, self.t, filters=[my_filter], _form=Form(), _name='foo')
def test_datetime_field(self): """ Test fields supports date with year < 1900 """ obj = mock.Mock() with self.app.test_request_context( headers={'Accept-Language': 'fr-FR,fr;q=0.8'}): f = fields.DateTimeField(use_naive=False).bind(Form(), 'dt') f.process_formdata(['17/06/1789 | 10:42']) # 1789: applied offset for HongKong is equal to LMT+7:37:00, # thus we compare with tzinfo=user_tz assert f.data == datetime.datetime(1789, 6, 17, 10, 42, tzinfo=USER_TZ) # UTC stored assert f.data.tzinfo is pytz.UTC # displayed in user current timezone assert f._value() == '17/06/1789 10:42' # non-naive mode: test process_data change TZ to user's TZ f.process_data(f.data) assert f.data.tzinfo is USER_TZ assert f.data == datetime.datetime(1789, 6, 17, 10, 42, tzinfo=USER_TZ) f.populate_obj(obj, 'dt') assert obj.dt == datetime.datetime(1789, 6, 17, 10, 42, tzinfo=USER_TZ) # test more recent date: offset is GMT+8 f.process_formdata(['23/01/2011 | 10:42']) assert f.data == datetime.datetime(2011, 1, 23, 2, 42, tzinfo=pytz.utc) # NAIVE mode: dates without timezone. Those are the problematic ones when # year < 1900: strptime will raise an Exception use naive dates; by # default f = fields.DateTimeField().bind(Form(), 'dt') f.process_formdata(['17/06/1789 | 10:42']) # UTC stored assert f.data.tzinfo is pytz.UTC assert f.data == datetime.datetime(1789, 6, 17, 10, 42, tzinfo=pytz.UTC) # naive stored f.populate_obj(obj, 'dt') assert obj.dt == datetime.datetime(1789, 6, 17, 10, 42)
def test_auto_label(self): t1 = StringField().bind(Form(), "foo_bar") self.assertEqual(t1.label.text, "Foo Bar") t2 = StringField("").bind(Form(), "foo_bar") self.assertEqual(t2.label.text, "")