diff --git a/patches.d/ead.patch b/patches.d/ead.patch index f82a6c2..63ce066 100644 --- a/patches.d/ead.patch +++ b/patches.d/ead.patch @@ -1,3 +1,174 @@ +diff --git usr/share/ead2/backend/actions/scribe/usermodify.py usr/share/ead2/backend/actions/scribe/usermodify.py +index 073fe7ff..b3b845ad 100644 +--- usr/share/ead2/backend/actions/scribe/usermodify.py ++++ usr/share/ead2/backend/actions/scribe/usermodify.py +@@ -161,26 +161,28 @@ class UserModify(Action): + shell = formencode.make_shellinput(datas) + if SUPPORT_ETAB: + etab = formencode.make_etabinput(self.user) + + # administration de classe + if datas['typeadmin'][0] == '2': + prof_classes = Enseignant().get_attr(self.user, 'Divcod') + else: + prof_classes = [] + if SUPPORT_ETAB: +- etab_user = eoleuser.User().get_etab(self.user) ++ etabs_user = eoleuser.User().get_etab(self.user, multi_etabs=True) + else: +- etab_user = None ++ etabs_user = [None] + ldapgroup = Group() + ldapgroup.ldap_admin.connect() +- all_classes = ldapgroup._get_classes(etab=etab_user) ++ all_classes = {} ++ for etab_user in etabs_user: ++ all_classes.update(ldapgroup._get_classes(etab=etab_user)) + + # classes affectées + _liste = {'title':'Classes à administrer', 'formid':'admin_class_form', + 'id':'admin_class_table', 'datas':prof_classes} + + + _select = F.Select(name='admin_class_select', + libelle="Classes disponibles", + _id='admin_class_select', + multi=True, size=10) +@@ -198,21 +200,23 @@ class UserModify(Action): + 'liste':_liste, + 'title':"Administration de classes"} + + user_all_groups = set(ldapgroup._get_user_groups(self.user)) + + # administration de groupes + if 'ManagedGroup' in datas: + _groups = datas['ManagedGroup'] + else: + _groups = [] +- all_groups = ldapgroup._get_groups('Groupe', etab=etab_user) ++ all_groups = [] ++ for etab_user in etabs_user: ++ all_groups.extend(ldapgroup._get_groups('Groupe', etab=etab_user)) + all_groups.sort() + _liste = {'title':"Groupes à administrer", 'formid':'managed_group_form', + 'id':'managed_group_table', 'datas':_groups} + _select = F.Select(name='managed_group_select', + libelle="Groupes disponibles", + _id='managed_group_select', + multi=True, size=10) + for _gr in all_groups: + if _gr not in _groups: + _select.add_option(_gr) +@@ -232,38 +236,44 @@ class UserModify(Action): + 'id':'groupe_table', 'datas':user_groups} + _select = F.Select(name='groupe_select', libelle="Groupes disponibles", + _id='groupe_select', + multi=True, size=10) + for _gr in available_groups: + _select.add_option(_gr) + groupe = {'name':"groupe", 'btns':formencode.get_transf_btns('groupe'), + 'select':_select, 'liste':_liste, 'title':"Groupes"} + + ## attachement à une matière +- all_groups = set(ldapgroup._get_groups('Matiere', etab=etab_user)) ++ all_groups = [] ++ for etab_user in etabs_user: ++ all_groups.extend(ldapgroup._get_groups('Matiere', etab=etab_user)) ++ all_groups = set(all_groups) + user_groups = scribe_tools.sort_list(all_groups.intersection(user_all_groups)) + available_groups = scribe_tools.sort_list(all_groups.difference(user_all_groups)) + _liste = {'title':"Matières de l'enseignant", 'formid':'matiere_form', + 'id':'matiere_table', 'datas':user_groups} + _select = F.Select(name='matiere_select', + libelle="Matières disponibles", + _id='matiere_select', + multi=True, size=10) + for _mat in available_groups: + _select.add_option(_mat) + matiere = {'name':"matiere", + 'btns':formencode.get_transf_btns('matiere'), + 'select':_select, 'liste':_liste, + 'title':"Matières dispensées"} + + ## attachement à une équipe pédagogique +- all_groups = set(ldapgroup._get_groups('Equipe', etab=etab_user)) ++ all_groups = [] ++ for etab_user in etabs_user: ++ all_groups.extend(ldapgroup._get_groups('Equipe', etab=etab_user)) ++ all_groups = set(all_groups) + user_groups = scribe_tools.sort_list(all_groups.intersection(user_all_groups)) + available_groups = scribe_tools.sort_list(all_groups.difference(user_all_groups)) + _liste = {'title':"Equipes pédagogiques de l'enseignant", + 'formid':'equipe_form', + 'id':'equipe_table', + 'datas':user_groups} + _select = F.Select(name='equipe_select', libelle="Equipes disponibles", + _id='equipe_select', + multi=True, size=10) + for _gr in available_groups: +@@ -329,25 +339,26 @@ class UserModify(Action): + jeSuisUnProf = 'professeurs' in user_all_groups + attrprof = formencode.make_attrprofinput(jeSuisUnProf) + + if jeSuisUnProf: + # administration de classe + if datas['typeadmin'][0] == '2': + prof_classes = Enseignant().get_attr(self.user, 'Divcod') + else: + prof_classes = [] + if SUPPORT_ETAB: +- etab_user = eoleuser.User().get_etab(self.user) ++ etabs_user = eoleuser.User().get_etab(self.user) + else: +- etab_user = None +- +- all_classes = ldapgroup._get_classes(etab=etab_user) ++ etabs_user = [None] ++ all_classes = {} ++ for etab_user in etabs_user: ++ all_classes.update(ldapgroup._get_classes(etab=etab_user)) + + # classes affectées + _liste = {'title':'Classes à administrer', 'formid':'admin_class_form', + 'id':'admin_class_table', 'datas':prof_classes} + + + _select = F.Select(name='admin_class_select', + libelle="Classes disponibles", + _id='admin_class_select', + multi=True, size=10) +@@ -360,25 +371,28 @@ class UserModify(Action): + if _cl not in prof_classes: + _select.add_option(_cl, group=_level) + classadmin = {'name':'classadmin', + 'btns':formencode.get_transf_btns('admin_class'), + 'select':_select, + 'liste':_liste, + 'title':"Administration de classes"} + + ## attachement à une équipe pédagogique + if SUPPORT_ETAB: +- etab_user = eoleuser.User().get_etab(self.user) ++ etabs_user = eoleuser.User().get_etab(self.user) + else: +- etab_user = None ++ etabs_user = [None] + +- all_groups = set(ldapgroup._get_groups('Equipe', etab=etab_user)) ++ all_groups = [] ++ for etab_user in etabs_user: ++ all_groups.extend(ldapgroup._get_groups('Equipe', etab=etab_user)) ++ all_groups = set(all_groups) + user_groups = scribe_tools.sort_list(all_groups.intersection(user_all_groups)) + available_groups = scribe_tools.sort_list(all_groups.difference(user_all_groups)) + _liste = {'title':"Equipes pédagogiques de l'enseignant", + 'formid':'equipe_form', + 'id':'equipe_table', + 'datas':user_groups} + _select = F.Select(name='equipe_select', libelle="Equipes disponibles", + _id='equipe_select', + multi=True, size=10) + for _gr in available_groups: diff --git usr/share/ead2/backend/bin/importation.py usr/share/ead2/backend/bin/importation.py index d18ad86d..306fe780 100755 --- usr/share/ead2/backend/bin/importation.py