1
0
mirror of https://github.com/django/django.git synced 2025-11-07 07:15:35 +00:00

Fixed #18843 -- Replaced more special chars in column names (inspectdb)

Thanks airstrike for the report.
This commit is contained in:
Claude Paroz
2012-08-23 22:50:25 +02:00
parent 395c6083af
commit f5ea730dac
3 changed files with 16 additions and 11 deletions

View File

@@ -1,6 +1,7 @@
from __future__ import unicode_literals
import keyword
import re
from optparse import make_option
from django.core.management.base import NoArgsCommand, CommandError
@@ -142,18 +143,16 @@ class Command(NoArgsCommand):
else:
field_params['db_column'] = col_name
if ' ' in new_name:
new_name = new_name.replace(' ', '_')
field_notes.append('Field renamed to remove spaces.')
if '-' in new_name:
new_name = new_name.replace('-', '_')
field_notes.append('Field renamed to remove dashes.')
new_name, num_repl = re.subn(r'\W', '_', new_name)
if num_repl > 0:
field_notes.append('Field renamed to remove unsuitable characters.')
if new_name.find('__') >= 0:
while new_name.find('__') >= 0:
new_name = new_name.replace('__', '_')
field_notes.append("Field renamed because it contained more than one '_' in a row.")
if col_name.lower().find('__') >= 0:
# Only add the comment if the double underscore was in the original name
field_notes.append("Field renamed because it contained more than one '_' in a row.")
if new_name.startswith('_'):
new_name = 'field%s' % new_name