Exemple #1
0
    def test4(self):
        "Construct CMYK instances and test round trip conversion"

        rgbCols = list(colors.getAllNamedColors().items())

        # Make a roundtrip test (RGB > CMYK > RGB).
        for name, rgbCol in rgbCols:
            r1, g1, b1 = rgbCol.red, rgbCol.green, rgbCol.blue
            c, m, y, k = colors.rgb2cmyk(r1, g1, b1)
            cmykCol = colors.CMYKColor(c, m, y, k)
            r2, g2, b2 = cmykCol.red, cmykCol.green, cmykCol.blue  #colors.cmyk2rgb((c, m, y, k))
            rgbCol2 = colors.Color(r2, g2, b2)

            # Make sure the differences for each RGB component
            # isreally small (< power(10, -N)!
            N = 16  # max. value found to work on Python2.0 and Win2K.
            deltas = list(map(abs, (r1 - r2, g1 - g2, b1 - b2)))
            assert deltas < [math.pow(10, -N)] * 3
    def test4(self):
        "Construct CMYK instances and test round trip conversion"

        rgbCols = colors.getAllNamedColors().items()

        # Make a roundtrip test (RGB > CMYK > RGB).
        for name, rgbCol in rgbCols:
            r1, g1, b1 = rgbCol.red, rgbCol.green, rgbCol.blue
            c, m, y, k = colors.rgb2cmyk(r1, g1, b1)
            cmykCol = colors.CMYKColor(c,m,y,k)
            r2, g2, b2 = cmykCol.red, cmykCol.green, cmykCol.blue #colors.cmyk2rgb((c, m, y, k))
            rgbCol2 = colors.Color(r2, g2, b2)

            # Make sure the differences for each RGB component
            # isreally small (< power(10, -N)!
            N = 16 # max. value found to work on Python2.0 and Win2K.
            deltas = map(abs, (r1-r2, g1-g2, b1-b2))
            assert deltas < [math.pow(10, -N)] * 3
    def test5(self):
        "List and display all named colors and their gray equivalents."

        canvas = reportlab.pdfgen.canvas.Canvas(outputfile('test_lib_colors.pdf'))

        #do all named colors
        framePage(canvas, 'Color Demo - page %d' % canvas.getPageNumber())

        all_colors = reportlab.lib.colors.getAllNamedColors().items()
        all_colors.sort() # alpha order by name
        canvas.setFont('Times-Roman', 10)
        text = 'This shows all the named colors in the HTML standard (plus their gray and CMYK equivalents).'
        canvas.drawString(72,740, text)

        canvas.drawString(200,725,'Pure RGB')
        canvas.drawString(300,725,'B&W Approx')
        canvas.drawString(400,725,'CMYK Approx')

        y = 700
        for (name, color) in all_colors:
            canvas.setFillColor(colors.black)
            canvas.drawString(100, y, name)
            canvas.setFillColor(color)
            canvas.rect(200, y-10, 80, 30, fill=1)
            canvas.setFillColor(colors.color2bw(color))
            canvas.rect(300, y-10, 80, 30, fill=1)

            c, m, yel, k = colors.rgb2cmyk(color.red, color.green, color.blue)
            CMYK = colors.CMYKColor(c,m,yel,k)
            canvas.setFillColor(CMYK)
            canvas.rect(400, y-10, 80, 30, fill=1)

            y = y - 40
            if y < 100:
                canvas.showPage()
                framePage(canvas, 'Color Demo - page %d' % canvas.getPageNumber())
                canvas.setFont('Times-Roman', 10)
                y = 700
                canvas.drawString(200,725,'Pure RGB')
                canvas.drawString(300,725,'B&W Approx')
                canvas.drawString(400,725,'CMYK Approx')

        canvas.save()
Exemple #4
0
    def test3(self):
        "Test roundtrip RGB to CMYK conversion."

        # Take all colors as test subjects, except 'transparent'.
        ##        rgbCols = colors.getAllNamedColors()
        ##        del rgbCols['transparent']
        rgbCols = list(colors.getAllNamedColors().items())

        # Make a roundtrip test (RGB > CMYK > RGB).
        for name, rgbCol in rgbCols:
            r1, g1, b1 = rgbCol.red, rgbCol.green, rgbCol.blue
            c, m, y, k = colors.rgb2cmyk(r1, g1, b1)
            r2, g2, b2 = colors.cmyk2rgb((c, m, y, k))
            rgbCol2 = colors.Color(r2, g2, b2)

            # Make sure the differences for each RGB component
            # isreally small (< power(10, -N)!
            N = 16  # max. value found to work on Python2.0 and Win2K.
            deltas = list(map(abs, (r1 - r2, g1 - g2, b1 - b2)))
            assert deltas < [math.pow(10, -N)] * 3
    def test3(self):
        "Test roundtrip RGB to CMYK conversion."

        # Take all colors as test subjects, except 'transparent'.
##        rgbCols = colors.getAllNamedColors()
##        del rgbCols['transparent']
        rgbCols = colors.getAllNamedColors().items()

        # Make a roundtrip test (RGB > CMYK > RGB).
        for name, rgbCol in rgbCols:
            r1, g1, b1 = rgbCol.red, rgbCol.green, rgbCol.blue
            c, m, y, k = colors.rgb2cmyk(r1, g1, b1)
            r2, g2, b2 = colors.cmyk2rgb((c, m, y, k))
            rgbCol2 = colors.Color(r2, g2, b2)

            # Make sure the differences for each RGB component
            # isreally small (< power(10, -N)!
            N = 16 # max. value found to work on Python2.0 and Win2K.
            deltas = map(abs, (r1-r2, g1-g2, b1-b2))
            assert deltas < [math.pow(10, -N)] * 3
def force_cmyk(rgb):
    c, m, y, k = colors.rgb2cmyk(rgb.red, rgb.green, rgb.blue)
    return colors.CMYKColor(c, m, y, k, alpha=rgb.alpha)
Exemple #7
0
    def post(self, request, *args, **kwargs):
        from django.http import HttpResponse
        import datetime
        # Obtenemos de platypus las clases Paragraph, para escribir parrafos Image, para insertar imagenes y SimpleDocTemplate para definir el DocTemplate. Ademas importamos Spacer, para incluir espacios .
        from reportlab.platypus import Paragraph
        from reportlab.platypus import SimpleDocTemplate
        from reportlab.platypus import Spacer
        from reportlab.platypus import Table
        # Importamos clase de hoja de estilo de ejemplo.
        from reportlab.lib.styles import getSampleStyleSheet

        # Se importa el tamanho de la hoja y los colores
        from reportlab.lib.pagesizes import A4
        from reportlab.lib import colors
        diccionario={}
        usuario_logueado= Usuario.objects.get(id=request.POST['login'])
        proyecto_actual= Proyecto.objects.get(id=request.POST['proyecto'])
        diccionario['logueado']=usuario_logueado
        diccionario['proyecto']=proyecto_actual
        if not proyecto_actual.lider == usuario_logueado:
            diccionario['error']= 'No puedes realizar esta accion'
            diccionario['lista_fases']= Fase.objects.filter(proyecto= proyecto_actual)
            return render(request, super(Reporte_SC, self).template_name, diccionario)

        # Creamos un PageTemplate de ejemplo.
        estiloHoja = getSampleStyleSheet()

        #Inicializamos la lista Platypus Story.
        story = []

        #Definimos como queremos que sea el estilo de la PageTemplate.
        cabecera = estiloHoja['Heading5']

        #No se hara un salto de pagina despues de escribir la cabecera (valor 1 en caso contrario).
        cabecera.pageBreakBefore=0

        # Se quiere que se empiece en la primera pagina a escribir. Si es distinto de 0 deja la primera hoja en blanco.
        cabecera.keepWithNext=0

        # Color de la cabecera.
        cabecera.backColor=colors.white
        cabecera.spaceAfter = 0
        cabecera.spaceBefore = 0

        parrafo = Paragraph('.',cabecera)
        story.append(parrafo)
        parrafo = Paragraph('REPORTE DE SOLICITUDES DE CAMBIO DEL PROYECTO: '+ proyecto_actual.nombre,cabecera)
        story.append(parrafo)
        parrafo = Paragraph('-'*193,cabecera)
        story.append(parrafo)

        # Incluimos un Flowable, que en este caso es un parrafo.
        cabecera2 = estiloHoja['Heading3']
        cabecera2.pageBreakBefore=0
        cabecera2.keepWithNext=0
        cabecera2.backColor=colors.white

        parrafo = Paragraph('   ',cabecera2)
        # Lo incluimos en el Platypus story.
        story.append(parrafo)

        # Definimos un parrafo. Vamos a crear un texto largo para demostrar como se genera mas de una hoja.
        lista = []
        lista.append(['LISTA DE SOLICITUDES DE CAMBIO','','','','', '', ''])
        lista.append([' ',' ',' ',' ',' ', ' ', ' '])
        lista.append(['ID','LINEA BASE','DETALLES','ESTADO','USUARIO', 'COSTO','VOTO LIDER'])
        solicitudes= (Solicitud_de_Cambios.objects.filter(proyecto=proyecto_actual)).order_by('id')
        for solicitud in solicitudes:
            voto=Voto.objects.filter(usuario=proyecto_actual.lider, solicitud_de_cambios=solicitud)
            if len(voto):
                if voto[0].voto=='Pe':
                    if solicitud.estado=='A':
                        lista.append([solicitud.id,solicitud.item_sc_aprobado.lineaBase.nombre,solicitud.descripcion,solicitud.estado,solicitud.usuario.nombre,solicitud.costo_del_impacto,'Pendiente'])
                    else:
                        lista.append([solicitud.id,solicitud.item_sc_desaprobado.lineaBase.nombre,solicitud.descripcion,solicitud.estado,solicitud.usuario.nombre,solicitud.costo_del_impacto,'Pendiente'])
                else:
                    if solicitud.estado=='A':
                        lista.append([solicitud.id,solicitud.item_sc_aprobado.lineaBase.nombre,solicitud.descripcion,solicitud.estado,solicitud.usuario.nombre,solicitud.costo_del_impacto,'Realizado'])
                    else:
                        lista.append([solicitud.id,solicitud.item_sc_desaprobado.lineaBase.nombre,solicitud.descripcion,solicitud.estado,solicitud.usuario.nombre,solicitud.costo_del_impacto,'Realizado'])
            else:
                if solicitud.estado=='A':
                    lista.append([solicitud.id,solicitud.item_sc_aprobado.lineaBase.nombre,solicitud.descripcion,solicitud.estado,solicitud.usuario.nombre,solicitud.costo_del_impacto,'Lider NO es Miembro'])
                else:
                    lista.append([solicitud.id,solicitud.item_sc_desaprobado.lineaBase.nombre,solicitud.descripcion,solicitud.estado,solicitud.usuario.nombre,solicitud.costo_del_impacto,'Lider NO es Miembro'])
        t=Table( lista, style = [
                       ('GRID',(0,0),(-1,-1),0.5,colors.white),
                       ('BOX',(0,0),(-1,-1),2,colors.white),
                       ('SPAN',(0,0),(-1,0)),
                       ('ROWBACKGROUNDS', (0, 3), (-1, -1), (colors.Color(0.9, 0.9, 0.9),colors.white)),
                       ('BACKGROUND', (0, 2), (-1, 2), colors.rgb2cmyk(r=6,g=62,b=193)),
                       ('BACKGROUND', (0, 1), (-1, 1), colors.white),
                       ('LINEABOVE',(0,0),(-1,0),1.5,colors.black),
                       ('LINEBELOW',(0,0),(-1,0),1.5,colors.black),
                       ('SIZE',(0,0),(-1,0),12),
                       ('ALIGN', (0, 0), (-1, 0), 'CENTER'),
                       ('VALIGN', (0, 0), (-1, 0), 'MIDDLE'),
                       ('TEXTCOLOR', (0, 2), (-1, 2), colors.white),
                       ]
              )
        # Y lo incluimos en el story.
        story.append(t)

        # Dejamos espacio.
        story.append(Spacer(0,20))

        # Creamos un DocTemplate en una hoja DIN A4, en la que se muestra el texto enmarcado (showBoundary=1) por un recuadro.
        doc=SimpleDocTemplate("Rep_Solc_Camb.pdf",pagesize=A4, rightMargin=1, leftMargin=1, topMargin=0, bottomMargin=0)

        parrafo = Paragraph('-'*193,cabecera)
        story.append(parrafo)
        parrafo = Paragraph('Fin del Informe' + ' '*100 + '('+str(datetime.date.today()) + ')' ,cabecera)
        story.append(parrafo)

        # Construimos el Platypus story.
        doc.build(story)

        image_data = open("Rep_Solc_Camb.pdf", "rb").read()
        return HttpResponse(image_data, mimetype="application/pdf")
Exemple #8
0
    def post(self, request, *args, **kwargs):
        proyecto_actual= Proyecto.objects.get(id=request.POST['proyecto'])
        from django.http import HttpResponse
        import os
        import datetime
        # Obtenemos de platypus las clases Paragraph, para escribir parrafos Image, para insertar imagenes y SimpleDocTemplate para definir el DocTemplate. Ademas importamos Spacer, para incluir espacios .
        from reportlab.platypus import Paragraph
        from reportlab.platypus import SimpleDocTemplate
        from reportlab.platypus import Spacer
        from reportlab.platypus import Table

        # Importamos clase de hoja de estilo de ejemplo.
        from reportlab.lib.styles import getSampleStyleSheet

        # Se importa el tamanho de la hoja y los colores
        from reportlab.lib.pagesizes import A4
        from reportlab.lib import colors


        # Creamos un PageTemplate de ejemplo.
        estiloHoja = getSampleStyleSheet()

        #Inicializamos la lista Platypus Story.
        story = []

        #Definimos como queremos que sea el estilo de la PageTemplate.
        cabecera = estiloHoja['Heading5']

        #No se hara un salto de pagina despues de escribir la cabecera (valor 1 en caso contrario).
        cabecera.pageBreakBefore=0

        # Se quiere que se empiece en la primera pagina a escribir. Si es distinto de 0 deja la primera hoja en blanco.
        cabecera.keepWithNext=0



        # Color de la cabecera.
        cabecera.backColor=colors.white
        cabecera.spaceAfter = 0
        cabecera.spaceBefore = 0

        parrafo = Paragraph('.',cabecera)
        story.append(parrafo)
        parrafo = Paragraph('REPORTE DE ITEMS DEL PROYECTO: '+ proyecto_actual.nombre,cabecera)
        story.append(parrafo)
        parrafo = Paragraph('-'*193,cabecera)
        story.append(parrafo)

        # Incluimos un Flowable, que en este caso es un parrafo.

        cabecera2 = estiloHoja['Heading3']
        cabecera2.pageBreakBefore=0
        cabecera2.keepWithNext=0
        cabecera2.backColor=colors.white

        parrafo = Paragraph('   ',cabecera2)
        # Lo incluimos en el Platypus story.
        story.append(parrafo)

        # Definimos un parrafo. Vamos a crear un texto largo para demostrar como se genera mas de una hoja.
        lista = []
        lista.append(['LISTA DE ITEMS POR FASE','','','','', '', ''])
        lista.append([' ',' ',' ',' ',' ', ' ', ' '])
        lista.append(['FASE','ID ITEM','NOMBRE','TIPO DE ITEM','ITEM PADRE', 'VERSION', 'COSTO'])
        fases = (Fase.objects.filter(proyecto=proyecto_actual)).order_by('numeroSecuencia')
        for fase in fases:
            lista.append([fase.nombre,' ',' ',' ',' ', ' ', ' '])
            items=(Item.objects.filter(fase=fase, activo= True)).order_by('id')
            if len(items):
                for item in items:
                    papa_item=Relacion.objects.filter(item2=item, activo=True)
                    if len(papa_item):
                        lista.append(['',item.id,item.nombre,item.tipodeItemAsociado,papa_item[0].item1.nombre,item.version,item.costo])
                    else:
                        lista.append(['',item.id,item.nombre,item.tipodeItemAsociado,'NO',item.version,item.costo])
            else:
                lista.append(['',' - ',' - ',' - ',' - ',' - ',' - '])
        t=Table( lista, style = [
                       ('GRID',(0,0),(-1,-1),0.5,colors.white),
                       ('BOX',(0,0),(-1,-1),2,colors.white),
                       ('SPAN',(0,0),(-1,0)),
                       ('ROWBACKGROUNDS', (0, 3), (-1, -1), (colors.Color(0.9, 0.9, 0.9),colors.white)),
                       ('BACKGROUND', (0, 2), (-1, 2), colors.rgb2cmyk(r=6,g=62,b=193)),
                       ('BACKGROUND', (0, 1), (-1, 1), colors.white),
                       ('LINEABOVE',(0,0),(-1,0),1.5,colors.black),
                       ('LINEBELOW',(0,0),(-1,0),1.5,colors.black),
                       ('SIZE',(0,0),(-1,0),12),
                       ('ALIGN', (0, 0), (-1, 0), 'CENTER'),
                       ('VALIGN', (0, 0), (-1, 0), 'MIDDLE'),
                       ('TEXTCOLOR', (0, 2), (-1, 2), colors.white),
                       ]
              )
        # Y lo incluimos en el story.
        story.append(t)

        # Dejamos espacio.
        story.append(Spacer(0,20))

        # Creamos un DocTemplate en una hoja DIN A4, en la que se muestra el texto enmarcado (showBoundary=1) por un recuadro.
        doc=SimpleDocTemplate("Rep_items.pdf",pagesize=A4, rightMargin=1, leftMargin=1, topMargin=0, bottomMargin=0)

        parrafo = Paragraph('-'*193,cabecera)
        story.append(parrafo)
        parrafo = Paragraph('Fin del Informe' + ' '*100 + '('+str(datetime.date.today()) + ')' ,cabecera)
        story.append(parrafo)

        # Construimos el Platypus story.
        doc.build(story)

        image_data = open("Rep_items.pdf", "rb").read()
        return HttpResponse(image_data, mimetype="application/pdf")
Exemple #9
0
    def get(self, request, *args, **kwargs):
        p = Proyectos.objects.get(id=self.kwargs['id'])
        import os
        # Obtenemos de platypus las clases Paragraph, para escribir parrafos Image, para insertar imagenes y SimpleDocTemplate para definir el DocTemplate. Ademas importamos Spacer, para incluir espacios .
        from reportlab.platypus import Paragraph
        from reportlab.platypus import Image
        from reportlab.platypus import SimpleDocTemplate
        from reportlab.platypus import Spacer
        from reportlab.platypus import Table
        from reportlab.lib import styles

        # Importamos clase de hoja de estilo de ejemplo.
        from reportlab.lib.styles import getSampleStyleSheet

        # Se importa el tamanho de la hoja y los colores
        from reportlab.lib.pagesizes import A4
        from reportlab.lib import colors

        # Creamos un PageTemplate de ejemplo.
        estiloHoja = getSampleStyleSheet()

        #Inicializamos la lista Platypus Story.
        story = []
        # Ahora incluimos una imagen.
        fichero_imagen = IMAGENES_ROOT + "/cabecera.png"
        imagen_logo = Image(os.path.realpath(fichero_imagen),width=400,height=50)
        story.append(imagen_logo)


        #Definimos como queremos que sea el estilo de la PageTemplate.
        cabecera = estiloHoja['Heading5']

        #No se hara un salto de pagina despues de escribir la cabecera (valor 1 en caso contrario).
        cabecera.pageBreakBefore=0

        # Se quiere que se empiece en la primera pagina a escribir. Si es distinto de 0 deja la primera hoja en blanco.
        cabecera.keepWithNext=0



        # Color de la cabecera.
        cabecera.backColor=colors.white
        cabecera.spaceAfter = 0
        cabecera.spaceBefore = 0

        parrafo = Paragraph('.',cabecera)
        story.append(parrafo)
        parrafo = Paragraph('Proyecto: '+ p.nombre,cabecera)
        story.append(parrafo)
        parrafo = Paragraph('-'*193,cabecera)
        story.append(parrafo)

        # Incluimos un Flowable, que en este caso es un parrafo.

        cabecera2 = estiloHoja['Heading3']
        cabecera2.pageBreakBefore=0
        cabecera2.keepWithNext=0
        cabecera2.backColor=colors.white

        parrafo = Paragraph('   ',cabecera2)
        # Lo incluimos en el Platypus story.
        story.append(parrafo)

        # Definimos un parrafo. Vamos a crear un texto largo para demostrar como se genera mas de una hoja.

        fas = fases.objects.filter(proyecto=p)
        for f in fas:
            li = items.objects.filter(fase=f).order_by('id')
            lista = []
            lista.append(['FASE: ' + f.nombre])
            lista.append(['ID','DESCRIPCION','PADRE','VERSION','COSTO', 'ESTADO'])
            for i in li:
                padre = 'No tiene'
                r = relacion.objects.filter(itemHijo=i)
                if r:
                    for aux in r:
                        padre = aux.itemPadre.nombre
                lista.append([i.id,i.nombre,padre,i.versionAct,i.costo,i.estado])
            lista.append([''])
            t=Table( lista, style = [
                       ('GRID',(0,0),(-1,-1),0.5,colors.white),
                       ('BOX',(0,0),(-1,-1),2,colors.white),
                       ('SPAN',(0,0),(-1,0)),
                       ('ROWBACKGROUNDS', (0, 2), (-1, -1), (colors.Color(0.9, 0.9, 0.9),colors.white)),
                       ('BACKGROUND', (0, 1), (-1, 1), colors.rgb2cmyk(r=6,g=62,b=193)),
                       ('LINEABOVE',(0,0),(-1,0),1.5,colors.black),
                       ('LINEBELOW',(0,0),(-1,0),1.5,colors.black),
                       ('SIZE',(0,0),(-1,0),12),
                       ('ALIGN', (0, 0), (-1, 0), 'CENTER'),
                       ('VALIGN', (0, 0), (-1, 0), 'MIDDLE'),
                       ('TEXTCOLOR', (0, 1), (-1, 1), colors.white),
                       ('BACKGROUND', (0, -1), (-1, -1), colors.white),
                       ]
              )
            # Y lo incluimos en el story.
            story.append(t)


        # Dejamos espacio.
        story.append(Spacer(0,20))

        # Creamos un DocTemplate en una hoja DIN A4, en la que se muestra el texto enmarcado (showBoundary=1) por un recuadro.
        doc=SimpleDocTemplate(MEDIA_ROOT + "/proyecto_" +str(p.id) + ".pdf",pagesize=A4, rightMargin=1, leftMargin=1, topMargin=0, bottomMargin=0)
        import datetime

        parrafo = Paragraph('-'*193,cabecera)
        story.append(parrafo)
        print 'a' + ' '*100 + 'b'
        parrafo = Paragraph('Fin del Informe' + ' '*100 + '('+str(datetime.date.today()) + ')' ,cabecera)
        story.append(parrafo)



        # Construimos el Platypus story.
        doc.build(story)

        image_data = open(MEDIA_ROOT + "/proyecto_" +str(p.id) + ".pdf", "rb").read()
        return HttpResponse(image_data, mimetype="application/pdf")
Exemple #10
0
 def cmyk(self):
     """Return an CMYKColor for the current color"""
     cmyk = rgb2cmyk(self.red / 255, self.green / 255, self.blue / 255)
     return CMYKColor(cmyk[0], cmyk[1], cmyk[2], cmyk[3], alpha=self.alpha)