On Wed, 26 Mar 2008, Steve Litt wrote:

Why not put the preamble and other multiline code in one or more separate
text files. Those things are data, not code. That way you or your
assistant can change the preamble without changing the Python program and
its indentation.

Steve,

  Nothing to change that affects indentation. It's analogous to embedding
sql code in a Python docstring; for example,

    """ On Insert of a component """
    stmt1 = """CREATE TRIGGER fki_comp_cat
               BEFORE INSERT ON component
               FOR EACH ROW
               BEGIN
                 SELECT CASE
                   WHEN NEW.comp_cat IS NOT NULL AND
                   (SELECT cat_name FROM category
                    WHERE cat_name = NEW.comp_cat) IS NULL
                    THEN RAISE(ROLLBACK, 'insert on table category violates
                    foreign key constraint fk_comp_cat')
                 END
               END
             """
    self.cur.execute(stmt1)

  Writing the preamble lets me write it to the open file in a single
statement. And, everything's in a single module.

Once again, I'd recommend placing the entire template for the report in a
LyX or LaTeX or TeX file, and within that template have placeholders which
the Python program will replace with strings derived from data content. It
would be quick, easy, clean, and very modifiable.

  Perhaps. I suspect that it will be easier to read, understand, and debug
when the LaTeX and text flow within the code as they are needed/generated.
For example, what I now have starts with,

  def inputVals(self):
    Title = self.rptinfo

    # General Model Information. This goes on the top of the first page.
    stmtA = """SELECT proj_name, proj_desc, model_type, proj_owner,
               proj_location, proj_state, lead_agency, keName from
               Project"""
    self.appData.cur.execute(stmtA)
    projData = self.appData.cur.fetchall()
    strings_tuple = projData[0]

    labName = ['Name: ', 'Description: ', 'Model Type: ', 'Owner: ',
               'Location: ', 'State: ', 'Lead Agency: ',
               'Knowledge Engineers: ']

    self.pg = canvas.Canvas('input_variables.pdf', pagesize=LETTER)

    self.pg.setFont('Helvetica-Bold',14)

    self.pg.drawCentredString(self.PAGE_SIZE[0]/2.0,self.PAGE_SIZE[1]-180,Title)
    self.pg.setFont('Helvetica-Oblique',11)

    
self.pg.drawCentredString(self.PAGE_SIZE[0]/2.0,self.PAGE_SIZE[1]-198,self.ts)

  So the LaTeX code replaces the ReportLab code.

Rich

--
Richard B. Shepard, Ph.D.               |  Integrity            Credibility
Applied Ecosystem Services, Inc.        |            Innovation
<http://www.appl-ecosys.com>     Voice: 503-667-4517      Fax: 503-667-8863

Reply via email to