From 5840503c1b11f9ad02e10ec5fa1bd7744e2b546b Mon Sep 17 00:00:00 2001 From: alec_dev Date: Fri, 17 Apr 2026 17:14:26 -0500 Subject: [PATCH 1/3] avoid null task warning (cherry picked from commit df10bcb923c7423874937593f6566b3d09d17c2c) --- specifyweb/backend/setup_tool/schema_defaults.py | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/specifyweb/backend/setup_tool/schema_defaults.py b/specifyweb/backend/setup_tool/schema_defaults.py index 791ac736ac5..da580abccfd 100644 --- a/specifyweb/backend/setup_tool/schema_defaults.py +++ b/specifyweb/backend/setup_tool/schema_defaults.py @@ -84,6 +84,8 @@ def enqueue() -> None: @app.task(bind=True, max_retries=SCHEMA_DEFAULTS_MISSING_DISCIPLINE_MAX_RETRIES) def apply_schema_defaults_task(self, discipline_id: int): """Run schema localization defaults for one discipline in a background worker.""" + task_id = getattr(self.request, 'id', None) + try: discipline = Discipline.objects.get(id=discipline_id) except Discipline.DoesNotExist as exc: @@ -98,9 +100,11 @@ def apply_schema_defaults_task(self, discipline_id: int): discipline_id, SCHEMA_DEFAULTS_MISSING_DISCIPLINE_MAX_RETRIES, ) - finish_discipline_background_task(discipline_id, self.request.id) + if task_id is not None: + finish_discipline_background_task(discipline_id, task_id) return try: apply_schema_defaults(discipline) finally: - finish_discipline_background_task(discipline_id, self.request.id) + if task_id is not None: + finish_discipline_background_task(discipline_id, task_id) \ No newline at end of file From 2faec3d1ed7067814af53c0a73667a13331ffbff Mon Sep 17 00:00:00 2001 From: alec_dev Date: Fri, 17 Apr 2026 17:27:29 -0500 Subject: [PATCH 2/3] Prevent startup permission initialization from re-granting legacy collection access (cherry picked from commit dff53175cf23b3c2f8250dca00cd4490f9dd246e) --- specifyweb/backend/permissions/initialize.py | 16 +++++++++++----- .../commands/run_key_migration_functions.py | 2 +- 2 files changed, 12 insertions(+), 6 deletions(-) diff --git a/specifyweb/backend/permissions/initialize.py b/specifyweb/backend/permissions/initialize.py index dc047388065..a9cf2c62d5b 100644 --- a/specifyweb/backend/permissions/initialize.py +++ b/specifyweb/backend/permissions/initialize.py @@ -32,16 +32,22 @@ def is_sp6_user_permissions_migrated(user, apps=apps) -> bool: return UserRole.objects.filter(specifyuser=user).exists() or \ UserPolicy.objects.filter(specifyuser=user).exists() -def initialize(wipe: bool=False, apps=apps) -> None: +def initialize( + wipe: bool = False, + apps=apps, + *, + migrate_sp6_users: bool = True, +) -> None: with transaction.atomic(): if wipe: wipe_permissions(apps) create_admins(apps) create_roles(apps) - if 'test' in ''.join(sys.argv): - assign_users_to_roles_during_testing(apps) - else: - assign_users_to_roles(apps) + if migrate_sp6_users: + if 'test' in ''.join(sys.argv): + assign_users_to_roles_during_testing(apps) + else: + assign_users_to_roles(apps) def create_admins(apps=apps) -> None: UserPolicy = apps.get_model('permissions', 'UserPolicy') diff --git a/specifyweb/specify/management/commands/run_key_migration_functions.py b/specifyweb/specify/management/commands/run_key_migration_functions.py index 249e122a253..6ad704b99f3 100644 --- a/specifyweb/specify/management/commands/run_key_migration_functions.py +++ b/specifyweb/specify/management/commands/run_key_migration_functions.py @@ -129,7 +129,7 @@ def fix_business_rules(stdout: WriteToStdOut | None = None): log_and_run(funcs, stdout) def initialize_permissions(apps): - initialize(False, apps) + initialize(False, apps, migrate_sp6_users=False) def fix_permissions(stdout: WriteToStdOut | None = None): funcs = [ From 6e15f7b3bd6063c818b540a67e7c8424a0f930b3 Mon Sep 17 00:00:00 2001 From: melton-jason Date: Sat, 18 Apr 2026 11:51:49 -0500 Subject: [PATCH 3/3] refactor: use apply over run when running celery task locally See https://github.com/specify/specify7/pull/7992#discussion_r3104198971 --- .../specify/management/commands/run_key_migration_functions.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/specifyweb/specify/management/commands/run_key_migration_functions.py b/specifyweb/specify/management/commands/run_key_migration_functions.py index 6ad704b99f3..6d9bba88bed 100644 --- a/specifyweb/specify/management/commands/run_key_migration_functions.py +++ b/specifyweb/specify/management/commands/run_key_migration_functions.py @@ -56,7 +56,7 @@ def apply_schema_overrides_for_all_disciplines(_apps): stdout( f"Applying schema defaults/overrides for discipline {discipline.id} ({discipline.type})..." ) - apply_schema_defaults_task.run(discipline.id) + apply_schema_defaults_task.apply(args=[discipline.id]) funcs = [ # usc.update_all_table_schema_config_with_defaults,