Files
CD73/patches.d/scribe-backend.patch

83 lines
3.9 KiB
Diff
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

diff --git usr/lib/python3/dist-packages/scribe/importation/writer.py usr/lib/python3/dist-packages/scribe/importation/writer.py
index 34ce0fb..1f7ea1a 100644
--- usr/lib/python3/dist-packages/scribe/importation/writer.py
+++ usr/lib/python3/dist-packages/scribe/importation/writer.py
@@ -841,9 +841,6 @@ def _maj_enseignant(enseignant, user, login, etab, administratif=False):
groups = []
# attention : des administratifs peuvent avoir un compte enseignant
if isinstance(enseignant, Enseignant):
- old_etab = user.get_etab(login)
- if old_etab != etab:
- user._change_etab(login, old_etab, etab)
for joint in enseignant.get_classes():
groups.append('profs-%s' % str(joint.classe.nom))
if joint.profprincipal:
@@ -900,10 +897,10 @@ def write_enseignant(store, connexion, etab=None, current_ead_user=config.DEFAUL
else:
login = ''
else:
- login = _enseignant_exists(enseignant, user)
+ login = _enseignant_exists(enseignant, user, etab=etab)
if login != '':
# enseignant existant
- _maj_enseignant(enseignant, user, login, etab)
+ _maj_enseignant(enseignant, user, login, etab=etab)
else:
# nouvel enseignant
if str(enseignant.nom) == '' or str(enseignant.prenom) == '':
@@ -923,6 +920,9 @@ def write_enseignant(store, connexion, etab=None, current_ead_user=config.DEFAUL
_sync_passwords(user, new_passwords, change_pwd=change_pwd)
_create_dirs(user, quota, new_passwords)
log.infolog("TOTAL : %d enseignants" % num)
+ # write unmodified users list
+ # filtrer les enseignants avec LastUpdate plus vieux que le début de limport et vérifier quils ne sont pas dans store.query(Enseignant) ?
+ #user.ldap_admin._search(PROF_FILTER, attrlist=['uid'], suffix=branche_etab % {'etab': etab})
if num != 0:
log.copy_info(config.ENS_INFO, user=current_ead_user)
@@ -1027,7 +1027,7 @@ def write_administratif(store, connexion, etab=None, current_ead_user=config.DEF
# personnel existe
_maj_administratif(administratif, user, login)
else:
- login = _enseignant_exists(administratif, user)
+ login = _enseignant_exists(administratif, user, etab)
if login != '':
# le personnel a été crée comme un professeur...
log.infolog("(%s a un compte enseignant)" % login)
diff --git usr/lib/python3/dist-packages/scribe/linker.py usr/lib/python3/dist-packages/scribe/linker.py
index 71fb28d..44afa7a 100644
--- usr/lib/python3/dist-packages/scribe/linker.py
+++ usr/lib/python3/dist-packages/scribe/linker.py
@@ -10,7 +10,7 @@
et l'annuaire ldap
"""
from scribe.ldapconf import ELEVE_FILTER, PROF_FILTER, ADMINISTRATIF_FILTER, \
-RESPONSABLE_FILTER, USER_FILTER, AUTRE_FILTER
+RESPONSABLE_FILTER, USER_FILTER, AUTRE_FILTER, BRANCHE_ETAB
from scribe.eoletools import deformate_date, strip_adresse
from scribe.eoleldap import Ldap
@@ -99,7 +99,7 @@ def _responsable_exists(responsable, user):
return res['uid'][0]
return ''
-def _enseignant_exists(enseignant, user):
+def _enseignant_exists(enseignant, user, etab=None):
"""
recherche si un enseignant existe déjà dans l'annuaire
enseignant : storage.Enseignant()
@@ -129,8 +129,12 @@ def _enseignant_exists(enseignant, user):
# beurk (homonymes) -> à améliorer
#filtres.append("(&%s(cn=%s %s)(objectClass=enseignant))" % (USER_FILTER,
# str(enseignant.prenom), str(enseignant.nom)))
+ if etab:
+ branche_etab = BRANCHE_ETAB % {'etab': etab}
+ else:
+ branche_etab = None
for filtre in filtres:
- res = user.ldap_admin._search_one(filtre, 'uid')
+ res = user.ldap_admin._search_one(filtre, 'uid', suffix=branche_etab)
if res != {}:
return res['uid'][0]
return ''