1
0
mirror of https://github.com/netbox-community/netbox.git synced 2024-05-10 07:54:54 +00:00

Fixes #2393: Fix Unicode support for CSV import under Python 2

This commit is contained in:
Jeremy Stretch
2018-10-05 15:33:29 -04:00
parent 841db3b0c2
commit 4c37628784
2 changed files with 13 additions and 1 deletions

View File

@ -7,6 +7,7 @@ v2.4.6 (FUTURE)
## Bug Fixes
* [#2393](https://github.com/digitalocean/netbox/issues/2393) - Fix Unicode support for CSV import under Python 2
* [#2483](https://github.com/digitalocean/netbox/issues/2483) - Set max item count of API-populated form fields to MAX_PAGE_SIZE
* [#2484](https://github.com/digitalocean/netbox/issues/2484) - Local config context not available on the Virtual Machine Edit Form
* [#2485](https://github.com/digitalocean/netbox/issues/2485) - Fix cancel button when assigning a service to a device/VM

View File

@ -4,6 +4,7 @@ import csv
from io import StringIO
import json
import re
import sys
from django import forms
from django.conf import settings
@ -150,6 +151,11 @@ def add_blank_choice(choices):
return ((None, '---------'),) + tuple(choices)
def utf8_encoder(data):
for line in data:
yield line.encode('utf-8')
#
# Widgets
#
@ -303,6 +309,11 @@ class CSVDataField(forms.CharField):
def to_python(self, value):
records = []
# Python 2 hack for Unicode support in the CSV reader
if sys.version_info[0] < 3:
reader = csv.reader(utf8_encoder(StringIO(value)))
else:
reader = csv.reader(StringIO(value))
# Consume and validate the first line of CSV data as column headers