Update sync_user_avatar.py

master
p36kxhw2t 2 weeks ago
parent 6364ccefff
commit 8ce79f9561

@ -7,41 +7,41 @@ from oauth.models import OAuthUser
from oauth.oauthmanager import get_manager_by_type
class Command(BaseCommand):
help = 'sync user avatar'
class Command(BaseCommand): #ZNY 定义同步用户头像命令类继承BaseCommand
help = 'sync user avatar' #ZNY 命令帮助信息:同步用户头像
def test_picture(self, url):
def test_picture(self, url): #ZNY 测试图片URL是否可访问方法
try:
if requests.get(url, timeout=2).status_code == 200:
return True
except:
pass
if requests.get(url, timeout=2).status_code == 200: #ZNY 发送HTTP请求测试图片URL设置2秒超时
return True #ZNY 如果返回200状态码返回True
except: #ZNY 捕获所有异常
pass #ZNY 发生异常时忽略
def handle(self, *args, **options):
static_url = static("../")
users = OAuthUser.objects.all()
self.stdout.write(f'开始同步{len(users)}个用户头像')
for u in users:
self.stdout.write(f'开始同步:{u.nickname}')
url = u.picture
if url:
if url.startswith(static_url):
if self.test_picture(url):
continue
else:
if u.metadata:
manage = get_manager_by_type(u.type)
url = manage.get_picture(u.metadata)
url = save_user_avatar(url)
else:
url = static('blog/img/avatar.png')
else:
url = save_user_avatar(url)
else:
url = static('blog/img/avatar.png')
if url:
self.stdout.write(
f'结束同步:{u.nickname}.url:{url}')
u.picture = url
u.save()
self.stdout.write('结束同步')
def handle(self, *args, **options): #ZNY 命令处理主方法
static_url = static("../") #ZNY 获取静态文件基础URL
users = OAuthUser.objects.all() #ZNY 获取所有OAuth用户
self.stdout.write(f'开始同步{len(users)}个用户头像') #ZNY 输出开始同步的提示,显示用户数量
for u in users: #ZNY 遍历所有用户
self.stdout.write(f'开始同步:{u.nickname}') #ZNY 输出开始同步当前用户的提示
url = u.picture #ZNY 获取用户当前头像URL
if url: #ZNY 如果头像URL存在
if url.startswith(static_url): #ZNY 如果头像URL是静态文件路径
if self.test_picture(url): #ZNY 测试静态图片是否可访问
continue #ZNY 如果可访问则跳过当前用户
else: #ZNY 如果静态图片不可访问
if u.metadata: #ZNY 如果用户有元数据
manage = get_manager_by_type(u.type) #ZNY 根据OAuth类型获取对应的管理器
url = manage.get_picture(u.metadata) #ZNY 从元数据中获取头像URL
url = save_user_avatar(url) #ZNY 保存用户头像并返回新的URL
else: #ZNY 如果没有元数据
url = static('blog/img/avatar.png') #ZNY 使用默认头像
else: #ZNY 如果头像URL不是静态文件路径
url = save_user_avatar(url) #ZNY 保存用户头像并返回新的URL
else: #ZNY 如果没有头像URL
url = static('blog/img/avatar.png') #ZNY 使用默认头像
if url: #ZNY 如果最终头像URL存在
self.stdout.write( #ZNY 输出同步完成提示
f'结束同步:{u.nickname}.url:{url}') #ZNY 显示用户名和最终头像URL
u.picture = url #ZNY 更新用户头像URL
u.save() #ZNY 保存用户信息
self.stdout.write('结束同步') #ZNY 输出同步结束提示

Loading…
Cancel
Save