Django

Code

Changeset 5984

Show
Ignore:
Timestamp:
08/20/07 00:00:52 (1 year ago)
Author:
adrian
Message:

newforms-admin: Merged to [5983]

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • django/branches/newforms-admin

    • Property svnmerge-integrated changed from /django/trunk:1-4345,4350-4357,4359-4365,4371-4372,4374-4377,4380-4386,4388,4390-4391,4400-4402,4404-4408,4410,4412-4419,4426-4427,4430-4432,4434,4441,4443-4444,4446-4447,4450,4452-4453,4455-4458,4476,4503,4546,4564-4569,4580-4586,4617,4630,4641-5916 to /django/trunk:1-4345,4350-4357,4359-4365,4371-4372,4374-4377,4380-4386,4388,4390-4391,4400-4402,4404-4408,4410,4412-4419,4426-4427,4430-4432,4434,4441,4443-4444,4446-4447,4450,4452-4453,4455-4458,4476,4503,4546,4564-4569,4580-4586,4617,4630,4641-5983
  • django/branches/newforms-admin/AUTHORS

    r5931 r5984  
    104104    Andy Dustman <farcepest@gmail.com> 
    105105    Clint Ecker 
     106    Nick Efford <nick@efford.org> 
    106107    eibaan@gmail.com 
    107108    enlight 
     
    198199    michael.mcewan@gmail.com 
    199200    mikko@sorl.net 
     201    Slawek Mikula <slawek dot mikula at gmail dot com> 
    200202    mitakummaa@gmail.com 
    201203    mmarshall 
  • django/branches/newforms-admin/django/conf/global_settings.py

    r5918 r5984  
    2626 
    2727# Local time zone for this installation. All choices can be found here: 
    28 # http://www.postgresql.org/docs/8.1/static/datetime-keywords.html#DATETIME-TIMEZONE-SET-TABLE 
     28# http://en.wikipedia.org/wiki/List_of_tz_zones_by_name (although not all 
     29# systems may support all possibilities). 
    2930TIME_ZONE = 'America/Chicago' 
    3031 
  • django/branches/newforms-admin/django/conf/locale/es/LC_MESSAGES/django.po

    r5918 r5984  
    77"Project-Id-Version: django\n" 
    88"Report-Msgid-Bugs-To: \n" 
    9 "POT-Creation-Date: 2007-08-13 11:29-0400\n" 
     9"POT-Creation-Date: 2007-08-17 15:35-0400\n" 
    1010"PO-Revision-Date: 2007-07-14 13:00-0500\n" 
    1111"Last-Translator: Mario Gonzalez <gonzalemario @t gmail.com>\n" 
     
    2323#: db/models/manipulators.py:310 contrib/admin/views/main.py:342 
    2424#: contrib/admin/views/main.py:344 contrib/admin/views/main.py:346 
     25#: core/validators.py:275 
    2526msgid "and" 
    2627msgstr "y" 
     
    511512msgstr ", %(number)d %(type)s" 
    512513 
     514#: utils/text.py:127 
     515msgid "or" 
     516msgstr "o" 
     517 
    513518#: utils/dateformat.py:41 
    514519msgid "p.m." 
     
    766771msgstr "nueve" 
    767772 
    768 #: contrib/auth/views.py:41 
     773#: contrib/auth/views.py:47 
    769774msgid "Logged out" 
    770775msgstr "Sesión terminada" 
  • django/branches/newforms-admin/django/conf/project_template/settings.py

    r5828 r5984  
    1818 
    1919# Local time zone for this installation. Choices can be found here: 
    20 # http://www.postgresql.org/docs/8.1/static/datetime-keywords.html#DATETIME-TIMEZONE-SET-TABLE 
    21 # although not all variations may be possible on all operating systems. 
     20# http://en.wikipedia.org/wiki/List_of_tz_zones_by_name 
     21# although not all choices may be avilable on all operating systems. 
    2222# If running in a Windows environment this must be set to the same as your 
    2323# system time zone. 
  • django/branches/newforms-admin/django/contrib/admin/templates/admin/index.html

    r4642 r5984  
    6060            <ul class="actionlist"> 
    6161            {% for entry in admin_log %} 
    62                 <li class="{% if entry.is_addition %}addlink{% endif %}{% if entry.is_change %}changelink{% endif %}{% if entry.is_deletion %}deletelink{% endif %}">{% if not entry.is_deletion %}<a href="{{ entry.get_admin_url }}">{% endif %}{{ entry.object_repr|escape }}{% if not entry.is_deletion %}</a>{% endif %}<br /><span class="mini quiet">{{ entry.content_type.name|capfirst|escape }}</span></li> 
     62            <li class="{% if entry.is_addition %}addlink{% endif %}{% if entry.is_change %}changelink{% endif %}{% if entry.is_deletion %}deletelink{% endif %}">{% if not entry.is_deletion %}<a href="{{ entry.get_admin_url }}">{% endif %}{{ entry.object_repr|escape }}{% if not entry.is_deletion %}</a>{% endif %}<br /><span class="mini quiet">{% filter capfirst|escape %}{% trans entry.content_type.name %}{% endfilter %}</span></li> 
    6363            {% endfor %} 
    6464            </ul> 
  • django/branches/newforms-admin/django/contrib/auth/models.py

    r5828 r5984  
    11from django.core import validators 
    22from django.core.exceptions import ImproperlyConfigured 
    3 from django.db import backend, connection, models 
     3from django.db import connection, models 
    44from django.contrib.contenttypes.models import ContentType 
    55from django.utils.encoding import smart_str 
     
    189189            #         AND ct."id" = p."content_type_id" 
    190190            #         AND ug."user_id" = %s, [self.id]) 
     191            qn = connection.ops.quote_name 
    191192            sql = """ 
    192193                SELECT ct.%s, p.%s 
     
    196197                    AND ct.%s = p.%s 
    197198                    AND ug.%s = %%s""" % ( 
    198                 backend.quote_name('app_label'), backend.quote_name('codename'), 
    199                 backend.quote_name('auth_permission'), backend.quote_name('auth_group_permissions'), 
    200                 backend.quote_name('auth_user_groups'), backend.quote_name('django_content_type'), 
    201                 backend.quote_name('id'), backend.quote_name('permission_id'), 
    202                 backend.quote_name('group_id'), backend.quote_name('group_id'), 
    203                 backend.quote_name('id'), backend.quote_name('content_type_id'), 
    204                 backend.quote_name('user_id'),) 
     199                qn('app_label'), qn('codename'), 
     200                qn('auth_permission'), qn('auth_group_permissions'), 
     201                qn('auth_user_groups'), qn('django_content_type'), 
     202                qn('id'), qn('permission_id'), 
     203                qn('group_id'), qn('group_id'), 
     204                qn('id'), qn('content_type_id'), 
     205                qn('user_id'),) 
    205206            cursor.execute(sql, [self.id]) 
    206207            self._group_perm_cache = set(["%s.%s" % (row[0], row[1]) for row in cursor.fetchall()]) 
  • django/branches/newforms-admin/django/contrib/contenttypes/generic.py

    r5627 r5984  
    55from django import oldforms 
    66from django.core.exceptions import ObjectDoesNotExist 
    7 from django.db import backend 
     7from django.db import connection 
    88from django.db.models import signals 
    99from django.db.models.fields.related import RelatedField, Field, ManyToManyRel 
     
    164164        RelatedManager = create_generic_related_manager(superclass) 
    165165 
     166        qn = connection.ops.quote_name 
     167 
    166168        manager = RelatedManager( 
    167169            model = rel_model, 
    168170            instance = instance, 
    169171            symmetrical = (self.field.rel.symmetrical and instance.__class__ == rel_model), 
    170             join_table = backend.quote_name(self.field.m2m_db_table()), 
    171             source_col_name = backend.quote_name(self.field.m2m_column_name()), 
    172             target_col_name = backend.quote_name(self.field.m2m_reverse_name()), 
     172            join_table = qn(self.field.m2m_db_table()), 
     173            source_col_name = qn(self.field.m2m_column_name()), 
     174            target_col_name = qn(self.field.m2m_reverse_name()), 
    173175            content_type = ContentType.objects.get_for_model(self.field.model), 
    174176            content_type_field_name = self.field.content_type_field_name, 
  • django/branches/newforms-admin/django/contrib/databrowse/datastructures.py

    r5918 r5984  
    99from django.utils.translation import get_date_formats 
    1010from django.utils.encoding import smart_unicode, smart_str, iri_to_uri 
     11from django.db.models.query import QuerySet 
    1112 
    1213EMPTY_VALUE = '(None)' 
     
    3132 
    3233    def objects(self, **kwargs): 
    33         for obj in self.model._default_manager.filter(**kwargs): 
    34             yield EasyInstance(self, obj) 
     34        return self.get_query_set().filter(**kwargs) 
     35 
     36    def get_query_set(self): 
     37        easy_qs = self.model._default_manager.get_query_set()._clone(klass=EasyQuerySet) 
     38        easy_qs._easymodel = self 
     39        return easy_qs 
    3540 
    3641    def object_by_pk(self, pk): 
     
    195200            lst = [(self.values()[0], None)] 
    196201        return lst 
     202 
     203class EasyQuerySet(QuerySet): 
     204    """ 
     205    When creating (or cloning to) an `EasyQuerySet`, make sure to set the 
     206    `_easymodel` variable to the related `EasyModel`. 
     207    """ 
     208    def iterator(self, *args, **kwargs): 
     209        for obj in super(EasyQuerySet, self).iterator(*args, **kwargs): 
     210            yield EasyInstance(self._easymodel, obj) 
     211 
     212    def _clone(self, *args, **kwargs): 
     213        c = super(EasyQuerySet, self)._clone(*args, **kwargs) 
     214        c._easymodel = self._easymodel 
     215        return c 
  • django/branches/newforms-admin/django/contrib/databrowse/plugins/calendars.py

    r5918 r5984  
    6565    def calendar_view(self, request, field, year=None, month=None, day=None): 
    6666        easy_model = EasyModel(self.site, self.model) 
     67        queryset = easy_model.get_query_set() 
    6768        extra_context = {'root_url': self.site.root_url, 'model': easy_model, 'field': field} 
    6869        if day is not None: 
    69             # TODO: The objects in this template should be EasyInstances 
    70             return date_based.archive_day(request, year, month, day, self.model.objects.all(), field.name, 
     70            return date_based.archive_day(request, year, month, day, queryset, field.name, 
    7171                template_name='databrowse/calendar_day.html', allow_empty=False, allow_future=True, 
    7272                extra_context=extra_context) 
    7373        elif month is not None: 
    74             return date_based.archive_month(request, year, month, self.model.objects.all(), field.name, 
     74            return date_based.archive_month(request, year, month, queryset, field.name, 
    7575                template_name='databrowse/calendar_month.html', allow_empty=False, allow_future=True, 
    7676                extra_context=extra_context) 
    7777        elif year is not None: 
    78             return date_based.archive_year(request, year, self.model.objects.all(), field.name, 
     78            return date_based.archive_year(request, year, queryset, field.name, 
    7979                template_name='databrowse/calendar_year.html', allow_empty=False, allow_future=True, 
    8080                extra_context=extra_context) 
    8181        else: 
    82             return date_based.archive_index(request, self.model.objects.all(), field.name, 
     82            return date_based.archive_index(request, queryset, field.name, 
    8383                template_name='databrowse/calendar_main.html', allow_empty=True, allow_future=True, 
    8484                extra_context=extra_context) 
  • django/branches/newforms-admin/django/contrib/databrowse/templates/databrowse/base.html

    r5195 r5984  
    33<head> 
    44<title>{% block title %}{% endblock %}</title> 
     5{% block style %} 
    56<style type="text/css"> 
    67* { margin:0; padding:0; } 
     
    4950#content { background:#fff; border-bottom:1px solid #ddd; padding:0 20px; } 
    5051</style> 
     52{% endblock %} 
     53{% block extrahead %}{% endblock %} 
    5154</head> 
    5255<body id="{% block bodyid %}page{% endblock %}"> 
    53 <div id="header"><a href="{{ root_url }}">Databrowse</a></div> 
     56<div id="header"><a href="{{ root_url }}">{% block databrowse_title %}Databrowse{% endblock %}</a></div> 
    5457<div id="content"> 
    5558{% block content %}{% endblock %} 
  • django/branches/newforms-admin/django/contrib/databrowse/templates/databrowse/calendar_day.html

    r5828 r5984  
    1 {% extends "databrowse/base.html" %} 
     1{% extends "databrowse/base_site.html" %} 
    22 
    33{% block title %}{{ model.verbose_name_plural|capfirst }} with {{ field.verbose_name }} {{ day|date:"F j, Y" }}{% endblock %} 
     
    77<div id="breadcrumbs"><a href="{{ root_url }}">Home</a> / <a href="{{ model.url }}">{{ model.verbose_name_plural|capfirst }}</a> / <a href="../../../../">Calendars</a> / <a href="../../../">By {{ field.verbose_name }}</a> / <a href="../../">{{ day.year }}</a> / <a href="../">{{ day|date:"F" }}</a> / {{ day.day }}</div> 
    88 
    9 <h1>{{ model.verbose_name_plural|capfirst }} with {{ field.verbose_name }} on {{ day|date:"F j, Y" }}</h1> 
     9<h1>{{ object_list.count }} {% if object_list.count|pluralize %}{{ model.verbose_name_plural|escape }}{% else %}{{ model.verbose_name|escape }}{% endif %} with {{ field.verbose_name }} on {{ day|date:"F j, Y" }}</h1> 
    1010 
    1111<ul class="objectlist"> 
  • django/branches/newforms-admin/django/contrib/databrowse/templates/databrowse/calendar_homepage.html

    r5195 r5984  
    1 {% extends "databrowse/base.html" %} 
     1{% extends "databrowse/base_site.html" %} 
    22 
    33{% block title %}Calendars{% endblock %} 
  • django/branches/newforms-admin/django/contrib/databrowse/templates/databrowse/calendar_main.html

    r5195 r5984  
    1 {% extends "databrowse/base.html" %} 
     1{% extends "databrowse/base_site.html" %} 
    22 
    33{% block title %}{{ field.verbose_name|capfirst }} calendar{% endblock %} 
  • django/branches/newforms-admin/django/contrib/databrowse/templates/databrowse/calendar_month.html

    r5828 r5984  
    1 {% extends "databrowse/base.html" %} 
     1{% extends "databrowse/base_site.html" %} 
    22 
    33{% block title %}{{ model.verbose_name_plural|capfirst }} with {{ field.verbose_name }} in {{ month|date:"F Y" }}{% endblock %} 
     
    77<div id="breadcrumbs"><a href="{{ root_url }}">Home</a> / <a href="{{ model.url }}">{{ model.verbose_name_plural|capfirst }}</a> / <a href="../../../">Calendars</a> / <a href="../../">By {{ field.verbose_name }}</a> / <a href="../">{{ month.year }}</a> / {{ month|date:"F" }}</div> 
    88 
    9 <h1>{{ model.verbose_name_plural|capfirst }} with {{ field.verbose_name }} in {{ month|date:"F Y" }}</h1> 
     9<h1>{{ object_list.count }} {% if object_list.count|pluralize %}{{ model.verbose_name_plural|escape }}{% else %}{{ model.verbose_name|escape }}{% endif %} with {{ field.verbose_name }} on {{ day|date:"F Y" }}</h1> 
    1010 
    1111<ul class="objectlist"> 
  • django/branches/newforms-admin/django/contrib/databrowse/templates/databrowse/calendar_year.html

    r5195 r5984  
    1 {% extends "databrowse/base.html" %} 
     1{% extends "databrowse/base_site.html" %} 
    22 
    33{% block title %}{{ model.verbose_name_plural|capfirst }} with {{ field.verbose_name }} in {{ year }}{% endblock %} 
  • django/branches/newforms-admin/django/contrib/databrowse/templates/databrowse/choice_detail.html

    r5828 r5984  
    1 {% extends "databrowse/base.html" %} 
     1{% extends "databrowse/base_site.html" %} 
    22 
    33{% block title %}{{ model.verbose_name_plural|capfirst }} by {{ field.field.verbose_name }}: {{ value|escape }}{% endblock %} 
  • django/branches/newforms-admin/django/contrib/databrowse/templates/databrowse/choice_list.html

    r5828 r5984  
    1 {% extends "databrowse/base.html" %} 
     1{% extends "databrowse/base_site.html" %} 
    22 
    33{% block title %}{{ model.verbose_name_plural|capfirst }} by {{ field.field.verbose_name }}{% endblock %} 
  • django/branches/newforms-admin/django/contrib/databrowse/templates/databrowse/fieldchoice_detail.html

    r5195 r5984  
    1 {% extends "databrowse/base.html" %} 
     1{% extends "databrowse/base_site.html" %} 
    22 
    33{% block title %}{{ model.verbose_name_plural|capfirst|escape }} with {{ field.field.verbose_name|escape }} {{ value|escape }}{% endblock %} 
     
    77<div id="breadcrumbs"><a href="{{ root_url }}">Home</a> / <a href="{{ model.url }}">{{ model.verbose_name_plural|capfirst }}</a> / <a href="../../">Fields</a> / <a href="../">By {{ field.field.verbose_name|escape }}</a> / {{ value|escape }}</div> 
    88 
    9 <h1>{{ model.verbose_name_plural|capfirst|escape }} with {{ field.field.verbose_name|escape }} {{ value|escape }}</h1> 
     9<h1>{{ object_list.count }} {% if object_list.count|pluralize %}{{ model.verbose_name_plural|escape }}{% else %}{{ model.verbose_name|escape }}{% endif %} with {{ field.field.verbose_name|escape }} {{ value|escape }}</h1> 
    1010 
    1111<ul class="objectlist"> 
  • django/branches/newforms-admin/django/contrib/databrowse/templates/databrowse/fieldchoice_homepage.html

    r5195 r5984  
    1 {% extends "databrowse/base.html" %} 
     1{% extends "databrowse/base_site.html" %} 
    22 
    33{% block title %}Browsable fields in {{ model.verbose_name_plural|escape }}{% endblock %} 
  • django/branches/newforms-admin/django/contrib/databrowse/templates/databrowse/fieldchoice_list.html

    r5627 r5984  
    1 {% extends "databrowse/base.html" %} 
     1{% extends "databrowse/base_site.html" %} 
    22 
    33{% block title %}{{ model.verbose_name_plural|capfirst|escape }} by {{ field.field.verbose_name|escape }}{% endblock %} 
  • django/branches/newforms-admin/django/contrib/databrowse/templates/databrowse/homepage.html

    r5828 r5984  
    1 {% extends "databrowse/base.html" %} 
     1{% extends "databrowse/base_site.html" %} 
    22 
    33{% block title %}Databrowse{% endblock %} 
  • django/branches/newforms-admin/django/contrib/databrowse/templates/databrowse/model_detail.html

    r5828 r5984  
    1 {% extends "databrowse/base.html" %} 
     1{% extends "databrowse/base_site.html" %} 
    22 
    33{% block title %}{{ model.verbose_name_plural|capfirst }}{% endblock %} 
     
    77<div id="breadcrumbs"><a href="{{ root_url }}">Home</a> / {{ model.verbose_name_plural|capfirst }}</div> 
    88 
    9 <h1>{{ model.verbose_name_plural|capfirst }}</h1> 
     9<h1>{{ model.objects.count }} {% if model.objects.count|pluralize %}{{ model.verbose_name_plural }}{% else %}{{ model.verbose_name }}{% endif %}</h1> 
    1010 
    1111{{ plugin_html }} 
  • django/branches/newforms-admin/django/contrib/databrowse/templates/databrowse/object_detail.html

    r5828 r5984  
    1 {% extends "databrowse/base.html" %} 
     1{% extends "databrowse/base_site.html" %} 
    22 
    33{% block title %}{{ object.model.verbose_name|capfirst }}: {{ object }}{% endblock %} 
  • django/branches/newforms-admin/django/core/management/base.py

    r5918 r5984  
    3535                if self.output_transaction: 
    3636                    # This needs to be imported here, because it relies on settings. 
    37                     from django.db import backend 
    38                     if backend.get_start_transaction_sql(): 
    39                         print self.style.SQL_KEYWORD(backend.get_start_transaction_sql()) 
     37                    from django.db import connection 
     38                    if connection.ops.start_transaction_sql(): 
     39                        print self.style.SQL_KEYWORD(connection.ops.start_transaction_sql()) 
    4040                print output 
    4141                if self.output_transaction: 
  • django/branches/newforms-admin/django/core/management/commands/createcachetable.py

    r5918 r5984  
    99 
    1010    def handle_label(self, tablename, **options): 
    11         from django.db import backend, connection, transaction, models 
     11        from django.db import connection, transaction, models 
    1212        fields = ( 
    1313            # "key" is a reserved word in MySQL, so use "cache_key" instead. 
     
    1818        table_output = [] 
    1919        index_output = [] 
     20        qn = connection.ops.quote_name 
    2021        for f in fields: 
    21             field_output = [backend.quote_name(f.name), f.db_type()] 
     22            field_output = [qn(f.name), f.db_type()] 
    2223            field_output.append("%sNULL" % (not f.null and "NOT " or "")) 
    2324            if f.unique: 
     
    2829                unique = f.unique and "UNIQUE " or "" 
    2930                index_output.append("CREATE %sINDEX %s_%s ON %s (%s);" % \ 
    30                     (unique, tablename, f.name, backend.quote_name(tablename), 
    31                     backend.quote_name(f.name))) 
     31                    (unique, tablename, f.name, qn(tablename), 
     32                    qn(f.name))) 
    3233            table_output.append(" ".join(field_output)) 
    33         full_statement = ["CREATE TABLE %s (" % backend.quote_name(tablename)] 
     34        full_statement = ["CREATE TABLE %s (" % qn(tablename)] 
    3435        for i, line in enumerate(table_output): 
    3536            full_statement.append('    %s%s' % (line, i < len(table_output)-1 and ',' or '')) 
  • django/branches/newforms-admin/django/core/management/commands/loaddata.py

    r5918 r5984  
    1616        from django.db.models import get_apps 
    1717        from django.core import serializers 
    18         from django.db import connection, transaction, backend 
     18        from django.db import connection, transaction 
    1919        from django.conf import settings 
    2020 
     
    106106 
    107107        if count[0] > 0: 
    108             sequence_sql = backend.get_sql_sequence_reset(self.style, models) 
     108            sequence_sql = connection.ops.sequence_reset_sql(self.style, models) 
    109109            if sequence_sql: 
    110110                if verbosity > 1: 
  • django/branches/newforms-admin/django/core/management/commands/sqlsequencereset.py

    r5918 r5984  
    66 
    77    def handle_app(self, app, **options): 
    8         from django.db import backend, models 
    9         return '\n'.join(backend.get_sql_sequence_reset(self.style, models.get_models(app))) 
     8        from django.db import connection, models 
     9        return '\n'.join(connection.ops.sequence_reset_sql(self.style, models.get_models(app))) 
  • django/branches/newforms-admin/django/core/management/commands/syncdb.py

    r5918 r5984  
    1313 
    1414    def handle_noargs(self, **options): 
    15         from django.db import backend, connection, transaction, models 
     15        from django.db import connection, transaction, models 
    1616        from django.conf import settings 
    1717        from django.core.management.sql import table_list, installed_models, sql_model_create, sql_for_pending_references, many_to_many_sql_for_model, custom_sql_for_model, sql_indexes_for_model, emit_post_sync_signal 
     
    3535        # so we know what needs to be added. 
    3636        table_list = table_list() 
    37         if backend.uses_case_insensitive_names: 
     37        if connection.features.uses_case_insensitive_names: 
    3838            table_name_converter = str.upper 
    3939        else: 
     
    126126                            transaction.commit_unless_managed() 
    127127 
    128         # Install the 'initialdata' fixture, using format discovery 
     128        # Install the 'initial_data' fixture, using format discovery 
    129129        from django.core.management import call_command 
    130         call_command('loaddata', 'initial_data', **options
     130        call_command('loaddata', 'initial_data', verbosity=verbosity
  • django/branches/newforms-admin/django/core/management/sql.py

    r5918 r5984  
    1616def installed_models(table_list): 
    1717    "Returns a set of all models that are installed, given a list of existing table names." 
    18     from django.db import backend, models 
     18    from django.db import connection, models 
    1919    all_models = [] 
    2020    for app in models.get_apps(): 
    2121        for model in models.get_models(app): 
    2222            all_models.append(model) 
    23     if backend.uses_case_insensitive_names: 
     23    if connection.features.uses_case_insensitive_names: 
    2424        converter = lambda x: x.upper() 
    2525    else: 
     
    9696def sql_delete(app, style): 
    9797    "Returns a list of the DROP TABLE SQL statements for the given app." 
    98     from django.db import backend, connection, models, get_introspection_module 
     98    from django.db import connection, models, get_introspection_module 
    9999    from django.db.backends.util import truncate_name 
    100100    introspection = get_introspection_module() 
     
    111111    else: 
    112112        table_names = [] 
    113     if backend.uses_case_insensitive_names: 
     113    if connection.features.uses_case_insensitive_names: 
    114114        table_name_converter = str.upper 
    115115    else: 
     
    117117 
    118118    output = [] 
     119    qn = connection.ops.quote_name 
    119120 
    120121    # Output DROP TABLE statements for standard application tables. 
     
    137138            # Drop the table now 
    138139            output.append('%s %s;' % (style.SQL_KEYWORD('DROP TABLE'), 
    139                 style.SQL_TABLE(backend.quote_name(model._meta.db_table)))) 
    140             if backend.supports_constraints and model in references_to_delete: 
     140                style.SQL_TABLE(qn(model._meta.db_table)))) 
     141            if connection.features.supports_constraints and model in references_to_delete: 
    141142                for rel_class, f in references_to_delete[model]: 
    142143                    table = rel_class._meta.db_table 
     
    147148                    output.append('%s %s %s %s;' % \ 
    148149                        (style.SQL_KEYWORD('ALTER TABLE'), 
    149                         style.SQL_TABLE(backend.quote_name(table)), 
    150                         style.SQL_KEYWORD(backend.get_drop_foreignkey_sql()), 
    151                         style.SQL_FIELD(truncate_name(r_name, backend.get_max_name_length())))) 
     150                        style.SQL_TABLE(qn(table)), 
     151                        style.SQL_KEYWORD(connection.ops.drop_foreignkey_sql()), 
     152