def download_selected_searchrequests(self, request, searchrequests): response = HttpResponse(content_type='text/csv') response['Content-Disposition'] = 'attachment; filename=%s' \ % self.get_download_filename(request) writer = CsvUnicodeWriter(response, delimiter=',') meta_data = (('id', _('Search request number')), ('num_items', _('Number of items')), ('state', _('Status')), ('owner', _('Owner')), ('creation_date', _('Creation date')), ) columns = SortedDict() for k, v in meta_data: columns[k] = v writer.writerow(columns.values()) for searchrequest in searchrequests: row = columns.copy() row['id'] = searchrequest.id row['creation_date'] = format_datetime(searchrequest.date_created, 'DATETIME_FORMAT') row['state'] = searchrequest.state row['num_items'] = searchrequest.num_items row['owner'] = searchrequest.owner.email encoded_values = [six.text_type(value).encode('utf8') for value in row.values()] writer.writerow(encoded_values) return response
def download_selected_quotes(self, request, quotes): response = HttpResponse(content_type='text/csv') response['Content-Disposition'] = 'attachment; filename=%s' \ % self.get_download_filename(request) writer = CsvUnicodeWriter(response, delimiter=',') meta_data = (('id', _('Quote number')), ('search_request', _('Search request')), ('state', _('Status')), ('owner', _('Owner')), ('date_created', _('Creation date')), ('base_total_excl_tax', _('Base total (excl tax)')), ('base_total_incl_tax', _('Base total (inc tax)')), ('shipping_total_excl_tax', _('Shipping total (excl tax)')), ('shipping_total_inc_tax', _('Shipping total (incl tax)')), ('grand_total_excl_tax', _('Grand total (excl tax)')), ('grand_total_inc_tax', _('Grand total (incl tax)')), ('warranty_days', _('Warranty days')), ('shipping_days', _('Shipping days')), ) columns = SortedDict() for k, v in meta_data: columns[k] = v writer.writerow(columns.values()) for quote in quotes: row = columns.copy() row['id'] = quote.id row['search_request'] = quote.search_request row['state'] = quote.state row['owner'] = quote.owner.email row['date_created'] = format_datetime(quote.date_created, 'DATETIME_FORMAT') row['date_updated'] = format_datetime(quote.date_updated, 'DATETIME_FORMAT') row['base_total_excl_tax'] = quote.base_total_excl_tax row['base_total_incl_tax'] = quote.base_total_incl_tax row['shipping_total_excl_tax'] = quote.shipping_total_excl_tax row['shipping_total_incl_tax'] = quote.shipping_total_incl_tax row['grand_total_excl_tax'] = quote.grand_total_excl_tax row['grand_total_incl_tax'] = quote.grand_total_incl_tax row['warranty_days'] = quote.warranty_days row['shipping_days'] = quote.shipping_days encoded_values = [six.text_type(value).encode('utf8') for value in row.values()] writer.writerow(encoded_values) return response
def test_(self): s = u'ünįcodē' class unicodeobj(object): def __unicode__(self): return s rows = [[ s, s.encode('utf-8'), unicodeobj(), 123, datetime.date.today() ]] f = StringIO.StringIO() CsvUnicodeWriter(f).writerows(rows) f.seek(0) self.assertEqual( f.read().decode('utf-8-sig').strip(), u','.join( (s, s, s, u'123', unicode(datetime.date.today())))) f = StringIO.StringIO() self.assertRaises(TypeError, CsvUnicodeWriter(f).writerows, [object()])
def download_selected_orders(self, request, orders): response = HttpResponse(content_type='text/csv') response['Content-Disposition'] = 'attachment; filename=%s' \ % self.get_download_filename(request) writer = CsvUnicodeWriter(response, delimiter=',') meta_data = (('number', _('Order number')), ('value', _('Order value')), ('date', _('Date of purchase')), ('num_items', _('Number of items')), ('status', _('Order status')), ('customer', _('Customer email address')), ('shipping_address_name', _('Deliver to name')), ('billing_address_name', _('Bill to name')), ) columns = SortedDict() for k, v in meta_data: columns[k] = v writer.writerow(columns.values()) for order in orders: row = columns.copy() row['number'] = order.number row['value'] = order.total_incl_tax row['date'] = format_datetime(order.date_placed, 'DATETIME_FORMAT') row['num_items'] = order.num_items row['status'] = order.status row['customer'] = order.email if order.shipping_address: row['shipping_address_name'] = order.shipping_address.name else: row['shipping_address_name'] = '' if order.billing_address: row['billing_address_name'] = order.billing_address.name else: row['billing_address_name'] = '' encoded_values = [six.text_type(value).encode('utf8') for value in row.values()] writer.writerow(encoded_values) return response
def download_selected_orders(self, request, orders): response = HttpResponse(mimetype='text/csv') response[ 'Content-Disposition'] = 'attachment; filename=%s' % self.get_download_filename( request) writer = CsvUnicodeWriter(response, delimiter=',') meta_data = ( ('number', _('Order number')), ('value', _('Order value')), ('date', _('Date of purchase')), ('num_items', _('Number of items')), ('status', _('Order status')), ('customer', _('Customer email address')), ('shipping_address', _('Shipping address')), ('billing_address', _('Billing address')), ) columns = SortedDict() for k, v in meta_data: columns[k] = v writer.writerow(columns.values()) for order in orders: row = columns.copy() row['number'] = order.number row['value'] = order.total_incl_tax row['date'] = format_date(order.date_placed, 'DATETIME_FORMAT') row['num_items'] = order.num_items row['status'] = order.status row['customer'] = order.email if order.shipping_address: row['shipping_address'] = order.shipping_address else: row['shipping_address'] = '' if order.billing_address: row['billing_address'] = order.billing_address else: row['billing_address'] = '' encoded_values = [ unicode(value).encode('utf8') for value in row.values() ] writer.writerow(encoded_values) return response
def get_csv_writer(self, file_handle, **kwargs): return CsvUnicodeWriter(file_handle, **kwargs)