django-rest-framework icon indicating copy to clipboard operation
django-rest-framework copied to clipboard

add view in context for order filter

Open masarliev opened this issue 2 years ago • 1 comments

view is missing in context when using OrderingFilter

masarliev avatar Jan 09 '24 13:01 masarliev

Workaround: run django-admin migrate wagtailadmin zero --fake then re-run django-admin migrate wagtailcore zero.

aaugustin avatar Apr 27 '16 14:04 aaugustin

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.

benjaoming avatar Apr 28 '16 23:04 benjaoming

Fixed in https://github.com/torchbox/wagtail/pull/2534

benjaoming avatar Apr 28 '16 23:04 benjaoming

This is the sort of fix I expected when I filed this issue. Thank you very much!

aaugustin avatar Apr 29 '16 07:04 aaugustin

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 avatar Dec 20 '16 09:12 PekopT

@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.

gasman avatar Dec 20 '16 10:12 gasman

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.

a8568730 avatar May 06 '21 03:05 a8568730

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.

gasman avatar May 06 '21 11:05 gasman

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.

adambirds avatar Feb 09 '24 03:02 adambirds

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?

zerolab avatar Feb 09 '24 11:02 zerolab