in allegato... ho eliminato tutta la parte di configurazione di reportlab e ho mantenuto solamente la funzione main che è quella che recupera l'id e crea il pdf...
ciao 2008/10/7 Lawrence Oluyede <[EMAIL PROTECTED]> > On Tue, Oct 7, 2008 at 9:22 AM, Zanon Samuele <[EMAIL PROTECTED]> wrote: > > ciao a tutti... sto creando in python un file per la creazione, mediante > > reportlab, di un file pdf con dei dati prelavati da una tabella mysql... > il > > mio problema è che dovrei recuperare un parametro passato allo script che > è > > presente sull'url. Esempio: > > URL: http://miodominio.com/script.py?id=xx > > > > io devo recuperare il valore di id e passarlo alle query... il passaggio > > alle query non è un problema, ma il mio problema è quello di recuperare > il > > parametro id... ho provato tramite cgi.FieldStorage, ma mi viene > ritornato > > l'errore: 500 Internal Server Error, eppure lo script non ha errori, > visto > > che eseguendolo dalla shell non mi da problemi... > > E` possibile vedere il codice? Almeno qualche riga al principio > > Probabilmente non hai inizializzato correttamente la parte cgi > > > -- > Lawrence, stacktrace.it - oluyede.org - neropercaso.it > "It is difficult to get a man to understand > something when his salary depends on not > understanding it" - Upton Sinclair > _______________________________________________ > Python mailing list > Python@lists.python.it > http://lists.python.it/mailman/listinfo/python > -- Zanon Samuele mailto:[EMAIL PROTECTED]
#!/usr/bin/env python import os import time import random import string from reportlab.platypus import * from reportlab.lib.styles import * from reportlab.rl_config import defaultPageSize from reportlab.lib.units import inch, cm from reportlab.lib import colors import cgi, cgitb cgitb.enable() import MySQLdb PAGE_HEIGHT = defaultPageSize[1] PAGE_WIDTH = defaultPageSize[0] # Definitions for text styles: StandardStyle = ParagraphStyle('Standard', None) StandardStyle.fontName = 'Times-Roman' StandardStyle.fontSize = 10 StandardStyle.textColor = colors.black StandardStyle.spaceAfter = 5 StandardStyle.backColor = colors.whitesmoke TitleStyle = ParagraphStyle('Title', StandardStyle) TitleStyle.fontName = 'LettErrorRobot-Chrome' # 'Times-Bold' AdobeSansMM TitleStyle.fontName = 'Times-Bold' TitleStyle.fontSize = 24 TitleStyle.spaceAfter = 30 TitleStyle.spaceBefore = 5 TitleStyle.align = "CENTER" BoldStyle = ParagraphStyle('Bold', StandardStyle) BoldStyle.fontName = 'Times-Bold' def DefaultReportTableStyle(header_fontsize=8, cell_fontsize=6): return TableStyle([ \ ('FONTNAME', (0,0), (-1,0), "Courier"), \ ('FONTSIZE', (0,0), (-1,0), 14), \ ('TEXTCOLOR', (0,0), (-1,0), colors.midnightblue), \ ('BACKGROUND', (0,0), (-1,0), colors.ghostwhite), \ ('FONTNAME', (0,1), (-1,-1), "Courier"), \ ('FONTSIZE', (0,1), (-1,-1), 10), \ ('TEXTCOLOR', (0,1), (-1,-1), colors.darkslateblue), \ ('ALIGN', (0,0), (-1,-1), "CENTER"), \ ('VALIGN', (0,1), (0,-1), 'TOP'), \ ('VALIGN', (0,0), (-1,0), 'TOP'), \ ('LEFTPADDING', (0,0), (-1,-1), 3), \ ('RIGHTPADDING', (0,0), (-1,-1), 3), \ ('TOPPADDING', (0,0), (-1,-1), 1), \ ('BOTTOMPADDING',(0,0), (-1,-1), 1), \ ('GRID', (0,0), (-1,-1), 0.5, colors.Color(0, 0, 0)) ]) class FirstPageTemplate(PageTemplate): def __init__(self, id, pageSize=defaultPageSize): self.pageWidth = pageSize[0] self.pageHeight = pageSize[1] frame1 = Frame(inch, inch, self.pageWidth - 2*inch, self.pageHeight - 1.25*inch, id='FirstPage') PageTemplate.__init__(self, id, [frame1]) # note lack of onPage def afterDrawPage(self, canvas, doc): canvas.setAuthor("") canvas.setTitle("") canvas.setSubject("") canvas.saveState() # top line canvas.setLineWidth(1) # bottom line canvas.setLineWidth(0.5) canvas.line(inch, inch, doc.pagesize[0]-inch, inch) canvas.setFont('Times-Roman', 4) canvas.drawCentredString(PAGE_WIDTH / 2.0, inch*0.75, "- %d -" % doc.page) canvas.drawRightString(PAGE_WIDTH - inch, inch*0.75, doc.report_timestamp) # help line for punching canvas.setLineWidth(0.3) canvas.line(20, doc.pagesize[1] / 2, 25, doc.pagesize[1]/ 2) canvas.restoreState() class OtherPagesTemplate(PageTemplate): def __init__(self, id, pageSize=defaultPageSize): self.pageWidth = pageSize[0] self.pageHeight = pageSize[1] frame1 = Frame(inch, inch, self.pageWidth - 2*inch, self.pageHeight - 2*inch, id='OtherPages') PageTemplate.__init__(self, id, [frame1]) # note lack of onPage def afterDrawPage(self, canvas, doc): canvas.saveState() # document title canvas.setFont('Times-Bold', 12) # current report title canvas.setFont('Times-Bold', 8) # top line canvas.setLineWidth(1) canvas.line(inch, doc.pagesize[1]-inch, doc.pagesize[0]-inch, doc.pagesize[1]-inch) # bottom line canvas.setLineWidth(0.5) canvas.line(inch, inch, doc.pagesize[0]-inch, inch) canvas.setFont('Times-Roman', 8) canvas.drawCentredString(PAGE_WIDTH/2.0, inch*0.75, "- %d -" % doc.page) canvas.drawRightString(PAGE_WIDTH - inch, inch*0.75, doc.report_timestamp) # help line for punching canvas.setLineWidth(0.3) canvas.line(20, doc.pagesize[1] / 2, 25, doc.pagesize[1]/ 2) canvas.restoreState() class SipdamsDocTemplate(BaseDocTemplate): def afterInit(self): self.addPageTemplates(FirstPageTemplate('First', self.pagesize)) self.addPageTemplates(OtherPagesTemplate('Later', self.pagesize)) def main(): print 'Content-type: text/html\r\n' #Recupero l'id dell'ordine per la stampa form = cgi.FieldStorage() ord_id = form.getvalue('ord_id') if not (form.has_key('ord_id')): print '<h1>Errore:</h1>' print '<p>Nessun ordine specificato</p>' else: #Mi connetto al database conn = MySQLdb.connect(host="host", user="user", passwd="pass", db="nome_db") #Query1: Recupero i dati del destinatario dell'ordine sql1 = "SELECT * FROM ordini WHERE ID = '" + ord_id + "'" #Eseguo la query e memorizzo i dati restituiti cursore1 = conn.cursor() cursore1.execute(sql1) record1 = cursore1.fetchone() nome_cli = record1[1] q_ceste = record1[2] #==============Eseguo le operazioni per l'output del pdf================== NOW = time.strftime("%d/%m/%y %H.%M.%S", time.localtime(time.time())) output_filename = "ordine_" + ord_id + ".pdf" doc = SipdamsDocTemplate(output_filename) doc.report_timestamp = NOW Report = [] #Inserisco il logo ILogo = Image('../images/logo.jpg') ILogo.drawHeight = 2.5*inch*ILogo.drawHeight / ILogo.drawWidth ILogo.drawWidth = 2.5*inch ILogo.hAlign = 'CENTER' d = [] d.append([ILogo, nome_cli]) tblstyle = DefaultReportTableStyle() tblstyle.add('BACKGROUND', (0,0), (-1,0), colors.Color(255, 255, 255)) tbl = Table(d, colWidths=PAGE_WIDTH/2.1 , rowHeights=None, style=tblstyle, repeatRows=0, repeatCols=0) tbl.hAlign='CENTER' Report.append(tbl) p = Paragraph("Ordine ceste natalizie", TitleStyle) Report.append(p) doc.build(Report) main()
_______________________________________________ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python