Oublis : script et ldap
This commit is contained in:
parent
b9e128cafb
commit
04f56ec0af
2 changed files with 48 additions and 20 deletions
|
@ -50,3 +50,6 @@ ELASTICSEARCH_DSL = {
|
|||
'hosts': '127.0.0.1:9200'
|
||||
},
|
||||
}
|
||||
|
||||
|
||||
CLIPPER_LDAP_SERVER = 'ldaps://ldap.spi.ens.fr:636'
|
||||
|
|
|
@ -1,29 +1,54 @@
|
|||
import sys
|
||||
|
||||
from allauth.account.models import EmailAddress
|
||||
from allauth.socialaccount.models import SocialAccount
|
||||
|
||||
accts = SocialAccount.objects.all()
|
||||
from avisstage.models import Normalien
|
||||
|
||||
# Create email addresses
|
||||
from collections import defaultdict
|
||||
|
||||
for acc in accts:
|
||||
accounts = SocialAccount.objects.all().prefetch_related("user")
|
||||
profils = Normalien.objects.all()
|
||||
addresses = EmailAddress.objects.all()
|
||||
|
||||
|
||||
addr_dict = defaultdict(set)
|
||||
for addr in addresses:
|
||||
addr_dict[addr.user_id].add(addr.email)
|
||||
|
||||
|
||||
profil_dict = {profil.user_id: profil for profil in profils}
|
||||
|
||||
addr_to_create = []
|
||||
|
||||
for acc in accounts:
|
||||
u = acc.user
|
||||
print(u.username)
|
||||
emls = EmailAddress.objects.filter(user=u, email_endswith="clipper.ens.fr")
|
||||
|
||||
try:
|
||||
cpeml = acc.extra_data["ldap"]["email"]
|
||||
profil = profil_dict[u.id]
|
||||
except KeyError:
|
||||
cpeml = "%s@clipper.ens.fr" % acc.uid
|
||||
|
||||
|
||||
ml = EmailAddress(email=cpeml, user=u, verified=True, primary=True)
|
||||
if u.profil.mail != cpeml and u.profil.mail:
|
||||
ml.primary = False
|
||||
print(" Creating other primary address", u.profil.mail)
|
||||
ml2 = EmailAddress(email=u.profil.mail, user=u, verified=True, primary=True)
|
||||
ml2.save()
|
||||
if emls.exists():
|
||||
print(" Clipper already exists", emls.values_list("email", flat=True))
|
||||
else:
|
||||
print(" Saving Clipper", cpeml)
|
||||
ml.save()
|
||||
continue
|
||||
|
||||
to_addr = set()
|
||||
if profil.mail:
|
||||
to_addr.add(profil.mail)
|
||||
cp_ml = "%s@clipper.ens.fr" % acc.uid
|
||||
try:
|
||||
cp_ml = acc.extra_data["ldap"]["email"]
|
||||
except KeyError:
|
||||
pass
|
||||
to_addr.add(cp_ml)
|
||||
|
||||
addrs = addr_dict[u.id]
|
||||
|
||||
print(u.username, ";".join(list(to_addr)), ";".join(list(addrs)))
|
||||
to_addr -= addrs
|
||||
has_prim = len(addrs) > 0
|
||||
|
||||
for addr in to_addr:
|
||||
ml = EmailAddress(email=addr, user=u, verified=True, primary=has_prim)
|
||||
has_prim = False
|
||||
addr_to_create.append(ml)
|
||||
|
||||
if "--fake" not in sys.argv:
|
||||
EmailAddress.objects.bulk_create(addr_to_create)
|
||||
|
|
Loading…
Reference in a new issue