add view in context for order filter
view is missing in context when using OrderingFilter
Workaround: run django-admin migrate wagtailadmin zero --fake then re-run django-admin migrate wagtailcore zero.
It happens in this line:
# This cascades to Group
Permission.objects.filter(
content_type=wagtailadmin_content_type,
codename='access_admin',
).delete()
Calling delete() cascades to GroupCollectionPermission, a model that has a relation to Permission.
The problem is that this table has already been deleted because the migration does not depend on 0026_group_collection_permission. True enough, when you look at the order of unapplying migrations, you see that 0026_group_collection_permission is unapplied before 0001_create_admin_access_permissions.
Fixed in https://github.com/torchbox/wagtail/pull/2534
This is the sort of fix I expected when I filed this issue. Thank you very much!
upgrading from wagtail 1.0 to 1.8 caused following
Traceback (most recent call last):
File "manage.py", line 18, in <module>
execute_from_command_line(sys.argv)
File "/Users/PekopT/Virtualenvs/crm-py3/lib/python3.4/site-packages/django/core/management/__init__.py", line 367, in execute_from_command_line
utility.execute()
File "/Users/PekopT/Virtualenvs/crm-py3/lib/python3.4/site-packages/django/core/management/__init__.py", line 359, in execute
self.fetch_command(subcommand).run_from_argv(self.argv)
File "/Users/PekopT/Virtualenvs/crm-py3/lib/python3.4/site-packages/django/core/management/base.py", line 294, in run_from_argv
self.execute(*args, **cmd_options)
File "/Users/PekopT/Virtualenvs/crm-py3/lib/python3.4/site-packages/django/core/management/base.py", line 345, in execute
output = self.handle(*args, **options)
File "/Users/PekopT/Virtualenvs/crm-py3/lib/python3.4/site-packages/django/core/management/commands/migrate.py", line 86, in handle
executor.loader.check_consistent_history(connection)
File "/Users/PekopT/Virtualenvs/crm-py3/lib/python3.4/site-packages/django/db/migrations/loader.py", line 292, in check_consistent_history
connection.alias,
django.db.migrations.exceptions.InconsistentMigrationHistory: Migration wagtailadmin.0001_create_admin_access_permissions is applied before its dependency wagtailcore.0026_group_collection_permission on database 'default'.
Commenting this line is the solution https://github.com/wagtail/wagtail/commit/bee221b8c9626df725cae9372c301a03c8ed9bae#diff-c80f81bff2ea91134d39e7fd667808d5R51
I think something wrong with this solution.
@PekopT You should upgrade one point release at a time (1.1, 1.2, 1.3.1...) rather than going directly from 1.0 to 1.8.
I also failed to migrate to zero, with different error. The error messge is below:
$ python manage.py migrate wagtailcore zero
Operations to perform:
Unapply all migrations: wagtailcore
Running migrations:
Rendering model states... DONE
Unapplying wagtailsearchpromotions.0002_capitalizeverbose... OK
Unapplying wagtailsearchpromotions.0001_initial... OK
Unapplying wagtailsearch.0004_querydailyhits_verbose_name_plural... OK
Unapplying wagtailsearch.0003_remove_editors_pick... OK
Unapplying wagtailsearch.0002_add_verbose_names... OK
Unapplying wagtailsearch.0001_initial... OK
Unapplying wagtailredirects.0006_redirect_increase_max_length... OK
Unapplying wagtailredirects.0005_capitalizeverbose... OK
Unapplying wagtailredirects.0004_set_unique_on_path_and_site... OK
Unapplying wagtailredirects.0003_make_site_field_editable... OK
Unapplying wagtailredirects.0002_add_verbose_names... OK
Unapplying wagtailredirects.0001_initial... OK
Unapplying wagtailimages.0023_add_choose_permissions... OK
Unapplying wagtailimages.0022_uploadedimage... OK
Unapplying wagtailimages.0001_squashed_0021... OK
Unapplying wagtailforms.0004_add_verbose_name_plural... OK
Unapplying wagtailforms.0003_capitalizeverbose... OK
Unapplying wagtailforms.0002_add_verbose_names... OK
Unapplying wagtailforms.0001_initial... OK
Unapplying wagtaildocs.0012_uploadeddocument... OK
Unapplying wagtaildocs.0011_add_choose_permissions... OK
Unapplying wagtaildocs.0010_document_file_hash... OK
Unapplying wagtaildocs.0009_document_verbose_name_plural... OK
Unapplying wagtaildocs.0008_document_file_size... OK
Unapplying wagtaildocs.0007_merge... OK
Unapplying wagtaildocs.0006_copy_document_permissions_to_collections... OK
Unapplying wagtaildocs.0005_document_collection... OK
Unapplying wagtaildocs.0005_alter_uploaded_by_user_on_delete_action... OK
Unapplying wagtaildocs.0004_capitalizeverbose... OK
Unapplying wagtaildocs.0003_add_verbose_names... OK
Unapplying wagtaildocs.0002_initial_data... OK
Unapplying wagtailcore.0060_fix_workflow_unique_constraint... OK
Unapplying wagtailcore.0059_apply_collection_ordering... OK
Unapplying wagtailcore.0058_page_alias_of... OK
Unapplying wagtailcore.0057_page_locale_fields_notnull... OK
Unapplying wagtailcore.0056_page_locale_fields_populate... OK
Unapplying wagtailcore.0055_page_locale_fields... OK
Unapplying wagtailcore.0054_initial_locale... OK
Unapplying wagtailcore.0053_locale_model... OK
Unapplying wagtailcore.0052_pagelogentry... OK
Unapplying wagtailcore.0051_taskstate_comment... OK
Unapplying wagtailcore.0050_workflow_rejected_to_needs_changes... OK
Unapplying wagtailcore.0049_taskstate_finished_by... OK
Unapplying wagtailcore.0048_add_default_workflows... OK
Unapplying wagtailcore.0047_add_workflow_models... OK
Unapplying wagtailcore.0046_site_name_remove_null... OK
Unapplying wagtailcore.0045_assign_unlock_grouppagepermission... OK
Unapplying wagtailcore.0044_add_unlock_grouppagepermission... OK
Unapplying wagtailcore.0043_lock_fields... OK
Unapplying wagtailcore.0042_index_on_pagerevision_approved_go_live_at... OK
Unapplying wagtailcore.0041_group_collection_permissions_verbose_name_plural... OK
Unapplying wagtailcore.0040_page_draft_title... OK
Unapplying wagtailcore.0039_collectionviewrestriction... OK
Unapplying wagtailcore.0038_make_first_published_at_editable... OK
Unapplying wagtailcore.0037_set_page_owner_editable... OK
Unapplying wagtailcore.0036_populate_page_last_published_at... OK
Unapplying wagtailcore.0035_page_last_published_at... OK
Unapplying wagtailcore.0034_page_live_revision... OK
Unapplying wagtailcore.0033_remove_golive_expiry_help_text... OK
Unapplying wagtailcore.0032_add_bulk_delete_page_permission... OK
Unapplying wagtailcore.0031_add_page_view_restriction_types... OK
Unapplying wagtailcore.0030_index_on_pagerevision_created_at... OK
Unapplying wagtailcore.0029_unicode_slugfield_dj19... OK
Unapplying wagtailcore.0028_merge... OK
Unapplying wagtailcore.0027_fix_collection_path_collation... OK
Unapplying wagtailadmin.0003_admin_managed... OK
Unapplying wagtailadmin.0002_admin... OK
Unapplying wagtailadmin.0001_create_admin_access_permissions...Traceback (most recent call last):
File "manage.py", line 22, in <module>
main()
File "manage.py", line 18, in main
execute_from_command_line(sys.argv)
File "/home/tia/git/KauIokPoo-SuTian/venv/lib/python3.6/site-packages/django/core/management/__init__.py", line 401, in execute_from_command_line
utility.execute()
File "/home/tia/git/KauIokPoo-SuTian/venv/lib/python3.6/site-packages/django/core/management/__init__.py", line 395, in execute
self.fetch_command(subcommand).run_from_argv(self.argv)
File "/home/tia/git/KauIokPoo-SuTian/venv/lib/python3.6/site-packages/django/core/management/base.py", line 330, in run_from_argv
self.execute(*args, **cmd_options)
File "/home/tia/git/KauIokPoo-SuTian/venv/lib/python3.6/site-packages/django/core/management/base.py", line 371, in execute
output = self.handle(*args, **options)
File "/home/tia/git/KauIokPoo-SuTian/venv/lib/python3.6/site-packages/django/core/management/base.py", line 85, in wrapped
res = handle_func(*args, **kwargs)
File "/home/tia/git/KauIokPoo-SuTian/venv/lib/python3.6/site-packages/django/core/management/commands/migrate.py", line 245, in handle
fake_initial=fake_initial,
File "/home/tia/git/KauIokPoo-SuTian/venv/lib/python3.6/site-packages/django/db/migrations/executor.py", line 121, in migrate
state = self._migrate_all_backwards(plan, full_plan, fake=fake)
File "/home/tia/git/KauIokPoo-SuTian/venv/lib/python3.6/site-packages/django/db/migrations/executor.py", line 196, in _migrate_all_backwards
self.unapply_migration(states[migration], migration, fake=fake)
File "/home/tia/git/KauIokPoo-SuTian/venv/lib/python3.6/site-packages/django/db/migrations/executor.py", line 251, in unapply_migration
state = migration.unapply(state, schema_editor)
File "/home/tia/git/KauIokPoo-SuTian/venv/lib/python3.6/site-packages/django/db/migrations/migration.py", line 175, in unapply
operation.database_backwards(self.app_label, schema_editor, from_state, to_state)
File "/home/tia/git/KauIokPoo-SuTian/venv/lib/python3.6/site-packages/django/db/migrations/operations/special.py", line 196, in database_backwards
self.reverse_code(from_state.apps, schema_editor)
File "/home/tia/git/KauIokPoo-SuTian/venv/lib/python3.6/site-packages/wagtail/admin/migrations/0001_create_admin_access_permissions.py", line 39, in remove_admin_access_permissions
codename='access_admin',
File "/home/tia/git/KauIokPoo-SuTian/venv/lib/python3.6/site-packages/django/db/models/query.py", line 746, in delete
collector.collect(del_query)
File "/home/tia/git/KauIokPoo-SuTian/venv/lib/python3.6/site-packages/django/db/models/deletion.py", line 313, in collect
sub_objs = self.related_objects(related_model, related_fields, batch)
File "/home/tia/git/KauIokPoo-SuTian/venv/lib/python3.6/site-packages/django/db/models/deletion.py", line 354, in related_objects
return related_model._base_manager.using(self.using).filter(predicate)
File "/home/tia/git/KauIokPoo-SuTian/venv/lib/python3.6/site-packages/django/db/models/query.py", line 942, in filter
return self._filter_or_exclude(False, *args, **kwargs)
File "/home/tia/git/KauIokPoo-SuTian/venv/lib/python3.6/site-packages/django/db/models/query.py", line 962, in _filter_or_exclude
clone._filter_or_exclude_inplace(negate, *args, **kwargs)
File "/home/tia/git/KauIokPoo-SuTian/venv/lib/python3.6/site-packages/django/db/models/query.py", line 969, in _filter_or_exclude_inplace
self._query.add_q(Q(*args, **kwargs))
File "/home/tia/git/KauIokPoo-SuTian/venv/lib/python3.6/site-packages/django/db/models/sql/query.py", line 1358, in add_q
clause, _ = self._add_q(q_object, self.used_aliases)
File "/home/tia/git/KauIokPoo-SuTian/venv/lib/python3.6/site-packages/django/db/models/sql/query.py", line 1380, in _add_q
split_subq=split_subq, check_filterable=check_filterable,
File "/home/tia/git/KauIokPoo-SuTian/venv/lib/python3.6/site-packages/django/db/models/sql/query.py", line 1244, in build_filter
check_filterable=check_filterable,
File "/home/tia/git/KauIokPoo-SuTian/venv/lib/python3.6/site-packages/django/db/models/sql/query.py", line 1380, in _add_q
split_subq=split_subq, check_filterable=check_filterable,
File "/home/tia/git/KauIokPoo-SuTian/venv/lib/python3.6/site-packages/django/db/models/sql/query.py", line 1292, in build_filter
self.check_related_objects(join_info.final_field, value, join_info.opts)
File "/home/tia/git/KauIokPoo-SuTian/venv/lib/python3.6/site-packages/django/db/models/sql/query.py", line 1122, in check_related_objects
self.check_query_object_type(v, opts, field)
File "/home/tia/git/KauIokPoo-SuTian/venv/lib/python3.6/site-packages/django/db/models/sql/query.py", line 1102, in check_query_object_type
(value, opts.object_name))
ValueError: Cannot query "Permission object (1)": Must be "Permission" instance.
I first run django-admin migrate wagtailadmin zero --fake then re-run django-admin migrate wagtailcore zero, but with no luck.
Hmm, interesting... it does succeed if you change the lines
ContentType = apps.get_model('contenttypes.ContentType')
Permission = apps.get_model('auth.Permission')
in remove_admin_access_permissions in admin/migrations/0001_create_admin_access_permissions.py to:
from django.contrib.auth.models import Permission
from django.contrib.contenttypes.models import ContentType
so that it's using the 'real' Permission / ContentType models, rather than the frozen versions used for migrations - it looks like the 'delete' operation might be doing some type checking that doesn't recognise the frozen ORM instance as valid. Could be a Django bug...?
On Django <3.1 I get a different error from that migration:
Traceback (most recent call last):
File "./manage.py", line 10, in <module>
execute_from_command_line(sys.argv)
File "/Users/matthew/.virtualenvs/wagtail/lib/python3.8/site-packages/django/core/management/__init__.py", line 401, in execute_from_command_line
utility.execute()
File "/Users/matthew/.virtualenvs/wagtail/lib/python3.8/site-packages/django/core/management/__init__.py", line 395, in execute
self.fetch_command(subcommand).run_from_argv(self.argv)
File "/Users/matthew/.virtualenvs/wagtail/lib/python3.8/site-packages/django/core/management/base.py", line 328, in run_from_argv
self.execute(*args, **cmd_options)
File "/Users/matthew/.virtualenvs/wagtail/lib/python3.8/site-packages/django/core/management/base.py", line 369, in execute
output = self.handle(*args, **options)
File "/Users/matthew/.virtualenvs/wagtail/lib/python3.8/site-packages/django/core/management/base.py", line 83, in wrapped
res = handle_func(*args, **kwargs)
File "/Users/matthew/.virtualenvs/wagtail/lib/python3.8/site-packages/django/core/management/commands/migrate.py", line 231, in handle
post_migrate_state = executor.migrate(
File "/Users/matthew/.virtualenvs/wagtail/lib/python3.8/site-packages/django/db/migrations/executor.py", line 121, in migrate
state = self._migrate_all_backwards(plan, full_plan, fake=fake)
File "/Users/matthew/.virtualenvs/wagtail/lib/python3.8/site-packages/django/db/migrations/executor.py", line 196, in _migrate_all_backwards
self.unapply_migration(states[migration], migration, fake=fake)
File "/Users/matthew/.virtualenvs/wagtail/lib/python3.8/site-packages/django/db/migrations/executor.py", line 269, in unapply_migration
state = migration.unapply(state, schema_editor)
File "/Users/matthew/.virtualenvs/wagtail/lib/python3.8/site-packages/django/db/backends/sqlite3/schema.py", line 35, in __exit__
self.connection.check_constraints()
File "/Users/matthew/.virtualenvs/wagtail/lib/python3.8/site-packages/django/db/backends/sqlite3/base.py", line 326, in check_constraints
raise utils.IntegrityError(
django.db.utils.IntegrityError: The row in table 'auth_group_permissions' with primary key '1' has an invalid foreign key: auth_group_permissions.permission_id contains a value '1' that does not have a corresponding value in auth_permission.id.
How is this still an issue 8 years later. I am getting this wagtail v6 and can' reverse all migrations to zero and uninstall the app due to this permission error.
Hey @adambirds,
it is an issue because the core maintainers do not have the capacity and bandwidth to cover all possible cases and scenarios. We are a small team that cover quite a wide surface. We also did not have the need to do this on any of our projects either, which means other issues, bugs and features took priority.
Considering this is an open source project, what you could do to speed this up is:
- either investigate the issue and provide a pull request with a fix or steps to take to fix it differently ("here are the raw SQL commands to run to uninstall Wagtail from your Django project").
- or, if it is a critical piece of functionality required for your projects - perhaps sponsor one of the maintainer, or even someone from the community to put the time and effort in fixing this?