Author: ramiro
Date: 2011-07-03 09:20:48 -0700 (Sun, 03 Jul 2011)
New Revision: 16493

Modified:
   django/trunk/django/core/management/validation.py
   django/trunk/tests/modeltests/invalid_models/models.py
Log:
Reverted [14563] because it introduced a dependency from core on a contrib app 
(contenttypes). Fixes #16283, Refs #3055. Thanks TheRoSS for the report and 
Aymeric Augustin for finding the problem.

This caused models shipped with some contrib apps to pollute the namespace when 
user's apps had the same name (e.g. auth, sites), even when these contrib apps 
weren't installed.

This undesired loading of contrib apps happened when model validation was 
executed, for example when running management commands that set or inherit 
`requires_model_validation=True`:
cleanup, dumpdata, flush, loaddata, reset, runfcgi, sql, sqlall, sqlclear, 
sqlcustom, sqlflush, sqlindexes, sqlinitialdata, sqlreset, sqlsequencereset, 
syncdb, createsuperusers, ping_google, collectstatic, findstatic.

This could also cause hard to diagnose problems e.g. when performing reverse 
URL resolving.

Modified: django/trunk/django/core/management/validation.py
===================================================================
--- django/trunk/django/core/management/validation.py   2011-07-01 15:19:34 UTC 
(rev 16492)
+++ django/trunk/django/core/management/validation.py   2011-07-03 16:20:48 UTC 
(rev 16493)
@@ -1,6 +1,5 @@
 import sys
 
-from django.contrib.contenttypes.generic import GenericForeignKey, 
GenericRelation
 from django.core.management.color import color_style
 from django.utils.itercompat import is_iterable
 
@@ -235,12 +234,6 @@
                 e.add(opts, "'%s' specifies an m2m relation through model %s, "
                     "which has not been installed" % (f.name, f.rel.through)
                 )
-            elif isinstance(f, GenericRelation):
-                if not any([isinstance(vfield, GenericForeignKey) for vfield 
in f.rel.to._meta.virtual_fields]):
-                    e.add(opts, "Model '%s' must have a GenericForeignKey in "
-                        "order to create a GenericRelation that points to it."
-                        % f.rel.to.__name__
-                    )
 
             rel_opts = f.rel.to._meta
             rel_name = RelatedObject(f.rel.to, cls, f).get_accessor_name()

Modified: django/trunk/tests/modeltests/invalid_models/models.py
===================================================================
--- django/trunk/tests/modeltests/invalid_models/models.py      2011-07-01 
15:19:34 UTC (rev 16492)
+++ django/trunk/tests/modeltests/invalid_models/models.py      2011-07-03 
16:20:48 UTC (rev 16493)
@@ -4,7 +4,6 @@
 This example exists purely to point out errors in models.
 """
 
-from django.contrib.contenttypes import generic
 from django.db import models
 
 class FieldErrors(models.Model):
@@ -219,21 +218,6 @@
 class InvalidSetDefault(models.Model):
     fk = models.ForeignKey('self', on_delete=models.SET_DEFAULT)
 
-class Tag(models.Model):
-   name = models.CharField("name", max_length=20)
-
-class TaggedObject(models.Model):
-   object_id = models.PositiveIntegerField("Object ID")
-   tag = models.ForeignKey(Tag)
-   content_object = generic.GenericForeignKey()
-
-class UserTaggedObject(models.Model):
-   object_tag = models.ForeignKey(TaggedObject)
-
-class ArticleAttachment(models.Model):
-   tags = generic.GenericRelation(TaggedObject)
-   user_tags = generic.GenericRelation(UserTaggedObject)
-
 model_errors = """invalid_models.fielderrors: "charfield": CharFields require 
a "max_length" attribute that is a positive integer.
 invalid_models.fielderrors: "charfield2": CharFields require a "max_length" 
attribute that is a positive integer.
 invalid_models.fielderrors: "charfield3": CharFields require a "max_length" 
attribute that is a positive integer.
@@ -343,5 +327,4 @@
 invalid_models.nonexistingorderingwithsingleunderscore: "ordering" refers to 
"does_not_exist", a field that doesn't exist.
 invalid_models.invalidsetnull: 'fk' specifies on_delete=SET_NULL, but cannot 
be null.
 invalid_models.invalidsetdefault: 'fk' specifies on_delete=SET_DEFAULT, but 
has no default value.
-invalid_models.articleattachment: Model 'UserTaggedObject' must have a 
GenericForeignKey in order to create a GenericRelation that points to it.
 """

-- 
You received this message because you are subscribed to the Google Groups 
"Django updates" group.
To post to this group, send email to django-updates@googlegroups.com.
To unsubscribe from this group, send email to 
django-updates+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/django-updates?hl=en.

Reply via email to