add command to clean social accounts from unnecessary data
[wolnelektury.git] / src / wolnelektury / management / commands / clean_social_accounts.py
diff --git a/src/wolnelektury/management/commands/clean_social_accounts.py b/src/wolnelektury/management/commands/clean_social_accounts.py
new file mode 100644 (file)
index 0000000..263ee2c
--- /dev/null
@@ -0,0 +1,21 @@
+# -*- coding: utf-8 -*-
+# This file is part of Wolnelektury, licensed under GNU Affero GPLv3 or later.
+# Copyright © Fundacja Nowoczesna Polska. See NOTICE for more information.
+#
+from allauth.socialaccount.models import SocialAccount
+from django.core.management.base import BaseCommand
+
+
+KEPT_FIELDS = {
+    'facebook': ['link', 'name', 'id', 'locale', 'timezone', 'updated_time', 'verified'],
+    'google': ['name', 'picture', 'locale', 'id', 'verified_email', 'link'],
+}
+
+
+class Command(BaseCommand):
+    def handle(self, *args, **options):
+        for provider, kept_fields in KEPT_FIELDS.iteritems():
+            for sa in SocialAccount.objects.filter(provider=provider):
+                trimmed_data = {k: v for k, v in sa.extra_data.iteritems() if k in kept_fields}
+                sa.extra_data = trimmed_data
+                sa.save()