Пример #1
0
def reporte_proyectoLider(id_proyecto):
    '''
    Funcion que genera el reporte de roles del sistema
    '''

    proyecto=get_object_or_404(Proyecto, id=id_proyecto)
    doc = SimpleDocTemplate(str(settings.BASE_DIR)+"/reporte_proyecto"+proyecto.nombre+".pdf",pagesize=letter,
                            rightMargin=72,leftMargin=72,
                            topMargin=30,bottomMargin=18)

    Story=[]
    logo = str(settings.BASE_DIR)+"/static/icono.png"
    costos=itemsProyecto(id_proyecto)
    total=0
    for costo in costos:
        total=costo.costo+total

    styles=getSampleStyleSheet()
    styles.add(ParagraphStyle(name='Principal',alignment=1,spaceAfter=20, fontSize=24))
    styles.add(ParagraphStyle(name='Justify',fontName='Courier-Oblique', alignment=TA_JUSTIFY, fontSize=14,spaceAfter=5))
    styles.add(ParagraphStyle(name='Titulo', fontName='Helvetica', fontSize=18, alignment=0, spaceAfter=25, spaceBefore=15))
    styles.add(ParagraphStyle(name='Header',fontName='Helvetica',fontSize=20))
    styles.add(ParagraphStyle(name='SubItems',fontName='Helvetica',fontSize=10,spaceAfter=3))
    styles.add(ParagraphStyle(name='Items',fontName='Helvetica',fontSize=12,spaceAfter=10, spaceBefore=10))
    styles.add(ParagraphStyle(name='Subtitulos',fontSize=12,spaceAfter=3))
    styles.add(ParagraphStyle(name='Encabezado',fontSize=10,spaceAfter=10, left=1, bottom=1))
    im = Image(logo, width=100,height=50)
    Story.append(im)
    contador_act=1
    titulo="<b>Proyecto </b>"
    Story.append(Paragraph(titulo,styles['Principal']))
    Story.append(Spacer(1, 12))
    titulo="<b>"+ proyecto.nombre+ "</b>"
    Story.append(Paragraph(titulo,styles['Principal']))
    Story.append(Spacer(1, 12))
    date=datetime.now()
    dateFormat = date.strftime("%d-%m-%Y")
    Story.append(Paragraph('Fecha: ' + str(dateFormat),styles['Subtitulos']))
    name=dibujarProyecto(id_proyecto)
    grafo = str(settings.BASE_DIR)+'/static/img/'+str(name)
    referencias=str(settings.BASE_DIR)+'/static/referencias2.jpg'
    im = Image(grafo)
    h=im.imageHeight*0.35
    w=im.imageWidth*0.35
    im2=Image(referencias)
    im = Image(grafo,width=w,height=h)
    h=im2.imageHeight*0.15
    w=im2.imageWidth*0.15
    im2=Image(referencias, width=w, height=h)
    Story.append(im)
    Story.append(im2)
    text ="<strong>Descripcion: </strong>" + proyecto.descripcion+ "<br>"
    Story.append(Paragraph(text, styles["Items"]))
    text ="<strong>Observaciones: </strong>" + proyecto.observaciones+ "<br>"
    Story.append(Paragraph(text, styles["Items"]))
    text ="<strong>Costo Total: </strong>" + str(total) + " GS <br>"
    Story.append(Paragraph(text, styles["Items"]))
    dato=get_object_or_404(Proyecto,pk=id_proyecto)
    dateFormat = dato.fecha_ini.strftime("%d-%m-%Y")
    text ="<strong>Fecha de inicio: </strong>" + dateFormat+ "<br>"
    Story.append(Paragraph(text, styles["Items"]))
    dateFormat = dato.fecha_fin.strftime("%d-%m-%Y")
    text ="<strong>Fecha de finalizacion planificada: </strong>" + dateFormat+ "<br>"
    Story.append(Paragraph(text, styles["Items"]))
    if proyecto.estado=='FIN':
        dateFormat = dato.fecha_fin_real.strftime("%d-%m-%Y")
        text ="<strong>Fecha de finalizacion real: </strong>" + dateFormat+ "<br>"
        Story.append(Paragraph(text, styles["Items"]))
        today = datetime.now() #fecha actual
        dateFormat = today.strftime("%Y-%m-%d") # fecha con format
        dias=proyecto.fecha_fin_real-proyecto.fecha_fin
        dias= int(str(dias.days))
        if dias>0:
            text ="<strong>Se ha atrasado: </strong>" + "<b style=\"color=red\">" + str(dias) +"</b>"+ " dia(s)" "<br>"
            Story.append(Paragraph(text, styles["Items"]))
        else:
            if dias<0:

                dias=dias*-1
                text ="<strong>Se ha adelantado: </strong>" + '<b style="color=green">' + str(dias) +"</b>"+ " dia(s)" "<br>"
                Story.append(Paragraph(text, styles["Items"]))
            else:
                text ="<strong>Finalizado en el plazo estimado: </strong>"
                Story.append(Paragraph(text, styles["Items"]))

    else:
        today = datetime.now() #fecha actual
        dateFormat = today.strftime("%Y-%m-%d") # fecha con format
        dias=today.date()-proyecto.fecha_fin
        dias= int(str(dias.days))
        if dias>0:
            text ="<strong>Proyecto atrasado: </strong>" + "<b style=\"color=red\">" + str(dias) +"</b>"+ " dia(s)" "<br>"
            Story.append(Paragraph(text, styles["Items"]))
        else:
            if dias<=0:

                dias=dias*-1
                text ="<strong>Quedan: </strong>" + '<b style="color=green">' + str(dias) +"</b>"+ " dia(s) para finalizar el proyecto" "<br>"
                Story.append(Paragraph(text, styles["Items"]))



    comite = User.objects.filter(comite__id=id_proyecto)
    text ="<strong>Miembros del comite: </strong> <br>"
    Story.append(Paragraph(text, styles["Items"]))
    for  miembro in comite:
        Story.append(Indenter(30))
        text ="- " + miembro.first_name + " " + miembro.last_name + "<br>"
        Story.append(Paragraph(text, styles["SubItems"]))
        Story.append(Indenter(-30))
    lider = get_object_or_404(User, pk=dato.lider_id)
    text ="<strong>Lider: </strong>"  + lider.first_name + " " + lider.last_name + "<br>"
    Story.append(Paragraph(text, styles["Items"]))
    fases=Fase.objects.filter(proyecto_id=id_proyecto)
    nombre_roles=[]
    text ="<strong>Equipo: </strong>" "<br>"
    Story.append(Paragraph(text, styles["Items"]))
    for fase in fases:
        roles=Group.objects.filter(fase__id=fase.id)
        for rol in roles:
            nombre_roles.append(rol)
            u=User.objects.filter(groups__id=rol.id)
            for user in u:
                Story.append(Indenter(30))
                uu=user.first_name + " " + user.last_name  +  "  -  " + rol.name  +" en la fase   " + fase.nombre +"\n"
                Story.append(Paragraph(uu, styles["SubItems"]))
                Story.append(Indenter(-30))


    doc.build(Story)
    return str(settings.BASE_DIR)+"/reporte_proyecto"+proyecto.nombre+".pdf"