def test_success(self): with user_grant_permission(self.user, ['auth.change_user', 'auth.adminactions_export_user']): res = self.app.get('/', user='******') res = res.click('Users') form = res.forms['changelist-form'] form['action'] = self.action_name # form.set('_selected_action', True, 0) # form.set('_selected_action', True, 1) # form.set('_selected_action', True, 2) self._select_rows(form) res = form.submit() res.form['header'] = 1 res.form['columns'] = ['id', 'username', 'first_name' ''] res = res.form.submit('apply') io = six.BytesIO(res.body) io.seek(0) w = xlrd.open_workbook(file_contents=io.read()) sheet = w.sheet_by_index(0) self.assertEquals(sheet.cell_value(0, 0), u'#') self.assertEquals(sheet.cell_value(0, 1), u'ID') self.assertEquals(sheet.cell_value(0, 2), u'username') self.assertEquals(sheet.cell_value(0, 3), u'first name') self.assertEquals(sheet.cell_value(1, 1), 1.0) self.assertEquals(sheet.cell_value(1, 2), u'sax') self.assertEquals(sheet.cell_value(2, 2), u'user')
def test_use_display_ko(self): with user_grant_permission(self.user, ['demo.change_demomodel', 'demo.adminactions_export_demomodel']): res = self.app.get('/', user='******') res = res.click('Demo models') form = res.forms['changelist-form'] form['action'] = self.action_name self._select_rows(form) res = form.submit() res.form['header'] = 1 res.form['columns'] = ['char', 'text', 'bigint', 'choices' ''] res = res.form.submit('apply') io = six.BytesIO(res.body) io.seek(0) w = xlrd.open_workbook(file_contents=io.read()) sheet = w.sheet_by_index(0) self.assertEquals(sheet.cell_value(0, 1), u'Chäř') self.assertEquals(sheet.cell_value(0, 2), u'bigint') self.assertEquals(sheet.cell_value(0, 3), u'text') self.assertEquals(sheet.cell_value(0, 4), u'choices') self.assertEquals(sheet.cell_value(1, 1), u'Pizzä ïs Gööd') self.assertEquals(sheet.cell_value(1, 2), 333333333.0) self.assertEquals(sheet.cell_value(1, 3), u'lorem ipsum') self.assertEquals(sheet.cell_value(1, 4), 2.0)
def test_use_display_ko(self): with user_grant_permission( self.user, ['demo.change_demomodel', 'demo.adminactions_export_demomodel']): res = self.app.get('/', user='******') res = res.click('Demo models') form = res.forms['changelist-form'] form['action'] = self.action_name self._select_rows(form) res = form.submit() res.form['header'] = 1 res.form['columns'] = ['char', 'text', 'bigint', 'choices' ''] res = res.form.submit('apply') io = six.BytesIO(res.body) io.seek(0) w = xlrd.open_workbook(file_contents=io.read()) sheet = w.sheet_by_index(0) self.assertEquals(sheet.cell_value(0, 1), u'Chäř') self.assertEquals(sheet.cell_value(0, 2), u'bigint') self.assertEquals(sheet.cell_value(0, 3), u'text') self.assertEquals(sheet.cell_value(0, 4), u'choices') self.assertEquals(sheet.cell_value(1, 1), u'Pizzä ïs Gööd') self.assertEquals(sheet.cell_value(1, 2), 333333333.0) self.assertEquals(sheet.cell_value(1, 3), u'lorem ipsum') self.assertEquals(sheet.cell_value(1, 4), 2.0)
def test_issue_93(self): # default date(time) format in XLS export doesn't import well on excel with user_grant_permission( self.user, ['demo.change_demomodel', 'demo.adminactions_export_demomodel']): res = self.app.get('/', user='******') res = res.click('Demo models') form = res.forms['changelist-form'] form['action'] = self.action_name self._select_rows(form) res = form.submit() res.form['header'] = 1 res.form['columns'] = [ 'date', ] res = res.form.submit('apply') io = six.BytesIO(res.body) io.seek(0) w = xlrd.open_workbook(file_contents=io.read(), formatting_info=True) sheet = w.sheet_by_index(0) cell = sheet.cell(1, 1) fmt = w.xf_list[cell.xf_index] format_key = fmt.format_key format = w.format_map[format_key] # gets a Format object self.assertEqual(cell.value, 41303.0) self.assertEqual(cell.ctype, 3) self.assertEqual(format.format_str, u'd/m/Y')
def test_success(self): with user_grant_permission( self.user, ['auth.change_user', 'auth.adminactions_export_user']): res = self.app.get('/', user='******') res = res.click('Users') form = res.forms['changelist-form'] form['action'] = self.action_name # form.set('_selected_action', True, 0) # form.set('_selected_action', True, 1) # form.set('_selected_action', True, 2) self._select_rows(form) res = form.submit() res.form['header'] = 1 res.form['columns'] = ['id', 'username', 'first_name' ''] res = res.form.submit('apply') io = six.BytesIO(res.body) io.seek(0) w = xlrd.open_workbook(file_contents=io.read()) sheet = w.sheet_by_index(0) self.assertEquals(sheet.cell_value(0, 0), u'#') self.assertEquals(sheet.cell_value(0, 1), u'ID') self.assertEquals(sheet.cell_value(0, 2), u'username') self.assertEquals(sheet.cell_value(0, 3), u'first name') self.assertEquals(sheet.cell_value(1, 1), 1.0) self.assertEquals(sheet.cell_value(1, 2), u'sax') self.assertEquals(sheet.cell_value(2, 2), u'user')
def test_faster_export(self): # generate 3k users start = time.time() user_count = User.objects.count() User.objects.bulk_create([User( username='******' % i) for i in range(3000)]) # print('created 3k users in %.1f seconds' % (time.time() - start)) self.assertEqual(User.objects.count(), 3000 + user_count) start = time.time() with user_grant_permission(self.user, [ 'auth.change_user', 'auth.adminactions_export_user']): res = self.app.get('/', user='******') res = res.click('Users') form = res.forms['changelist-form'] form['action'] = self.action_name form['select_across'] = 1 self._select_rows(form) res = form.submit() res.form['header'] = 1 res = res.form.submit('apply') res_time = (time.time() - start) # print('Response returned in %.1f seconds' % res_time) io = six.BytesIO(res.body) io.seek(0) w = xlrd.open_workbook(file_contents=io.read()) sheet = w.sheet_by_index(0) self.assertEqual(sheet.nrows, 3000 + user_count + 1) self.assertLessEqual(res_time, 6.5, "Response should return under 6.5 " "seconds, was %.2f" % res_time)
def test_issue_93(self): # default date(time) format in XLS export doesn't import well on excel with user_grant_permission(self.user, ['demo.change_demomodel', 'demo.adminactions_export_demomodel']): res = self.app.get('/', user='******') res = res.click('Demo models') form = res.forms['changelist-form'] form['action'] = self.action_name self._select_rows(form) res = form.submit() res.form['header'] = 1 res.form['columns'] = ['date', ] res = res.form.submit('apply') io = six.BytesIO(res.body) io.seek(0) w = xlrd.open_workbook(file_contents=io.read(), formatting_info=True) sheet = w.sheet_by_index(0) cell = sheet.cell(1, 1) fmt = w.xf_list[cell.xf_index] format_key = fmt.format_key format = w.format_map[format_key] # gets a Format object self.assertEqual(cell.value, 41303.0) self.assertEqual(cell.ctype, 3) self.assertEqual(format.format_str, u'd/m/Y')
def read(self, n=-1): data = self.stream.read(n) # FIXME: Support odd length reads assert len(data) % 2 == 0 io = BytesIO() for i in range(0, len(data), 2): io.write(data[i + 1:i + 2]) io.write(data[i:i + 1]) io.seek(0) return io.getvalue()
def read(self, n=-1): data = self.stream.read(n) # FIXME: Support odd length reads assert len(data) % 2 == 0 io = BytesIO() for i in range(0, len(data), 2): io.write(data[i + 1 : i + 2]) io.write(data[i : i + 1]) io.seek(0) return io.getvalue()
def read_body(io, expected_size): """ Read a (malformed) HTTP body. Returns: A (body: bytes, is_malformed: bool) tuple. """ body_start = io.tell() try: content = b"".join(http1.read_body(io, expected_size, None)) if io.read(): # leftover? raise HttpException() return content, False except HttpException: io.seek(body_start) return io.read(), True
def test_utf8_writer(self): writer = converters.getwriter('utf-8') io = writer(self.io) io.write(self.u_japanese + '\n') io.seek(0) result = io.read().strip() tools.eq_(result, self.utf8_japanese) io.seek(0) io.truncate(0) io.write(self.euc_jp_japanese + b'\n') io.seek(0) result = io.read().strip() tools.eq_(result, self.euc_jp_japanese) io.seek(0) io.truncate(0) io.write(self.utf8_japanese + b'\n') io.seek(0) result = io.read().strip() tools.eq_(result, self.utf8_japanese)
def test_faster_export(self): # generate 3k users start = time.time() user_count = User.objects.count() User.objects.bulk_create( [User(username='******' % i) for i in range(3000)]) # print('created 3k users in %.1f seconds' % (time.time() - start)) self.assertEqual(User.objects.count(), 3000 + user_count) start = time.time() with user_grant_permission( self.user, ['auth.change_user', 'auth.adminactions_export_user']): res = self.app.get('/', user='******') res = res.click('Users') form = res.forms['changelist-form'] form['action'] = self.action_name form['select_across'] = 1 self._select_rows(form) res = form.submit() res.form['header'] = 1 res = res.form.submit('apply') res_time = (time.time() - start) # print('Response returned in %.1f seconds' % res_time) io = six.BytesIO(res.body) io.seek(0) w = xlrd.open_workbook(file_contents=io.read()) sheet = w.sheet_by_index(0) self.assertEqual(sheet.nrows, 3000 + user_count + 1) self.assertLessEqual( res_time, 6.5, "Response should return under 6.5 " "seconds, was %.2f" % res_time)
def StringIOContents(io): io.seek(0) return io.read()
def rewind0(io): io.seek(0) return 0
def __init__(self, io: BinaryIO): orig_offset = io.tell() size = io.seek(0, os.SEEK_END) io.seek(orig_offset, os.SEEK_SET) super().__init__(io, size)