def test_widget_value_from_datadict(self): w = CSVWidget() data = {'price': None} result = w.value_from_datadict(data, {}, 'price') self.assertEqual(result, None) data = {'price': '1'} result = w.value_from_datadict(data, {}, 'price') self.assertEqual(result, ['1']) data = {'price': '1,2'} result = w.value_from_datadict(data, {}, 'price') self.assertEqual(result, ['1', '2']) data = {'price': '1,,2'} result = w.value_from_datadict(data, {}, 'price') self.assertEqual(result, ['1', '', '2']) data = {'price': '1,'} result = w.value_from_datadict(data, {}, 'price') self.assertEqual(result, ['1', '']) data = {'price': ','} result = w.value_from_datadict(data, {}, 'price') self.assertEqual(result, ['', '']) data = {'price': ''} result = w.value_from_datadict(data, {}, 'price') self.assertEqual(result, []) result = w.value_from_datadict({}, {}, 'price') self.assertEqual(result, None)
def test_widget(self): w = CSVWidget() self.assertHTMLEqual( w.render('price', None), """ <input type="text" name="price" />""") self.assertHTMLEqual( w.render('price', ''), """ <input type="text" name="price" />""") self.assertHTMLEqual( w.render('price', []), """ <input type="text" name="price" />""") self.assertHTMLEqual( w.render('price', '1'), """ <input type="text" name="price" value="1" />""") self.assertHTMLEqual( w.render('price', '1,2'), """ <input type="text" name="price" value="1,2" />""") self.assertHTMLEqual( w.render('price', ['1', '2']), """ <input type="text" name="price" value="1,2" />""") self.assertHTMLEqual( w.render('price', [1, 2]), """ <input type="text" name="price" value="1,2" />""")
def test_derived_widget(self): with self.assertRaises(AssertionError) as excinfo: BaseCSVField(widget=RangeWidget()) msg = str(excinfo.exception) self.assertIn("'BaseCSVField.widget' must be a widget class", msg) self.assertIn("RangeWidget", msg) widget = CSVWidget() field = BaseCSVField(widget=widget) self.assertIs(field.widget, widget) field = BaseCSVField(widget=CSVWidget) self.assertIsInstance(field.widget, CSVWidget) field = BaseCSVField(widget=forms.Select) self.assertIsInstance(field.widget, forms.Select) self.assertIsInstance(field.widget, BaseCSVWidget)
class PublicDataFileFilter(FilterSet): """ A FilterSet that maps member_id and username to less verbose names. """ created = StartEndDateFromToRangeFilter() member_id = CharFilter(name='user__member__member_id') username = CharFilter(name='user__username') source = MultipleChoiceFilter( choices=get_source_labels_and_names_including_dynamic, widget=CSVWidget()) # don't filter by source if no sources are specified; this improves speed source.always_filter = False strict = STRICTNESS.RAISE_VALIDATION_ERROR class Meta: # noqa: D101 model = DataFile fields = ('created', 'source', 'username', 'member_id')
def test_widget(self): w = CSVWidget() self.assertHTMLEqual(w.render('price', None), """ <input type="text" name="price" />""") self.assertHTMLEqual(w.render('price', ''), """ <input type="text" name="price" />""") self.assertHTMLEqual(w.render('price', []), """ <input type="text" name="price" />""") self.assertHTMLEqual(w.render('price', '1'), """ <input type="text" name="price" value="1" />""") self.assertHTMLEqual(w.render('price', '1,2'), """ <input type="text" name="price" value="1,2" />""") self.assertHTMLEqual(w.render('price', ['1', '2']), """ <input type="text" name="price" value="1,2" />""") self.assertHTMLEqual(w.render('price', [1, 2]), """ <input type="text" name="price" value="1,2" />""")
class LegacyPublicDataFileFilter(FilterSet): """ A FilterSet that maps member_id and username to less verbose names. """ created = StartEndDateFromToRangeFilter() member_id = CharFilter(field_name="user__member__member_id") username = CharFilter(field_name="user__username") source = MultipleChoiceFilter( choices=get_source_labels_and_names_including_dynamic, widget=CSVWidget()) # don't filter by source if no sources are specified; this improves speed source.always_filter = False class Meta: # noqa: D101 """ Metaclass """ model = DataFile fields = ("created", "source", "username", "member_id")