diff --git a/apps/accounts/automations/base/manager.py b/apps/accounts/automations/base/manager.py index 1782d0f87..57f6fb5f8 100644 --- a/apps/accounts/automations/base/manager.py +++ b/apps/accounts/automations/base/manager.py @@ -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) diff --git a/apps/accounts/filters.py b/apps/accounts/filters.py index 8995cb524..d05f5d3ea 100644 --- a/apps/accounts/filters.py +++ b/apps/accounts/filters.py @@ -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