mirror of
https://github.com/django/django.git
synced 2025-07-05 02:09:13 +00:00
magic-removal: Fixed #1179 -- Importing a model no longer raises ImportError if it's not in INSTALLED_APPS. Instead, Model._meta.installed is set to either True or False, so you can check it
git-svn-id: http://code.djangoproject.com/svn/django/branches/magic-removal@2655 bcc190cf-cafb-0310-a4f2-bffc1f526a37
This commit is contained in:
parent
2fade6acac
commit
8792dceb74
@ -14,7 +14,6 @@ from django.dispatch import dispatcher
|
|||||||
from django.utils.datastructures import SortedDict
|
from django.utils.datastructures import SortedDict
|
||||||
from django.utils.functional import curry
|
from django.utils.functional import curry
|
||||||
from django.conf import settings
|
from django.conf import settings
|
||||||
import re
|
|
||||||
import types
|
import types
|
||||||
import sys
|
import sys
|
||||||
import os
|
import os
|
||||||
@ -26,14 +25,8 @@ class ModelBase(type):
|
|||||||
if not bases or bases == (object,):
|
if not bases or bases == (object,):
|
||||||
return type.__new__(cls, name, bases, attrs)
|
return type.__new__(cls, name, bases, attrs)
|
||||||
|
|
||||||
mod = attrs.pop('__module__')
|
|
||||||
|
|
||||||
# Raise ImportError if this model isn't in INSTALLED_APPS.
|
|
||||||
if re.sub('\.models$', '', mod) not in settings.INSTALLED_APPS:
|
|
||||||
raise ImportError, "INSTALLED_APPS must contain %r in order for you to use this model." % re.sub('\.models$', '', mod)
|
|
||||||
|
|
||||||
# Create the class.
|
# Create the class.
|
||||||
new_class = type.__new__(cls, name, bases, {'__module__': mod})
|
new_class = type.__new__(cls, name, bases, {'__module__': attrs.pop('__module__')})
|
||||||
new_class.add_to_class('_meta', Options(attrs.pop('Meta', None)))
|
new_class.add_to_class('_meta', Options(attrs.pop('Meta', None)))
|
||||||
new_class.add_to_class('DoesNotExist', types.ClassType('DoesNotExist', (ObjectDoesNotExist,), {}))
|
new_class.add_to_class('DoesNotExist', types.ClassType('DoesNotExist', (ObjectDoesNotExist,), {}))
|
||||||
|
|
||||||
|
@ -1,3 +1,4 @@
|
|||||||
|
from django.conf import settings
|
||||||
from django.db.models.related import RelatedObject
|
from django.db.models.related import RelatedObject
|
||||||
from django.db.models.fields.related import ManyToManyRel
|
from django.db.models.fields.related import ManyToManyRel
|
||||||
from django.db.models.fields import AutoField, FieldDoesNotExist
|
from django.db.models.fields import AutoField, FieldDoesNotExist
|
||||||
@ -35,6 +36,7 @@ class Options:
|
|||||||
|
|
||||||
def contribute_to_class(self, cls, name):
|
def contribute_to_class(self, cls, name):
|
||||||
cls._meta = self
|
cls._meta = self
|
||||||
|
self.installed = re.sub('\.models$', '', cls.__module__) in settings.INSTALLED_APPS
|
||||||
# First, construct the default values for these options.
|
# First, construct the default values for these options.
|
||||||
self.object_name = cls.__name__
|
self.object_name = cls.__name__
|
||||||
self.module_name = self.object_name.lower()
|
self.module_name = self.object_name.lower()
|
||||||
|
Loading…
x
Reference in New Issue
Block a user