diff --git a/gestion/ldap_crans.py b/gestion/ldap_crans.py index f377f8b4..d804564b 100755 --- a/gestion/ldap_crans.py +++ b/gestion/ldap_crans.py @@ -410,8 +410,9 @@ class crans_ldap : except ldap.ALREADY_EXISTS : # Existe déja => rien à faire pass - except : - print modlist + except ldap.TYPE_OR_VALUE_EXISTS : + # Pareil + pass def search(self,expression,mode='') : """ @@ -790,11 +791,11 @@ class base_classes_crans(crans_ldap) : if not self._init_data : modif='inscription' else : - if "chbre" in self.modifs: - self.modifs.remove("chbre") - self.modifs.append("chbre %s -> %s" % (self._init_data["chbre"][0], - self._data["chbre"][0])) + ### ON NE TOUCHE PAS A SELF.MODIFS, IL EST UTILISÉ PLUS LOIN !!!!!!! modif=', '.join(self.modifs) + if "chbre" in self.modifs: + modif.replace('chbre', "chbre %s -> %s" % (self._init_data["chbre"][0], + self._data["chbre"][0])) timestamp = localtime() hist = "%s, %s" % ( time.strftime(date_format, timestamp), script_utilisateur ) @@ -858,23 +859,13 @@ class base_classes_crans(crans_ldap) : raise RuntimeError(u'Entrée en double dans le champ %s' % champ) ### Génération de la liste de services à redémarrer - - # Correspondance modif de la base -> service ayant besoin d'être redémarré - # Une grosse partie du traitement est délocalisé dans les classes filles. - serv = [] + # Quasiement tout est traité dans les classes filles. for m in self.modifs : if sre.match('blacklist_*',m) : - serv.append(m) - elif m == 'chbre' and '????' in [ self._init_data.get("chbre",[''])[0] , self._data.get("chbre",[''])[0] ] : - serv.append('bl_chbre_invalide') - elif m == 'droits' : - serv.append('droits') + services_to_restart(m) # Reinitialisation self._init_data = self._data.copy() - - for s in serv : - self.services_to_restart(s) def _delete(self,dn,comment='') : """ Sauvegarde puis destruction du dn (et des sous-dn) fourni """ @@ -1066,7 +1057,6 @@ class base_proprietaire(base_classes_crans) : # Note : un peu trop de fonctions pour un club mais ce n'est pas génant ret ='' - serv = [] if self._init_data : nouveau =0 # Reconfiguration switch si changement de chambre et si machine fixe @@ -1078,7 +1068,10 @@ class base_proprietaire(base_classes_crans) : break else : nouveau = 1 - + + if 'chbre' in self.modifs and '????' in [ self._init_data.get("chbre",[''])[0] , self._init_data.get("chbre",[''])[0] ] : + serv.append('bl_chbre_invalide') + # Enregistrement self._save() @@ -1096,20 +1089,21 @@ class base_proprietaire(base_classes_crans) : # Faut-il redémarrer plus de services que ceux traités dans _save ? if 'carteEtudiant+%s' % ann_scol in self.modifs \ or 'carteEtudiant-%s' % ann_scol in self.modifs \ - and self.machines() and 'bl_carte_etudiant' not in serv : + and self.machines() : self.services_to_restart('bl_carte_etudiant') if 'paiement+%s' % ann_scol in self.modifs \ or 'paiement-%s' % ann_scol in self.modifs : for m in self.machines() : - if m.ipsec() and not 'conf_wifi' in serv : + self.services_to_restart('firewall',[m.ip()] ) + self.services_to_restart('firewall-komaz',[m.ip()] ) + self.services_to_restart('dns') + if m.ipsec() : self.services_to_restart('conf_wifi') - elif not self.chbre() in serv : + self.services_to_restart('dhcp-nectaris') + else : self.services_to_restart('switch',[self.chbre()]) - if self.machines() : - for s in ['dhcp', 'dhcp-nectaris', 'dns', 'firewall' ] : - if s not in serv : - serv.append(s) + self.services_to_restart('dhcp') # Vérification si changement de bât, ce qui obligerai un changement d'IP if 'chbre' in self.modifs and self.chbre()!='????' : @@ -1129,8 +1123,8 @@ class base_proprietaire(base_classes_crans) : ret += "\nChangement d'IP machine %s : " % m.nom() try : ret += "%s -> %s" % ( ip, m.ip('') ) - r = m.save() - except c : + m.save() + except Exception, c : ret += coul(u'ERREUR : %s' % c.args[0], rouge) err = 1 @@ -1148,14 +1142,14 @@ class base_proprietaire(base_classes_crans) : chgpass(self.dn) else : ret += coul(u' Il faudra penser à attribuer un mot de passe\n','jaune') + + # Modif des droits ? + if 'droits' in self.modifs : + self.services_to_restart('droits') - # Remise à zero self.modifs=[] - for s in serv : - self.services_to_restart(s) - return ret def _an(self,champ,action) : @@ -2043,7 +2037,7 @@ class machine(base_classes_crans) : ret ='' - # Besion de redémarrer les firewalls ? + # Besoin de redémarrer les firewalls ? if 'ipHostNumber' in self.modifs or 'macAddress' in self.modifs : reconf_ip = self._init_data.get('ipHostNumber',[]) reconf_ip += self._data.get('ipHostNumber',[]) @@ -2067,7 +2061,7 @@ class machine(base_classes_crans) : else : self.services_to_restart('dhcp') if 'ports' in self.modifs : - self.services_to_restart('firewall-komaz', [ self.ip() ] ) + self.services_to_restart('firewall-komaz-ports', [ self.ip() ] ) # Reconfiguration DNS ? if 'host' in self.modifs or 'ipHostNumber' in self.modifs or 'hostAlias' in self.modifs :