Index: controlies/trunk/applications/controlies/modules/Utils/LdapUtils.py
===================================================================
--- controlies/trunk/applications/controlies/modules/Utils/LdapUtils.py	(revision 179)
+++ controlies/trunk/applications/controlies/modules/Utils/LdapUtils.py	(revision 180)
@@ -99,7 +99,7 @@
     import ldap
     import ldap.modlist
 
-    result = ldap_con.search("ou=Group",tipo_grupo,["member","memberuid","cn"])
+    result = ldap_con.search("ou=Group",tipo_grupo,["member","memberUid","cn"])
     if result is not None:
         for grupo in result:
             dn="cn="+ grupo[0][1]['cn'][0] + ",ou=Group"
@@ -108,3 +108,40 @@
             modificacion=ldap.modlist.modifyModlist(attr_viejo,attr_nuevo)
             ldap_con.modify(dn, modificacion)
 
+
+def sanea_grupos(ldap_con):
+    """borrar de los grupos usuarios que ya no existen"""
+    import ldap
+    import ldap.modlist    
+    tipos=('school_class','school_department')
+    grupos=['teachers','students']
+    
+    #obtengo todos los grupos
+    for tipo in tipos:
+        result=ldap_con.search('ou=Group','groupType=' + tipo,['cn'])
+        if len(result)>0:
+            for i in result:
+                grupos.append(i[0][1]['cn'][0])
+                
+    #en cada grupo borro usuarios     
+    for grupo in grupos:
+        result=ldap_con.search('ou=Group','cn=' + grupo,['memberUid','member'])
+        if len(result)>0:
+            listado=result[0][0][1]['memberUid']
+            listado_members=result[0][0][1]['member']
+            modificar=False
+            for usuario in listado:
+                if usuario!='':
+                    existe=len(ldap_con.search('ou=People','uid=' + usuario,['cn']))>0
+                    if not existe:
+                        modificar=True
+                        listado.remove(usuario)
+                        listado_members.remove('uid=' + usuario + ',ou=People,dc=instituto,dc=extremadura,dc=es')
+
+            if modificar:
+                attr_viejo=ldap_con.search('ou=Group','cn=' + grupo,['memberUid','member'])[0][0][1]
+                attr_nuevo={'member':listado_members,'memberUid':listado}
+                dn="cn="+ grupo + ",ou=Group"
+                modificacion=ldap.modlist.modifyModlist(attr_viejo,attr_nuevo)
+                ldap_con.modify(dn, modificacion)                
+
Index: controlies/trunk/applications/controlies/modules/Rayuela2Ldap.py
===================================================================
--- controlies/trunk/applications/controlies/modules/Rayuela2Ldap.py	(revision 179)
+++ controlies/trunk/applications/controlies/modules/Rayuela2Ldap.py	(revision 180)
@@ -33,7 +33,7 @@
 from Users import Users
 from Groups import Groups
     
-borrando=False
+borrando=True
 esAlumnos=False
 ldap_con=None
 
@@ -309,6 +309,44 @@
             except Exception,e:
                 print e 
 
+
+def lista_antiguos(ldap_con,grupo):
+    lista={}
+    try:
+        resultado=ldap_con.search("ou=Group","cn=" + grupo ,["memberuid"])
+     
+        miembros=resultado[0][0][1]['memberUid']
+        if len(miembros) > 0:
+            for usuario in miembros:
+                dato=ldap_con.search("ou=People","uid=" + usuario ,["employeeNumber","uid"])
+                if len(dato) > 0:
+                    dni=dato[0][0][1]['employeeNumber'][0]
+                    uid=dato[0][0][1]['uid'][0]                 
+                    lista[dni]=uid
+                    
+    
+    except:
+        pass
+        
+    return lista
+
+
+def borra_antiguos(ldap_con,viejos,nuevos):
+
+    for usuario in nuevos:
+        if usuario['dni'] in viejos:
+            viejos.pop(usuario['dni'])
+                
+    for viejo in viejos:
+        try:
+            ldap_con.delete('uid='+ viejos[viejo] +',ou=People')
+            ldap_con.delete("cn="+ viejos[viejo] +",ou=Group")
+        except:
+            pass #algún dato ya estaba borrado
+    
+    
+
+    
 if __name__ == '__main__':    
     #El código siguiente es sólo para depuración y desarrollo
     #No tiene sentido fuera de ese contexto
@@ -316,6 +354,7 @@
     import Utils.LdapUtils as LdapUtils
     aulas={}
     dptos={}
+
     session=Storage()
     session.server="ldap"
     session.username="admin"
@@ -323,6 +362,7 @@
     
     ldap_con=LdapConnection.LdapConnection(session)
     ldap_con.process()
+
     
     try:
         os.mkdir( "/tmp/rayuela-ldap")
@@ -334,7 +374,6 @@
     
     esAlumnos=(archivo[-4:].lower()==".zip")
     
-    
     if esAlumnos:
         intento=unzip_alumnos(archivo)
         if intento!="": 
@@ -347,7 +386,6 @@
         parsea_archivo(archivo,"profesor")
         dptos=lista_grupos(usuarios,"departamento","SIN_DPTO")
         
-        
     crea_grupos(ldap_con,aulas)  
     crea_grupos(ldap_con,dptos)
     total=crea_usuarios(ldap_con,usuarios)
@@ -354,14 +392,24 @@
     print total
 
     if esAlumnos:
+        usuarios_antiguos=lista_antiguos(ldap_con,"students")
+     
         LdapUtils.clean_students(ldap_con)   
         rellena_students(ldap_con,usuarios)    
         usuarios_grupos(ldap_con,aulas)
     else:
+        usuarios_antiguos=lista_antiguos(ldap_con,"teachers")
         LdapUtils.clean_teachers(ldap_con)
         rellena_teachers(ldap_con,usuarios)
         usuarios_grupos(ldap_con,dptos)
     
+    if borrando:
+        borra_antiguos(ldap_con,usuarios_antiguos,usuarios) 
+              
+    LdapUtils.sanea_grupos(ldap_con)
+        
+        
+
     
         
     
