Commit 7ce6249c authored by Grégoire GRZECZKOWICZ's avatar Grégoire GRZECZKOWICZ
Browse files

Promo 2018

Nouveau LDAP
Gestion des bars rouje et jone
parent 4907cb17
Pipeline #6726 passed with stage
in 53 seconds
......@@ -10,7 +10,7 @@
# partie à modifier
# la promo des tos à importer
PROMO = 2017
PROMO = 2018
# comment les sections sont réparties dans les bars
# id du bar et donc du logo : [ id ldap de la section, ... ]
......@@ -20,7 +20,6 @@ BARS = {
"basket": ["basket"],
"boxe": ["boxe"],
"escrime": ["escrime"],
"ultimate" : ["ultimate"],
"escalade": ["escalade"],
"foot": ["foot"],
"hand": ["handball"],
......@@ -29,8 +28,12 @@ BARS = {
"raid": ["raid"],
"rugby": ["rugby"],
"tennis": ["tennis"],
#"equitation": ["equitation"], #Attention à pas supprimer le BE poney bi promo !!!!
"volley": ["volley"],
"volley": ["volley"]
}
BARS_LINK = {
"ultimatejone" : ["ultimate"], #Attention à pas supprimer le BE ultimate bi promo !!!!
"equitationjone": ["equitation"], #Attention à pas supprimer le BE poney bi promo !!!!
}
# le mot de passe par défaut des nouveaux comptes
......@@ -42,7 +45,7 @@ PASSWORD = "0000"
COULEUR = u"jône" if PROMO%2 else u"roûje"
COULEUR_ = "jone" if PROMO%2 else "rouje"
_attrs = ["sn", "givenName", "mail", "uid"]
_attrs = ["sn", "givenName", "email", "uid"]
import ldap
from django.db.models import Count, Q
......@@ -55,11 +58,11 @@ if sys.version_info.major == 2:
def input(txt):
return raw_input(txt.encode("utf8"))
l = ldap.initialize('ldap://127.0.0.1')
l = ldap.initialize('ldap://ldap.eleves.polytechnique.fr')
# en faisant section par section, on bypass la limitation du nombre de résultats
def get_section(section):
for dn, attrs in l.search_s('dc=frankiz,dc=net',ldap.SCOPE_SUBTREE,'(&(brPromo={0})(brMemberOf=promo_x{0})(brMemberOf=sport_{1}))'.format(PROMO, section), _attrs):
for dn, attrs in l.search_s('dc=frankiz,dc=net',ldap.SCOPE_SUBTREE,'(&(memberOf=cn=promo_x{0},ou=groups,dc=frankiz,dc=net)(memberOf=cn=sport_{1},ou=groups,dc=frankiz,dc=net)(!(adminOf=cn=promo_x{0},ou=groups,dc=frankiz,dc=net)))'.format(PROMO, section), _attrs):
for attr in _attrs:
if attr not in attrs:
print("WARNING : {} n'a pas de {}".format(dn, attr))
......@@ -70,7 +73,8 @@ def get_section(section):
def run():
# supprimer les bars à remplacer, avec tous les objets qui en dépendent
bars = Bar.objects.filter(id__contains=COULEUR_)
bars = bars.exclude(id__contains="equitation") #permet de ne pas supprimer le BE equitation bi-promo
#bars = bars.exclude(id__contains="ultimate") #permet de ne pas supprimer le BE ultimate bi-promo
#bars = bars.exclude(id__contains="equitation") #permet de ne pas supprimer le BE equitation bi-promo
input(u"Suppression des bars suivants ?\n{}\nIl est encore temps d'appuyer sur ^C ! Appuyer sur entree pour continuer : ".format(u"\n".join(map(lambda bar:bar.name, bars))))
bars.delete()
print("Done.")
......@@ -90,10 +94,21 @@ def run():
for section in sections:
for tos in get_section(section):
add_to_bar(tos, bar)
# remplir les bars qui restent en place
for barid, sections in BARS_LINK.items():
bar = Bar.objects.get(id=barid)
print(u"Peuplement de {}".format(bar.name))
for section in sections:
for tos in get_section(section):
try:
add_to_bar(tos, bar)
except:
print(u"Erreur : {0} existe déjà dans ce bar".format(tos["uid"]))
def add_to_bar(user, bar):
try:
tos = User.objects.get(Q(email=user["mail"]) | Q(username=user["uid"]))
tos = User.objects.get(Q(email=user["email"]) | Q(username=user["uid"]))
print(u"{} existe déjà".format(user["uid"]))
except User.DoesNotExist:
print(u"Création de {}".format(user["uid"]))
......@@ -101,7 +116,7 @@ def add_to_bar(user, bar):
tos.pseudo = user["uid"]
tos.firstname = user["givenName"]
tos.lastname = user["sn"]
tos.email = user["mail"]
tos.email = user["email"]
tos.save()
account = Account(bar=bar, owner=tos)
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment