fix: Account filter error

This commit is contained in:
wangruidong 2025-03-19 16:31:48 +08:00 committed by w940853815
parent e0d6b843ee
commit e5a5d5f727
2 changed files with 13 additions and 1 deletions

View File

@ -180,6 +180,13 @@ class BaseChangeSecretPushManager(AccountBasePlaybookManager):
recorder.status = ChangeSecretRecordStatusChoice.failed.value
recorder.date_finished = timezone.now()
recorder.error = error
account = recorder.account
if not account:
print("Account not found, deleted ?")
return
account.date_updated = timezone.now()
account.date_change_secret = timezone.now()
account.change_secret_status = ChangeSecretRecordStatusChoice.failed
self.summary['fail_accounts'] += 1
self.result['fail_accounts'].append(
@ -191,4 +198,5 @@ class BaseChangeSecretPushManager(AccountBasePlaybookManager):
super().on_host_error(host, error, result)
with safe_db_connection():
account.save(update_fields=['change_secret_status', 'date_change_secret', 'date_updated'])
self.save_record(recorder)

View File

@ -68,6 +68,7 @@ class AccountFilterSet(BaseFilterSet):
risk = drf_filters.CharFilter(method="filter_risk")
integrationapplication = drf_filters.CharFilter(method="filter_integrationapplication")
long_time_no_change_secret = drf_filters.BooleanFilter(method="filter_long_time")
long_time_no_login = drf_filters.BooleanFilter(method="filter_long_time")
long_time_no_verified = drf_filters.BooleanFilter(method="filter_long_time")
@staticmethod
@ -85,12 +86,15 @@ class AccountFilterSet(BaseFilterSet):
if name == "long_time_no_change_secret":
field = "date_change_secret"
confirm_field = "change_secret_status"
elif name == "long_time_no_login":
field = "date_last_login"
confirm_field = None
else:
field = "date_verified"
confirm_field = "connectivity"
q = Q(**{f"{field}__lt": date}) | Q(**{f"{field}__isnull": True})
confirm_q = {f"{confirm_field}": "na"}
confirm_q = {f"{confirm_field}": "na"} if confirm_field else {}
queryset = queryset.exclude(**confirm_q).filter(q)
return queryset