Index: controlies/trunk/debian/changelog
===================================================================
--- controlies/trunk/debian/changelog	(revision 181)
+++ controlies/trunk/debian/changelog	(revision 182)
@@ -1,3 +1,9 @@
+controlies (0.4-1) unstable; urgency=low
+
+  * Añadida funcionalidad de rayuela a ldap
+
+ -- José L. Redrejo Rodríguez <jredrejo@debian.org>  Thu, 30 Jun 2011 14:03:14 +0200
+
 controlies (0.3-3) unstable; urgency=low
 
   * Añade profesores al grupo teachers y alumnos al students
Index: controlies/trunk/applications/controlies/controllers/usuarios.py
===================================================================
--- controlies/trunk/applications/controlies/controllers/usuarios.py	(revision 181)
+++ controlies/trunk/applications/controlies/controllers/usuarios.py	(revision 182)
@@ -4,6 +4,7 @@
 def index():    
     return dict()
 
+
 @service.json
 @auth.requires_login()
 def list():
Index: controlies/trunk/applications/controlies/controllers/gestion.py
===================================================================
--- controlies/trunk/applications/controlies/controllers/gestion.py	(revision 181)
+++ controlies/trunk/applications/controlies/controllers/gestion.py	(revision 182)
@@ -3,6 +3,7 @@
 from applications.controlies.modules.Rayuela2Ldap import Rayuela  
 import applications.controlies.modules.Utils.LdapUtils as LdapUtils
 
+    
 @service.json   
 @auth.requires_login()
 def servidores_aula():
@@ -41,6 +42,8 @@
 @auth.requires_login()    
 def rayuela():
     import StringIO
+    if not "archivos" in session.keys():
+        session.archivos=[]    
     form=SQLFORM.factory(Field('principiocurso','boolean',default=False ),submit_button='Enviar')
     if form.accepts(request.vars, session):
         response.flash = 'Procesando datos, espere'
@@ -63,7 +66,7 @@
                 lista_completa +=[("--",)]
                 
             session.archivos=[]    
-            LdapUtils.sanea_grupos(l)                               
+            #LdapUtils.sanea_grupos(l)                               
             l.close()
             
             #generamos el archivo de salida 
@@ -124,7 +127,6 @@
             #
             # Re-arange file
             #
-            
             filename=file.replace(' ','_')
             filepath=parentpath+filename
             f = open(filepath, 'wb')
@@ -131,6 +133,7 @@
             data=request.body.read()
             f.write(data)
             f.close()
+           
             session.archivos.append(filepath)
             
             print session.archivos
Index: controlies/trunk/applications/controlies/modules/Rayuela2Ldap.py
===================================================================
--- controlies/trunk/applications/controlies/modules/Rayuela2Ldap.py	(revision 181)
+++ controlies/trunk/applications/controlies/modules/Rayuela2Ldap.py	(revision 182)
@@ -42,6 +42,7 @@
         self.esAlumnos=False
         self.ldap_con =conexion
         self.usuarios=[]
+        self.dni_usuarios=[]
         self.archivo=archivo
 
 
@@ -155,17 +156,19 @@
         """Convierte la foto del alumno a un tamaño pequeño y 
         en un formato gráfico aceptable en ldap"""
         archivo=os.path.join("/tmp/rayuela-ldap/",grafico)
-        im = Image.open(archivo)
-        im.thumbnail((60,80), Image.ANTIALIAS)
-        if im.mode != "RGB":
-            im = im.convert("RGB")
-        buf= StringIO.StringIO()
         try:
-            im.save(buf, format= 'JPEG')
-            resultado=buf.getvalue()
-        except Exception,e:
+            im = Image.open(archivo)
+            im.thumbnail((60,80), Image.ANTIALIAS)
+            if im.mode != "RGB":
+                im = im.convert("RGB")
+            buf= StringIO.StringIO()
+            try:
+                im.save(buf, format= 'JPEG')
+                resultado=buf.getvalue()
+            except Exception,e:
+                return None
+        except:
             return None
-            
         return  resultado
     
 
@@ -195,6 +198,7 @@
                     usuario[info.nodeName]=self.asegura_codigos(dato)
                 
         self.usuarios.append(usuario)
+        self.dni_usuarios.append(usuario["dni"])
 
     
     def parsea_archivo(self,archivo_xml,tipo):
@@ -336,20 +340,24 @@
     def lista_antiguos(self,grupo):
         """Devuelve el listado de los dni de los usuarios que ya estaban en ldap antes"""
         lista={}
-        try:
-            resultado=self.ldap_con.search("ou=Group","cn=" + grupo ,["memberuid"])
-         
-            miembros=resultado[0][0][1]['memberUid']
-            if len(miembros) > 0:
-                for usuario in miembros:
-                    dato=self.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]                 
+        home="/home/" + grupo
+        comparar=home[:13]
+
+        #resultado=self.ldap_con.search("ou=Group","cn=" + grupo ,["memberuid"])
+        resultado=self.ldap_con.search("ou=People","objectClass=person" , ["employeeNumber","uid","homeDirectory"])
+        miembros=[]
+        for i in resultado:
+            if i[0][1]['homeDirectory'][0][:13]==comparar: miembros.append(i)
+
+        if len(miembros) > 0:
+            for dato in miembros:
+                if len(dato) > 0:
+                    try:
+                        dni=dato[0][1]['employeeNumber'][0]
+                        uid=dato[0][1]['uid'][0]                 
                         lista[dni]=uid
-
-        except:
-            pass
+                    except:
+                        continue
             
         return lista
 
@@ -357,19 +365,20 @@
     def borra_antiguos(self,viejos):
         """Borra de la base de datos de ldap a los usuarios que estaban 
         en la lista de viejos y no están en la de nuevos"""
+        borrables={}
 
-        for usuario in self.usuarios:
-            if usuario['dni'] in viejos:
-                viejos.pop(usuario['dni'])
-                    
-        for viejo in viejos:
+        for usuario in viejos:
+            if not usuario in self.dni_usuarios:
+                borrables[usuario]=viejos[usuario]
+                            
+        for viejo in borrables:
             try:
-                self.ldap_con.delete('uid='+ viejos[viejo] +',ou=People')
-                self.ldap_con.delete("cn="+ viejos[viejo] +",ou=Group")
+                self.ldap_con.delete('uid='+ borrables[viejo] +',ou=People')
+                self.ldap_con.delete("cn="+ borrables[viejo] +",ou=Group")
             except:
                 pass #algún dato ya estaba borrado
+
     
-    
     def gestiona_archivo(self):
         """Función principal que a partir del archivo hace todo en ldap"""
         
@@ -383,10 +392,11 @@
             if intento!="": 
                 print "PROBLEMAS",intento
             else:
+                usuarios_antiguos=self.lista_antiguos("alumnos")
                 self.parsea_archivo("/tmp/rayuela-ldap/Alumnos.xml","alumno")
                 aulas=self.lista_grupos(self.usuarios,"grupo")
-                
         else:
+            usuarios_antiguos=self.lista_antiguos("profesor")
             self.parsea_archivo(self.archivo,"profesor")
             dptos=self.lista_grupos(self.usuarios,"departamento","SIN_DPTO")
             
@@ -395,17 +405,17 @@
         total=self.crea_usuarios()
         
         if self.esAlumnos:
-            usuarios_antiguos=self.lista_antiguos("students")
+            
          
             LdapUtils.clean_students(self.ldap_con )   
             self.rellena_students()    
             self.usuarios_grupos(aulas)
         else:
-            usuarios_antiguos=self.lista_antiguos("teachers")
+            
             LdapUtils.clean_teachers(self.ldap_con )
             self.rellena_teachers()
             self.usuarios_grupos(dptos)
-        
+
         if self.borrando:
             self.borra_antiguos(usuarios_antiguos) 
                   
@@ -431,7 +441,7 @@
         pass #problema de permisos o directorio ya creado
         
     archivo="/opt/instituto/santaeulalia/ExportacionDatosAlumnado.zip"
-    archivo="/tmp/ExportacionDatosProfesorado.xml"
+    archivo="/tmp/ExportacionDatosAlumnado.zip"
     
     rayuela=Rayuela(ldap_con,archivo,True)
     todos=rayuela.gestiona_archivo()
Index: controlies/trunk/applications/controlies/modules/LdapConnection.py
===================================================================
--- controlies/trunk/applications/controlies/modules/LdapConnection.py	(revision 181)
+++ controlies/trunk/applications/controlies/modules/LdapConnection.py	(revision 182)
@@ -130,6 +130,8 @@
             print "error"
         except ldap.NO_SUCH_OBJECT:
             print "no_such_object"
+        except Exception,e:
+            print e
             
         return True
         
