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:
@ -7,6 +7,7 @@ v2.4.6 (FUTURE)
|
|||||||
|
|
||||||
## Bug Fixes
|
## 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
|
* [#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
|
* [#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
|
* [#2485](https://github.com/digitalocean/netbox/issues/2485) - Fix cancel button when assigning a service to a device/VM
|
||||||
|
@ -4,6 +4,7 @@ import csv
|
|||||||
from io import StringIO
|
from io import StringIO
|
||||||
import json
|
import json
|
||||||
import re
|
import re
|
||||||
|
import sys
|
||||||
|
|
||||||
from django import forms
|
from django import forms
|
||||||
from django.conf import settings
|
from django.conf import settings
|
||||||
@ -150,6 +151,11 @@ def add_blank_choice(choices):
|
|||||||
return ((None, '---------'),) + tuple(choices)
|
return ((None, '---------'),) + tuple(choices)
|
||||||
|
|
||||||
|
|
||||||
|
def utf8_encoder(data):
|
||||||
|
for line in data:
|
||||||
|
yield line.encode('utf-8')
|
||||||
|
|
||||||
|
|
||||||
#
|
#
|
||||||
# Widgets
|
# Widgets
|
||||||
#
|
#
|
||||||
@ -303,7 +309,12 @@ class CSVDataField(forms.CharField):
|
|||||||
def to_python(self, value):
|
def to_python(self, value):
|
||||||
|
|
||||||
records = []
|
records = []
|
||||||
reader = csv.reader(StringIO(value))
|
|
||||||
|
# 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
|
# Consume and validate the first line of CSV data as column headers
|
||||||
headers = next(reader)
|
headers = next(reader)
|
||||||
|
Reference in New Issue
Block a user