diff --git a/apps/assets/tasks/push_system_user.py b/apps/assets/tasks/push_system_user.py index f640e03a1..3767c23e5 100644 --- a/apps/assets/tasks/push_system_user.py +++ b/apps/assets/tasks/push_system_user.py @@ -4,7 +4,7 @@ from itertools import groupby from celery import shared_task from common.db.utils import get_object_if_need, get_objects from django.utils.translation import ugettext as _ -from django.db.models import Empty +from django.db.models import Empty, Q from common.utils import encrypt_password, get_logger from assets.models import SystemUser, Asset, AuthBook @@ -238,9 +238,12 @@ def push_system_user_util(system_user, assets, task_name, username=None): no_special_auth = [] special_auth_set = set() - auth_books = AuthBook.objects.filter(username__in=usernames, asset_id__in=asset_ids) + auth_books = AuthBook.objects.filter(asset_id__in=asset_ids).filter( + Q(username__in=usernames) | Q(systemuser__username__in=usernames) + ).prefetch_related('systemuser') for auth_book in auth_books: + auth_book.load_auth() special_auth_set.add((auth_book.username, auth_book.asset_id)) for _username in usernames: