diff options
| author | Tim Graham <timograham@gmail.com> | 2014-12-30 11:19:59 -0500 |
|---|---|---|
| committer | Tim Graham <timograham@gmail.com> | 2014-12-31 08:33:34 -0500 |
| commit | 478d6a950361ef541ff40b51b7c04439647e0492 (patch) | |
| tree | 03ffa46fcce385ea998ee7451ec2ed661498e5b8 | |
| parent | 93d73dac91104fd82d44b0dd4521cfa4f31e02aa (diff) | |
Copied BaseDatabaseCreation._digest() to SchemaEditor to remove dependency.
refs #22340.
| -rw-r--r-- | django/db/backends/schema.py | 14 |
1 files changed, 12 insertions, 2 deletions
diff --git a/django/db/backends/schema.py b/django/db/backends/schema.py index 63382adace..40db888e50 100644 --- a/django/db/backends/schema.py +++ b/django/db/backends/schema.py @@ -1,6 +1,5 @@ import hashlib -from django.db.backends.creation import BaseDatabaseCreation from django.db.backends.utils import truncate_name from django.db.models.fields.related import ManyToManyField from django.db.transaction import atomic @@ -106,6 +105,17 @@ class BaseDatabaseSchemaEditor(object): def quote_name(self, 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 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 len(column_names) == 1 and not suffix: 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() ) # Else generate the name for the index using a different algorithm |
