Loading django/contrib/admin/checks.py +13 −13 Original line number Diff line number Diff line Loading @@ -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 Loading Loading @@ -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: Loading Loading @@ -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 [] Loading Loading @@ -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: Loading Loading @@ -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: Loading Loading @@ -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: Loading Loading @@ -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: Loading Loading @@ -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: Loading Loading @@ -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'." % ( Loading Loading @@ -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: Loading Loading @@ -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. Loading Loading @@ -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: Loading Loading @@ -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') Loading django/contrib/admin/options.py +3 −3 Original line number Diff line number Diff line Loading @@ -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 Loading Loading @@ -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): Loading django/contrib/admin/utils.py +4 −3 Original line number Diff line number Diff line Loading @@ -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 Loading Loading @@ -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): Loading Loading @@ -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 Loading Loading @@ -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] Loading django/contrib/admin/validation.py +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 Loading Loading @@ -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 Loading Loading @@ -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." Loading Loading @@ -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." Loading Loading @@ -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__)) Loading Loading @@ -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__)) Loading @@ -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) Loading django/contrib/admin/views/main.py +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 Loading Loading @@ -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): Loading Loading @@ -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 Loading
django/contrib/admin/checks.py +13 −13 Original line number Diff line number Diff line Loading @@ -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 Loading Loading @@ -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: Loading Loading @@ -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 [] Loading Loading @@ -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: Loading Loading @@ -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: Loading Loading @@ -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: Loading Loading @@ -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: Loading Loading @@ -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: Loading Loading @@ -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'." % ( Loading Loading @@ -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: Loading Loading @@ -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. Loading Loading @@ -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: Loading Loading @@ -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') Loading
django/contrib/admin/options.py +3 −3 Original line number Diff line number Diff line Loading @@ -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 Loading Loading @@ -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): Loading
django/contrib/admin/utils.py +4 −3 Original line number Diff line number Diff line Loading @@ -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 Loading Loading @@ -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): Loading Loading @@ -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 Loading Loading @@ -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] Loading
django/contrib/admin/validation.py +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 Loading Loading @@ -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 Loading Loading @@ -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." Loading Loading @@ -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." Loading Loading @@ -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__)) Loading Loading @@ -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__)) Loading @@ -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) Loading
django/contrib/admin/views/main.py +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 Loading Loading @@ -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): Loading Loading @@ -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