Commit 89581707 authored by Daniel Pyrathon's avatar Daniel Pyrathon Committed by Tim Graham
Browse files

Fixed #9104 -- Moved FieldDoesNotExist to core.exceptions

parent 1aa3e09c
Loading
Loading
Loading
Loading
+13 −13
Original line number Diff line number Diff line
@@ -5,8 +5,8 @@ from itertools import chain

from django.contrib.admin.utils import get_fields_from_path, NotRelationField, flatten
from django.core import checks
from django.core.exceptions import FieldDoesNotExist
from django.db import models
from django.db.models.fields import FieldDoesNotExist
from django.forms.models import BaseModelForm, _get_foreign_key, BaseModelFormSet


@@ -53,7 +53,7 @@ class BaseModelAdminChecks(object):

        try:
            field = model._meta.get_field(field_name)
        except models.FieldDoesNotExist:
        except FieldDoesNotExist:
            return refer_to_missing_field(field=field_name, option=label,
                                          model=model, obj=cls, id='admin.E002')
        else:
@@ -168,7 +168,7 @@ class BaseModelAdminChecks(object):
        else:
            try:
                field = model._meta.get_field(field_name)
            except models.FieldDoesNotExist:
            except FieldDoesNotExist:
                # If we can't find a field on the model that matches, it could
                # be an extra field on the form.
                return []
@@ -248,7 +248,7 @@ class BaseModelAdminChecks(object):

        try:
            field = model._meta.get_field(field_name)
        except models.FieldDoesNotExist:
        except FieldDoesNotExist:
            return refer_to_missing_field(field=field_name, option=label,
                                          model=model, obj=cls, id='admin.E019')
        else:
@@ -277,7 +277,7 @@ class BaseModelAdminChecks(object):

        try:
            field = model._meta.get_field(field_name)
        except models.FieldDoesNotExist:
        except FieldDoesNotExist:
            return refer_to_missing_field(field=field_name, option=label,
                                          model=model, obj=cls, id='admin.E022')
        else:
@@ -357,7 +357,7 @@ class BaseModelAdminChecks(object):

        try:
            field = model._meta.get_field(field_name)
        except models.FieldDoesNotExist:
        except FieldDoesNotExist:
            return refer_to_missing_field(field=field_name, option=label,
                                          model=model, obj=cls, id='admin.E027')
        else:
@@ -394,7 +394,7 @@ class BaseModelAdminChecks(object):

        try:
            model._meta.get_field(field_name)
        except models.FieldDoesNotExist:
        except FieldDoesNotExist:
            return refer_to_missing_field(field=field_name, option=label,
                                          model=model, obj=cls, id='admin.E030')
        else:
@@ -439,7 +439,7 @@ class BaseModelAdminChecks(object):

            try:
                model._meta.get_field(field_name)
            except models.FieldDoesNotExist:
            except FieldDoesNotExist:
                return refer_to_missing_field(field=field_name, option=label,
                                              model=model, obj=cls, id='admin.E033')
            else:
@@ -468,7 +468,7 @@ class BaseModelAdminChecks(object):
        else:
            try:
                model._meta.get_field(field_name)
            except models.FieldDoesNotExist:
            except FieldDoesNotExist:
                return [
                    checks.Error(
                        "The value of '%s' is not a callable, an attribute of '%s', or an attribute of '%s.%s'." % (
@@ -581,7 +581,7 @@ class ModelAdminChecks(BaseModelAdminChecks):
            # getattr(model, item) could be an X_RelatedObjectsDescriptor
            try:
                field = model._meta.get_field(item)
            except models.FieldDoesNotExist:
            except FieldDoesNotExist:
                try:
                    field = getattr(model, item)
                except AttributeError:
@@ -613,7 +613,7 @@ class ModelAdminChecks(BaseModelAdminChecks):
        else:
            try:
                model._meta.get_field(item)
            except models.FieldDoesNotExist:
            except FieldDoesNotExist:
                return [
                    # This is a deliberate repeat of E108; there's more than one path
                    # required to test this condition.
@@ -763,7 +763,7 @@ class ModelAdminChecks(BaseModelAdminChecks):
    def _check_list_editable_item(self, cls, model, field_name, label):
        try:
            field = model._meta.get_field_by_name(field_name)[0]
        except models.FieldDoesNotExist:
        except FieldDoesNotExist:
            return refer_to_missing_field(field=field_name, option=label,
                                          model=model, obj=cls, id='admin.E121')
        else:
@@ -833,7 +833,7 @@ class ModelAdminChecks(BaseModelAdminChecks):
        else:
            try:
                field = model._meta.get_field(cls.date_hierarchy)
            except models.FieldDoesNotExist:
            except FieldDoesNotExist:
                return refer_to_missing_field(option='date_hierarchy',
                                              field=cls.date_hierarchy,
                                              model=model, obj=cls, id='admin.E127')
+3 −3
Original line number Diff line number Diff line
@@ -20,12 +20,12 @@ from django.contrib.admin.templatetags.admin_urls import add_preserved_filters
from django.contrib.auth import get_permission_codename
from django.core import checks
from django.core.exceptions import (PermissionDenied, ValidationError,
    FieldError, ImproperlyConfigured)
    FieldDoesNotExist, FieldError, ImproperlyConfigured)
from django.core.paginator import Paginator
from django.core.urlresolvers import reverse
from django.db import models, transaction, router
from django.db.models.constants import LOOKUP_SEP
from django.db.models.fields import BLANK_CHOICE_DASH, FieldDoesNotExist
from django.db.models.fields import BLANK_CHOICE_DASH
from django.db.models.fields.related import ForeignObjectRel
from django.db.models.sql.constants import QUERY_TERMS
from django.forms.formsets import all_valid, DELETION_FIELD_NAME
@@ -1381,7 +1381,7 @@ class ModelAdmin(BaseModelAdmin):
        for k in initial:
            try:
                f = self.model._meta.get_field(k)
            except models.FieldDoesNotExist:
            except FieldDoesNotExist:
                continue
            # We have to special-case M2Ms as a list of comma-separated PKs.
            if isinstance(f, models.ManyToManyField):
+4 −3
Original line number Diff line number Diff line
@@ -5,6 +5,7 @@ import datetime
import decimal

from django.contrib.auth import get_permission_codename
from django.core.exceptions import FieldDoesNotExist
from django.db import models
from django.db.models.constants import LOOKUP_SEP
from django.db.models.deletion import Collector
@@ -265,7 +266,7 @@ def lookup_field(name, obj, model_admin=None):
    opts = obj._meta
    try:
        f = opts.get_field(name)
    except models.FieldDoesNotExist:
    except FieldDoesNotExist:
        # For non-field values, the value is either a method, property or
        # returned via a callable.
        if callable(name):
@@ -306,7 +307,7 @@ def label_for_field(name, model, model_admin=None, return_attr=False):
        except AttributeError:
            # field is likely a ForeignObjectRel
            label = field.opts.verbose_name
    except models.FieldDoesNotExist:
    except FieldDoesNotExist:
        if name == "__unicode__":
            label = force_text(model._meta.verbose_name)
            attr = six.text_type
@@ -349,7 +350,7 @@ def help_text_for_field(name, model):
    help_text = ""
    try:
        field_data = model._meta.get_field_by_name(name)
    except models.FieldDoesNotExist:
    except FieldDoesNotExist:
        pass
    else:
        field = field_data[0]
+7 −8
Original line number Diff line number Diff line
from django.core.exceptions import ImproperlyConfigured
from django.core.exceptions import FieldDoesNotExist, ImproperlyConfigured
from django.db import models
from django.db.models.fields import FieldDoesNotExist
from django.forms.models import BaseModelForm, BaseModelFormSet, _get_foreign_key
from django.contrib.admin.utils import get_fields_from_path, NotRelationField

@@ -42,7 +41,7 @@ class BaseValidator(object):
                    continue
                try:
                    f = model._meta.get_field(field)
                except models.FieldDoesNotExist:
                except FieldDoesNotExist:
                    # If we can't find a field on the model that matches, it could be an
                    # extra field on the form; nothing to check so move on to the next field.
                    continue
@@ -196,7 +195,7 @@ class BaseValidator(object):
                        if not hasattr(model, field):
                            try:
                                model._meta.get_field(field)
                            except models.FieldDoesNotExist:
                            except FieldDoesNotExist:
                                raise ImproperlyConfigured(
                                    "%s.readonly_fields[%d], %r is not a callable or "
                                    "an attribute of %r or found in the model %r."
@@ -250,7 +249,7 @@ class ModelAdminValidator(BaseValidator):
                        if not hasattr(model, field):
                            try:
                                model._meta.get_field(field)
                            except models.FieldDoesNotExist:
                            except FieldDoesNotExist:
                                raise ImproperlyConfigured(
                                    "%s.list_display[%d], %r is not a callable or "
                                    "an attribute of %r or found in the model %r."
@@ -348,7 +347,7 @@ class ModelAdminValidator(BaseValidator):
            for idx, field_name in enumerate(cls.list_editable):
                try:
                    field = model._meta.get_field_by_name(field_name)[0]
                except models.FieldDoesNotExist:
                except FieldDoesNotExist:
                    raise ImproperlyConfigured("'%s.list_editable[%d]' refers to a "
                        "field, '%s', not defined on %s.%s."
                        % (cls.__name__, idx, field_name, model._meta.app_label, model.__name__))
@@ -429,7 +428,7 @@ def check_isdict(cls, label, obj):
def get_field(cls, model, label, field):
    try:
        return model._meta.get_field(field)
    except models.FieldDoesNotExist:
    except FieldDoesNotExist:
        raise ImproperlyConfigured("'%s.%s' refers to field '%s' that is missing from model '%s.%s'."
                % (cls.__name__, label, field, model._meta.app_label, model.__name__))

@@ -437,7 +436,7 @@ def get_field(cls, model, label, field):
def fetch_attr(cls, model, label, field):
    try:
        return model._meta.get_field(field)
    except models.FieldDoesNotExist:
    except FieldDoesNotExist:
        pass
    try:
        return getattr(model, field)
+3 −4
Original line number Diff line number Diff line
from collections import OrderedDict
import sys

from django.core.exceptions import SuspiciousOperation, ImproperlyConfigured
from django.core.exceptions import FieldDoesNotExist, SuspiciousOperation, ImproperlyConfigured
from django.core.paginator import InvalidPage
from django.core.urlresolvers import reverse
from django.db import models
from django.db.models.fields import FieldDoesNotExist
from django.utils import six
from django.utils.encoding import force_text
from django.utils.translation import ugettext, ugettext_lazy
@@ -226,7 +225,7 @@ class ChangeList(object):
        try:
            field = self.lookup_opts.get_field(field_name)
            return field.name
        except models.FieldDoesNotExist:
        except FieldDoesNotExist:
            # See whether field_name is a name of a non-field
            # that allows sorting.
            if callable(field_name):
@@ -377,7 +376,7 @@ class ChangeList(object):
        for field_name in self.list_display:
            try:
                field = self.lookup_opts.get_field(field_name)
            except models.FieldDoesNotExist:
            except FieldDoesNotExist:
                pass
            else:
                if isinstance(field.rel, models.ManyToOneRel):
Loading