def test_valid_extra_parameters(self): '''Should validate with extra parameters''' form = DatatablesForm({ 'sEcho': '1', 'iColumns': '5', 'iDisplayStart': '0', 'iDisplayLength': '10', 'sSearch': '', 'bRegex': 'false', 'iSortingCols': '1', 'mDataProp_0': '0', 'mDataProp_1': '1', 'mDataProp_2': '2', 'mDataProp_3': '3', 'mDataProp_4': '4', 'sSearch_0': 's0', 'sSearch_1': 's1', 'sSearch_2': 's2', 'sSearch_3': 's3', 'sSearch_4': 's4', 'bRegex_0': 'false', 'bRegex_1': 'false', 'bRegex_2': 'false', 'bRegex_3': 'false', 'bRegex_4': 'false', 'bSearchable_0': 'true', 'bSearchable_1': 'true', 'bSearchable_2': 'true', 'bSearchable_3': 'true', 'bSearchable_4': 'true', 'bSortable_0': 'true', 'bSortable_1': 'true', 'bSortable_2': 'true', 'bSortable_3': 'true', 'bSortable_4': 'true', 'iSortCol_0': '0', 'sSortDir_0': 'asc', }) self.assertTrue(form.is_valid()) for idx in xrange(5): self.assertEqual(form.cleaned_data['mDataProp_%s' % idx], '%s' % idx) self.assertEqual(form.cleaned_data['sSearch_%s' % idx], 's%s' % idx) self.assertEqual(form.cleaned_data['bRegex_%s' % idx], False) self.assertEqual(form.cleaned_data['bSearchable_%s' % idx], True) self.assertEqual(form.cleaned_data['bSortable_%s' % idx], True) self.assertEqual(form.cleaned_data['iSortCol_0'], 0) self.assertEqual(form.cleaned_data['sSortDir_0'], 'asc')
def process_dt_response(self, data): # Switch between server-side and client-side mode. Given that # 'iColumns' is a needed server-side parameter, if it doesn't exist we # can safely switch to client-side. if 'iColumns' in data: self.generate_search_sets(data) self.form = DatatablesForm(data) if not self.form.is_valid(): return HttpResponseBadRequest() else: self.form = None self.ServerSide = False self.qs = self.get_queryset() self.set_object_list() return self.render_to_response(self.form)
def test_dyanmic_extra_parameters(self): '''Should dynamiclly add extra parameters''' form = DatatablesForm({ 'sEcho': '1', 'iColumns': '5', 'iDisplayStart': '0', 'iDisplayLength': '10', 'sSearch': '', 'bRegex': 'false', 'iSortingCols': '2', }) for i in xrange(5): self.assertTrue('mDataProp_%s' % i in form.fields) self.assertTrue(isinstance(form['mDataProp_%s' % i].field, forms.CharField)) self.assertFalse(form['mDataProp_%s' % i].field.required) self.assertTrue('sSearch_%s' % i in form.fields) self.assertTrue(isinstance(form['sSearch_%s' % i].field, forms.CharField)) self.assertFalse(form['sSearch_%s' % i].field.required) self.assertTrue('bRegex_%s' % i in form.fields) self.assertTrue(isinstance(form['bRegex_%s' % i].field, forms.BooleanField)) self.assertFalse(form['bRegex_%s' % i].field.required) self.assertTrue('bSearchable_%s' % i in form.fields) self.assertTrue(isinstance(form['bSearchable_%s' % i].field, forms.BooleanField)) self.assertFalse(form['bSearchable_%s' % i].field.required) self.assertTrue('bSortable_%s' % i in form.fields) self.assertTrue(isinstance(form['bSortable_%s' % i].field, forms.BooleanField)) self.assertFalse(form['bSortable_%s' % i].field.required) for i in xrange(2): self.assertTrue('iSortCol_%s' % i in form.fields) self.assertTrue(isinstance(form['iSortCol_%s' % i].field, forms.IntegerField)) self.assertTrue(form['iSortCol_%s' % i].field.required) self.assertTrue('sSortDir_%s' % i in form.fields) self.assertTrue(isinstance(form['sSortDir_%s' % i].field, forms.ChoiceField)) self.assertTrue(form['sSortDir_%s' % i].field.required) self.assertFalse('iSortCol_2' in form.fields)
def test_base_parameters(self): '''Should validate base parameters''' form = DatatablesForm({ 'sEcho': '1', 'iColumns': '5', 'iDisplayStart': '0', 'iDisplayLength': '10', 'sSearch': '', 'bRegex': 'false', 'iSortingCols': '1', 'iSortCol_0': '0', 'sSortDir_0': 'asc', }) self.assertTrue(form.is_valid()) self.assertEqual(form.cleaned_data['sEcho'], '1') self.assertEqual(form.cleaned_data['iColumns'], 5) self.assertEqual(form.cleaned_data['iDisplayStart'], 0) self.assertEqual(form.cleaned_data['iDisplayLength'], 10) self.assertEqual(form.cleaned_data['sSearch'], '') self.assertEqual(form.cleaned_data['bRegex'], False) self.assertEqual(form.cleaned_data['iSortingCols'], 1)
def process_dt_response(self, data): self.form = DatatablesForm(data) if self.form.is_valid(): #flush_transaction() self.object_list = self.get_queryset().values( *self.get_db_fields()) #print 'get_queryset: %s' % str(self.get_queryset) self.field_choices_dict = get_field_choices( self.get_queryset()[:1], self.get_db_fields()) #field_choices_dict={} #print '####################################################################################################################' #print '###object_list: %s, type: %s' % (self.object_list, type(self.object_list)) #self.object_list = get_object_list_display(self.object_list, field_choices_dict) #print '********************************************************************************************************************' #print '***object_list: %s, type: %s' % (self.object_list, type(self.object_list)) #print 'object_list: %s' % str(object_list) #print 'field_choices_dict: %s' % str(field_choices_dict) #print 'object_list_display: %s' % str(object_list_display) #self.object_list = self.get_queryset().values(*self.get_db_fields()) #self.object_list = self.object_list_display return self.render_to_response(self.form) else: return HttpResponseBadRequest()