Commit 47512e59 authored by MathVerg's avatar MathVerg
Browse files

Promo 2020 + LDAP connection

parent 7ce6249c
Pipeline #8651 failed with stage
in 43 seconds
......@@ -11,4 +11,5 @@ secret_key.txt
venv/
*.bak
bars_django/settings/prod.py
.admin_mdp
\ No newline at end of file
.admin_mdp
config_ldap.py
#!/usr/bin/python
#encoding:utf8
# $ python manage.py runscripts scripts.import_tos
# Dans le dossier chocapix-server :
# $ source venv/bin/activate
# puis
# $ python manage.py runscript scripts.import_tos
# en cas de pb ajouter -v2 à la ligne de commande
# dépendance: python-ldap
......@@ -10,7 +13,7 @@
# partie à modifier
# la promo des tos à importer
PROMO = 2018
PROMO = 2020
# comment les sections sont réparties dans les bars
# id du bar et donc du logo : [ id ldap de la section, ... ]
......@@ -19,7 +22,6 @@ BARS = {
"badminton": ["badminton"],
"basket": ["basket"],
"boxe": ["boxe"],
"escrime": ["escrime"],
"escalade": ["escalade"],
"foot": ["foot"],
"hand": ["handball"],
......@@ -28,12 +30,14 @@ BARS = {
"raid": ["raid"],
"rugby": ["rugby"],
"tennis": ["tennis"],
"volley": ["volley"]
"volley": ["volley"],
"crossfit": ["crossfit"]
}
BARS_LINK = {
"ultimatejone" : ["ultimate"], #Attention à pas supprimer le BE ultimate bi promo !!!!
"equitationjone": ["equitation"], #Attention à pas supprimer le BE poney bi promo !!!!
#prudence sur ces deux là, ils apparaissent plus bas dans le code
"ultimatejone" : ["equitation"], #Attention à pas supprimer ce BE : c'est contre-intuitif, mais il contient Escrime19/Poney20 !!!!
"equitationjonerouje": ["escrime"], #Attention à pas supprimer ce BE : Poney19/Escrime20 !!!!
}
# le mot de passe par défaut des nouveaux comptes
......@@ -47,6 +51,9 @@ COULEUR_ = "jone" if PROMO%2 else "rouje"
_attrs = ["sn", "givenName", "email", "uid"]
import os
import csv
import ldap
from django.db.models import Count, Q
from bars_core.models.bar import Bar
......@@ -58,11 +65,19 @@ if sys.version_info.major == 2:
def input(txt):
return raw_input(txt.encode("utf8"))
l = ldap.initialize('ldap://ldap.eleves.polytechnique.fr')
import config_ldap
l = ldap.initialize(config_ldap.serv_addr)
l.set_option(ldap.OPT_PROTOCOL_VERSION,3)
l.simple_bind(config_ldap.ldap_user, config_ldap.ldap_password)
# 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,'(&(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):
#def get_section():
for dn, attrs in l.search_s('dc=eleves,dc=polytechnique,dc=fr',ldap.SCOPE_SUBTREE,'(&(memberOf=cn=promo_x{0},ou=groups,dc=eleves,dc=polytechnique,dc=fr)(memberOf=cn=sport_{1},ou=groups,dc=eleves,dc=polytechnique,dc=fr)(!(adminOf=cn=promo_x{0},ou=groups,dc=eleves,dc=polytechnique,dc=fr)))'.format(PROMO, section), _attrs):
for attr in _attrs:
if attr not in attrs:
print("WARNING : {} n'a pas de {}".format(dn, attr))
......@@ -72,9 +87,11 @@ def get_section(section):
def run():
# supprimer les bars à remplacer, avec tous les objets qui en dépendent
print(PROMO)
bars = Bar.objects.filter(id__contains=COULEUR_)
#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
bars = bars.exclude(id__contains="ultimatejone") #permet de ne pas supprimer le BE escrime 19 / equitation 20
bars = bars.exclude(id__contains="equitationjonerouje") #permet de ne pas supprimer le BE equitation 19 / escrime 20
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.")
......@@ -84,11 +101,12 @@ def run():
input(u"Suppression des utilisateurs suivants ?\n{}\nIl est encore temps d'appuyer sur ^C ! Appuyer sur entree pour continuer : ".format(u"\n".join(map(lambda user: user.firstname+" "+user.lastname, vieux))))
vieux.delete()
print("Done.")
# créer les bars, et les remplir
for barid, sections in BARS.items():
bar = Bar(id=barid+COULEUR_, name=u"{} {}".format(u"−".join(map(str.title, sections)), COULEUR.title()))
input(u"Création du bar suivant ?\n"+bar.name+" contenant "+sections[0]+"\nIl est encore temps d'appuyer sur ^C ! Appuyer sur entree pour continuer : ")
print(u"Creation de {}".format(bar.name))
bar.save()
for section in sections:
......@@ -98,6 +116,7 @@ def run():
# remplir les bars qui restent en place
for barid, sections in BARS_LINK.items():
bar = Bar.objects.get(id=barid)
input(u"Ajout des utilisateurs dans le bar suivant ?\n"+bar.name+" contenant "+sections[0]+"\nIl est encore temps d'appuyer sur ^C ! Appuyer sur entree pour continuer : ")
print(u"Peuplement de {}".format(bar.name))
for section in sections:
for tos in get_section(section):
......
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