#26401: Allow auth machinery to be used without installing auth app
-------------------------------------+-------------------------------------
Reporter: Matt Johnson | Owner: Andrew
| Konoff
Type: Bug | Status: closed
Component: contrib.auth | Version: 1.9
Severity: Normal | Resolution: fixed
Keywords: auth | Triage Stage: Ready for
| checkin
Has patch: 1 | Needs documentation: 0
Needs tests: 0 | Patch needs improvement: 0
Easy pickings: 0 | UI/UX: 0
-------------------------------------+-------------------------------------
Comment (by Jon Dufresne):
I've hit another snag with the `MIGRATION_MODULES = {'auth': None}`
approach. (Sorry, is it better to reopen this ticket or file a new one?)
The `auth.Permission` model has a fk on `ContentType`. Due to this, when
deleting a `ContentType` (such as with the `remove_stale_contenttypes`
command) queries against the missing `auth_permission` table can occur.
Not sure how best to handle this scenario. IIUC, as long as auth is in
`INSTALLED_APPS`, the models will be loaded and this FK will cause an
issue.
Here is a stack trace when deleting a stale content type
{{{
Traceback (most recent call last):
File "/usr/lib64/python3.5/runpy.py", line 170, in _run_module_as_main
"__main__", mod_spec)
File "/usr/lib64/python3.5/runpy.py", line 85, in _run_code
exec(code, run_globals)
File "/home/jon/devel/django/django/__main__.py", line 9, in <module>
management.execute_from_command_line()
File "/home/jon/devel/django/django/core/management/__init__.py", line
366, in execute_from_command_line
utility.execute()
File "/home/jon/devel/django/django/core/management/__init__.py", line
358, in execute
self.fetch_command(subcommand).run_from_argv(self.argv)
File "/home/jon/devel/django/django/core/management/base.py", line 294,
in run_from_argv
self.execute(*args, **cmd_options)
File "/home/jon/devel/django/django/core/management/base.py", line 345,
in execute
output = self.handle(*args, **options)
File
"/home/jon/devel/django/django/contrib/contenttypes/management/commands/remove_stale_contenttypes.py",
line 46, in handle
collector.collect([ct])
File "/home/jon/devel/django/django/db/models/deletion.py", line 218, in
collect
elif sub_objs:
File "/home/jon/devel/django/django/db/models/query.py", line 260, in
__bool__
self._fetch_all()
File "/home/jon/devel/django/django/db/models/query.py", line 1072, in
_fetch_all
self._result_cache = list(self.iterator())
File "/home/jon/devel/django/django/db/models/query.py", line 54, in
__iter__
results = compiler.execute_sql()
File "/home/jon/devel/django/django/db/models/sql/compiler.py", line
847, in execute_sql
cursor.execute(sql, params)
File "/home/jon/devel/django/django/db/backends/utils.py", line 64, in
execute
return self.cursor.execute(sql, params)
File "/home/jon/devel/django/django/db/utils.py", line 94, in __exit__
six.reraise(dj_exc_type, dj_exc_value, traceback)
File "/home/jon/devel/django/django/utils/six.py", line 685, in reraise
raise value.with_traceback(tb)
File "/home/jon/devel/django/django/db/backends/utils.py", line 64, in
execute
return self.cursor.execute(sql, params)
File "/home/jon/devel/django/django/db/backends/sqlite3/base.py", line
334, in execute
return Database.Cursor.execute(self, query, params)
django.db.utils.OperationalError: no such table: auth_permission
}}}
--
Ticket URL: <https://code.djangoproject.com/ticket/26401#comment:19>
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/066.133c0faeea597d220ca22352c6932796%40djangoproject.com.
For more options, visit https://groups.google.com/d/optout.