def testIdentity(self): """Tests if a dict with values equal to keys is returned """ target = {"wan": 1, "too": 2, "tree": 3} expected_dict = {"wan": "wan", "too": "too", "tree": "tree"} self.assertEqual(dicts.identity(target), expected_dict) target = {} expected_dict = {} self.assertEqual(dicts.identity(target), expected_dict)
def testIdentity(self): """Tests if a dict with values equal to keys is returned """ target = {'wan': 1, 'too': 2, 'tree': 3} expected_dict = {'wan': 'wan', 'too': 'too', 'tree': 'tree'} self.assertEqual(dicts.identity(target), expected_dict) target = {} expected_dict = {} self.assertEqual(dicts.identity(target), expected_dict)
def saveDataToCSV(csv_filename, data, key_order): """Saves data in order into CSV file. This is a helper function used with acceptedStudentsCSVExport(). """ import csv import StringIO from soc.logic import dicts file_handler = StringIO.StringIO() writer = csv.DictWriter(file_handler, key_order, dialect='excel') writer.writerow(dicts.identity(key_order)) # encode the data to UTF-8 to ensure compatibiliy for row_dict in data: for key in row_dict.keys(): value = row_dict[key] if isinstance(value, basestring): row_dict[key] = value.encode("utf-8") else: row_dict[key] = str(value) writer.writerow(row_dict) csv_data = file_handler.getvalue() csv_file = open(csv_filename, 'w') csv_file.write(csv_data) csv_file.close()
def csv(self, request, data, filename, params, key_order=None): """Returns data as a csv file. If key_order is set data should be a sequence of dicts, otherwise data should be a sequence of lists, see csv.writer and csv.DictWriter for more information. """ params = params.copy() params['export_extension'] = '.csv' params['export_content_type'] = 'text/csv' # fieldnames = params['csv_fieldnames'] file_handler = StringIO.StringIO() if key_order: writer = csv.DictWriter(file_handler, key_order, dialect='excel') writer.writerow(dicts.identity(key_order)) # encode the data to UTF-8 to ensure compatibiliy for row_dict in data: for key in row_dict.keys(): value = row_dict[key] if isinstance(value, basestring): row_dict[key] = value.encode("utf-8") else: row_dict[key] = str(value) writer.writerow(row_dict) else: writer = csv.writer(file_handler, dialect='excel') # encode the data to UTF-8 to ensure compatibiliy for row in data: if row: writer.writerow(row.encode("utf-8")) else: writer.writerow(row) data = file_handler.getvalue() return self.download(request, data, filename, params)
def saveDataToCSV(csv_filename, data, key_order): """Saves data in order into CSV file. This is a helper function used for exporting CSV data. Args: csv_filename: The name of the file where to save the CSV data data: the data dict to write to CSV key_order: the order in which to export the data in data dict """ import csv import StringIO from soc.logic import dicts file_handler = StringIO.StringIO() # ignore the extra data writer = csv.DictWriter(file_handler, key_order, extrasaction='ignore', dialect='excel') writer.writerow(dicts.identity(key_order)) # encode the data to UTF-8 to ensure compatibiliy for row_dict in data: for key in row_dict.keys(): value = row_dict[key] if isinstance(value, basestring): row_dict[key] = value.encode("utf-8") else: row_dict[key] = str(value) writer.writerow(row_dict) csv_data = file_handler.getvalue() csv_file = open(csv_filename, 'w') csv_file.write(csv_data) csv_file.close()