#22872: Backwards incompatible change: Can't proxy User model: RuntimeError: App
registry isn't ready yet.
-------------------------------+------------------------
Reporter: jdufresne | Owner: nobody
Type: Bug | Status: new
Component: Uncategorized | Version: 1.7-beta-2
Severity: Normal | Keywords:
Triage Stage: Unreviewed | Has patch: 0
Easy pickings: 0 | UI/UX: 0
-------------------------------+------------------------
My application creates proxies of the user model to add custom methods
that are useful in certain contexts. There is an attempt to do this in a
`AUTH_USER_MODEL` agnostic way. This fails with the latest beta version of
1.7.
Starting from a fresh install and project I created the following files in
directory `myapp`.
`myapp/models.py`
{{{
from django.contrib.auth import get_user_model
class MyUser(get_user_model()):
def my_method(self):
return 'foo'
class Meta:
proxy = True
}}}
`myapp/tests.py`
{{{
from django.test import TestCase
from myapp.models import MyUser
class MyTestCase(TestCase):
def test_my_user(self):
user = MyUser()
self.assertTrue(user)
}}}
Django 1.7 beta 2
{{{
$ python manage.py test
Traceback (most recent call last):
File "manage.py", line 10, in <module>
execute_from_command_line(sys.argv)
File "/home/jon/djtest/venv/lib/python2.7/site-
packages/django/core/management/__init__.py", line 427, in
execute_from_command_line
utility.execute()
File "/home/jon/djtest/venv/lib/python2.7/site-
packages/django/core/management/__init__.py", line 391, in execute
django.setup()
File "/home/jon/djtest/venv/lib/python2.7/site-
packages/django/__init__.py", line 21, in setup
apps.populate(settings.INSTALLED_APPS)
File "/home/jon/djtest/venv/lib/python2.7/site-
packages/django/apps/registry.py", line 106, in populate
app_config.import_models(all_models)
File "/home/jon/djtest/venv/lib/python2.7/site-
packages/django/apps/config.py", line 190, in import_models
self.models_module = import_module(models_module_name)
File "/usr/lib64/python2.7/importlib/__init__.py", line 37, in
import_module
__import__(name)
File "/home/jon/djtest/djtest/myapp/models.py", line 4, in <module>
class MyUser(get_user_model()):
File "/home/jon/djtest/venv/lib/python2.7/site-
packages/django/contrib/auth/__init__.py", line 136, in get_user_model
return django_apps.get_model(settings.AUTH_USER_MODEL)
File "/home/jon/djtest/venv/lib/python2.7/site-
packages/django/apps/registry.py", line 187, in get_model
self.check_ready()
File "/home/jon/djtest/venv/lib/python2.7/site-
packages/django/apps/registry.py", line 119, in check_ready
raise RuntimeError("App registry isn't ready yet.")
RuntimeError: App registry isn't ready yet.
}}}
Django 1.6.5
{{{
$ python manage.py test
Creating test database for alias 'default'...
.
----------------------------------------------------------------------
Ran 1 test in 0.001s
OK
Destroying test database for alias 'default'...
}}}
If there is a better (or forward compatible) way proxy an unknown `User`
model, I'd be happy to hear about it.
--
Ticket URL: <https://code.djangoproject.com/ticket/22872>
Django <https://code.djangoproject.com/>
The Web framework for perfectionists with deadlines.
--
You received this message because you are subscribed to the Google Groups
"Django updates" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To post to this group, send email to [email protected].
To view this discussion on the web visit
https://groups.google.com/d/msgid/django-updates/052.80054077f63b26fb1181d3f78794f926%40djangoproject.com.
For more options, visit https://groups.google.com/d/optout.