def guardar(self):
     g = Grupo.get(self.grupoID)
     ##Cambiamos la , por . para que funcione la conversion a float
     if self.precio:
         self.precio = self.precio.replace(',','.')
     if self.a:
         self.a.precio = self.precio
         self.a.factura = self.factura
         self.a.metalico = self.metalico
         self.a.grupo = g
         self.a.alumno = Alumno.get(self.alumnoID)
         ##Si en la interfaz tenemos confirmado y en BBDD no, confirmamos la asistencia
         if ( self.confirmado and not self.a.confirmado):
             self.set_confirmado()
             return 2
         else:
             self.a.confirmado = self.confirmado
             return 1
     else:
         ##print "Creando Asistencia nuevo"
         ##FIXME comprobar si el grupo no está completo!
         if g.alumnos.__len__() >= g.num_max:
             logging.debug("Grupo completo!")
             mostrar_aviso("Grupo lleno","Grupo lleno")
             return -1
         self.a = Asistencia(alumno=Alumno.get(self.alumnoID),grupo=Grupo.get(self.grupoID),
             precio=self.precio,confirmado=self.confirmado,factura=self.factura,metalico=self.metalico)
         return 0
    def imprimir_etiquetas(self,todos=False,lista_alumnos_elegidos=None,lista_grupos_elegidos=None):
        """Función que imprime etiquetas con los datos de lso alumnos. Si todos es True imprime
        los alumnos dados de baja también"""
        lista = []
        p = Provincias()
        ##Preparamos el docu
        fichero = get_print_path('Alumnos')+"/Etiquetas_Alumnos.pdf"
        c = canvas.Canvas(fichero,pagesize=A4)
        c.translate(mm,mm)

        if todos:
            logging.debug("Imprimimos las etiquetas de todos los alumnos")
            busqueda = Alumno.select()
            
        elif lista_alumnos_elegidos!=None:
            logging.debug("Imprimimos solo ciertos alumnos")
            busqueda = []
            logging.debug(lista_alumnos_elegidos)
            for numero in lista_alumnos_elegidos:
                logging.debug( "Vamos a buscar el alumno %s"%numero)
                try:
                    busqueda.append(Alumno.get(numero))
                except:
                    logging.debug( "No hemos encontrado el alumno con la numero %s"%numero)
            
        elif lista_grupos_elegidos!=None:
            logging.debug("Imprimimos solo ciertos grupos")
            lista_alumnos_elegidos = []
            busqueda = []
            logging.debug(lista_grupos_elegidos)
            for numero in lista_grupos_elegidos:
                logging.debug("Buscando alumnos ne el grupo %s"%numero)
                for asistencia in Asistencia.select(Asistencia.q.grupoID==numero):
                    logging.debug("Añadiendo el alumno %s"%asistencia.alumno.id)
                    busqueda.append(asistencia.alumno)
            logging.debug(lista_alumnos_elegidos)
        else:
            logging.debug( "Imprimimos las etiquetas de los alumnos activos")
            busqueda = Alumno.select(Alumno.q.activo==True)
            
        for alumno in busqueda:
            i = p.get_iter_from_string(str(alumno.provincia))
            provincia = p.get_value(i,1)
            lista.append(["%s %s %s"%(alumno.nombre,alumno.apellido1,alumno.apellido2),"%s"%alumno.direccion,"%s - %s - %s"%(alumno.ciudad,alumno.cp,provincia)])
        ##Con la lista generada vamos a imprimir cada página con 16 etiquetas
        for x in range(0,len(lista),16):
            self.crear_pag_etiquetas(c,lista[x:x+16])
            c.showPage()
        ##Guardamos y listo!
        c.save()
        send_to_printer(fichero)
        return len(lista)
    def cargar(self,id):
        if id == -1:
            for variable in self._lista_variables:
                if variable == 'telefono1' or variable == 'telefono2' or variable == 'cp':
                    setattr(self,variable,0)
                try:
                    setattr(self,variable,'')
                except:
                    print "Error reiniciando %s"%variable
                    pass
            self.provincia=49
            self.banco = 2095
##            self.fecha_nacimiento="2010-03-03"
##            self.telefono1=555444333
##            self.telefono2=0
##            self.cp=48980
##            self.dni="22233444T"
            self.activo=1
            self.id=-1
            ##Limpiaos la lista de grupos
            self.lista_grupos.clear()
            self.lista_historico.clear()
        else:
            self.a = Alumno.get(id)
            for variable in self._lista_variables:
                if (variable == 'fecha_nacimiento'):
                    ##La fecha nacimiento la pasamos a string
                    ##fecha = str(getattr(self.a,variable).isoformat())
                    fecha = "%s-%s-%s"%(str(self.a.fecha_nacimiento.day),str(self.a.fecha_nacimiento.month),str(self.a.fecha_nacimiento.year))
                    self.fecha_nacimiento="%s"%fecha
                elif (variable == 'cuenta'):
                    setattr(self,variable,str(ajustar(getattr(self.a,variable),10)))
                elif (variable == 'dc'):
                    setattr(self,variable,str(ajustar(getattr(self.a,variable),2)))
                elif (variable == 'sucursal'):
                    setattr(self,variable,str(ajustar(getattr(self.a,variable),4)))
                elif (variable == 'banco_codigo'):
                    try:
                        setattr(self,variable,str(ajustar(self.a.banco.codigo,4)))
                    except:
                        setattr(self,variable,"9999")
                else:
                    setattr(self,variable,getattr(self.a,variable))
            self.id=id
            ##refrescamos la lista de grupos a los que quere asistir el alumno
            if self.email == None:
                self.email = "---"
            self.refrescar_lista_grupos()
            self.refrescar_lista_historico()
 def anadir_alumno(self,id):
     if self.id == -1:
         print "Antes debemos guardar el grupo, ya que no existe"
         self.guardar()
     ##Primero comprobamos si el alumno ya está en la lista
     for asistencia in self.g.alumnos:
         if asistencia.alumnoID == id:
             print "El alumno ya está en la lista!"
             return
     ##Obtenemos el alumno de la id
     a = Alumno.get(id)
     print "Añadiendo a %s %s %s"%(a.nombre,a.apellido1,a.apellido2)
     ##Creamos una asistencia sin confirmar para ese alumno
     c = Asistencia(grupo=self.g,alumno=a,confirmado=False)
     ##Refrescamos la lista
     self.rellenar_lista_alumnos()