Add support for pipe character as delimiting character for bulk imports

This commit is contained in:
Jeremy Stretch 2025-08-13 08:38:57 -04:00
parent f3ecf94393
commit 2004ab7a0e
6 changed files with 6 additions and 11 deletions

View File

@ -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')),
]

View File

@ -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',
}

View File

@ -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

View File

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

View File

@ -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',

View File

@ -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: