50 lines
1.6 KiB
Python
50 lines
1.6 KiB
Python
![]() |
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()
|