daren_project/fix_gmail_cred.py

50 lines
1.6 KiB
Python
Raw Permalink Normal View History

2025-04-29 10:22:57 +08:00
import os
import django
# 设置Django环境
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'role_based_system.settings')
django.setup()
from user_management.models import GmailCredential
# 清除特定凭证
def fix_specific_credential(credential_id):
try:
cred = GmailCredential.objects.get(id=credential_id)
cred.credentials = None
cred.needs_reauth = True
cred.save()
print(f'已清除ID为{cred.id}的凭证,邮箱: {cred.gmail_email},并标记为需要重新授权')
return True
except GmailCredential.DoesNotExist:
print(f'找不到ID为{credential_id}的凭证')
return False
except Exception as e:
print(f'处理凭证{credential_id}时出错: {str(e)}')
return False
# 清除所有可能已损坏的凭证
def fix_all_credentials():
credentials = GmailCredential.objects.all()
fixed_count = 0
for cred in credentials:
if cred.credentials: # 只处理有凭证数据的记录
try:
# 直接清除凭证并标记需要重新认证
cred.credentials = None
cred.needs_reauth = True
cred.save()
print(f'已清除ID为{cred.id}的凭证,邮箱: {cred.gmail_email}')
fixed_count += 1
except Exception as e:
print(f'处理凭证{cred.id}时出错: {str(e)}')
print(f'共清除了{fixed_count}个凭证')
if __name__ == '__main__':
# 修复特定的凭证
fix_specific_credential('936c37a7-c6e5-454a-aaef-7c66b1230507')
# 或者修复所有凭证
# fix_all_credentials()