Просмотр исходного кода

Add support for pipe character as delimiting character for bulk imports

Jeremy Stretch 6 месяцев назад
Родитель
Сommit
2004ab7a0e

+ 2 - 0
netbox/netbox/choices.py

@@ -151,12 +151,14 @@ class CSVDelimiterChoices(ChoiceSet):
     AUTO = 'auto'
     COMMA = CSV_DELIMITERS['comma']
     SEMICOLON = CSV_DELIMITERS['semicolon']
+    PIPE = CSV_DELIMITERS['pipe']
     TAB = CSV_DELIMITERS['tab']
 
     CHOICES = [
         (AUTO, _('Auto-detect')),
         (COMMA, _('Comma')),
         (SEMICOLON, _('Semicolon')),
+        (PIPE, _('Pipe')),
         (TAB, _('Tab')),
     ]
 

+ 0 - 8
netbox/netbox/constants.py

@@ -60,11 +60,3 @@ CENSOR_TOKEN_CHANGED = '***CHANGED***'
 
 # Placeholder text for empty tables
 EMPTY_TABLE_TEXT = 'No results found'
-
-# CSV delimiters
-CSV_DELIMITERS = {
-    'comma': ',',
-    'semicolon': ';',
-    'pipe': '|',
-    'tab': '\t',
-}

+ 1 - 1
netbox/netbox/preferences.py

@@ -1,9 +1,9 @@
 from django.conf import settings
 from django.utils.translation import gettext_lazy as _
 
-from netbox.constants import CSV_DELIMITERS
 from netbox.registry import registry
 from users.preferences import UserPreference
+from utilities.constants import CSV_DELIMITERS
 from utilities.paginator import EnhancedPaginator
 
 

+ 1 - 0
netbox/utilities/constants.py

@@ -69,6 +69,7 @@ HTTP_REQUEST_META_SAFE_COPY = [
 CSV_DELIMITERS = {
     'comma': ',',
     'semicolon': ';',
+    'pipe': '|',
     'tab': '\t',
 }
 

+ 1 - 1
netbox/utilities/export.py

@@ -1,7 +1,7 @@
 from django.utils.translation import gettext_lazy as _
 from django_tables2.export import TableExport as TableExport_
 
-from netbox.constants import CSV_DELIMITERS
+from utilities.constants import CSV_DELIMITERS
 
 __all__ = (
     'TableExport',

+ 1 - 1
netbox/utilities/forms/bulk_import.py

@@ -115,7 +115,7 @@ class BulkImportForm(ChangelogMessageMixin, BackgroundJobMixin, SyncedDataMixin,
                 dialect = csv.Sniffer().sniff(data.strip(), delimiters=delimiters)
             except csv.Error:
                 dialect = csv.excel
-        elif delimiter in (CSVDelimiterChoices.COMMA, CSVDelimiterChoices.SEMICOLON):
+        elif delimiter in (CSVDelimiterChoices.COMMA, CSVDelimiterChoices.SEMICOLON, CSVDelimiterChoices.PIPE):
             dialect = csv.excel
             dialect.delimiter = delimiter
         elif delimiter == CSVDelimiterChoices.TAB: