Copied BaseDatabaseCreation._digest() to SchemaEditor to remove dependency.
refs #22340.
This commit is contained in:
parent
93d73dac91
commit
478d6a9503
@ -1,6 +1,5 @@
|
|||||||
import hashlib
|
import hashlib
|
||||||
|
|
||||||
from django.db.backends.creation import BaseDatabaseCreation
|
|
||||||
from django.db.backends.utils import truncate_name
|
from django.db.backends.utils import truncate_name
|
||||||
from django.db.models.fields.related import ManyToManyField
|
from django.db.models.fields.related import ManyToManyField
|
||||||
from django.db.transaction import atomic
|
from django.db.transaction import atomic
|
||||||
@ -106,6 +105,17 @@ class BaseDatabaseSchemaEditor(object):
|
|||||||
def quote_name(self, name):
|
def quote_name(self, name):
|
||||||
return self.connection.ops.quote_name(name)
|
return self.connection.ops.quote_name(name)
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def _digest(cls, *args):
|
||||||
|
"""
|
||||||
|
Generates a 32-bit digest of a set of arguments that can be used to
|
||||||
|
shorten identifying names.
|
||||||
|
"""
|
||||||
|
h = hashlib.md5()
|
||||||
|
for arg in args:
|
||||||
|
h.update(force_bytes(arg))
|
||||||
|
return h.hexdigest()[:8]
|
||||||
|
|
||||||
# Field <-> database mapping functions
|
# Field <-> database mapping functions
|
||||||
|
|
||||||
def column_sql(self, model, field, include_default=False):
|
def column_sql(self, model, field, include_default=False):
|
||||||
@ -772,7 +782,7 @@ class BaseDatabaseSchemaEditor(object):
|
|||||||
# If there is just one column in the index, use a default algorithm from Django
|
# If there is just one column in the index, use a default algorithm from Django
|
||||||
if len(column_names) == 1 and not suffix:
|
if len(column_names) == 1 and not suffix:
|
||||||
return truncate_name(
|
return truncate_name(
|
||||||
'%s_%s' % (model._meta.db_table, BaseDatabaseCreation._digest(column_names[0])),
|
'%s_%s' % (model._meta.db_table, self._digest(column_names[0])),
|
||||||
self.connection.ops.max_name_length()
|
self.connection.ops.max_name_length()
|
||||||
)
|
)
|
||||||
# Else generate the name for the index using a different algorithm
|
# Else generate the name for the index using a different algorithm
|
||||||
|
Loading…
x
Reference in New Issue
Block a user