diff --git a/zds/utils/management/commands/migrate_from_gravatar.py b/zds/utils/management/commands/migrate_from_gravatar.py new file mode 100644 index 0000000000..156b3e595a --- /dev/null +++ b/zds/utils/management/commands/migrate_from_gravatar.py @@ -0,0 +1,20 @@ +from hashlib import md5 + +import requests +from django.core.management.base import BaseCommand + +from zds.member.models import Profile + + +class Command(BaseCommand): + help = "Migrate from Gravatar" + + def handle(self, *args, **options): + for profile in Profile.objects.select_related("user").filter(avatar_url__isnull=True).iterator(): + hash = md5(profile.user.email.lower().encode("utf-8")).hexdigest() + gravatar_url = f"https://secure.gravatar.com/avatar/{hash}" + r = requests.get(f"{gravatar_url}?d=404") + if r.status_code == 200: + profile.avatar_url = f"{gravatar_url}?s=200" + profile.save() + self.stdout.write(self.style.SUCCESS(f"Successfully migrated from Gravatar!"))