24.12.2014 Views

Presentation

Presentation

Presentation

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

Dynamic Documents with<br />

ReportLab and Zope<br />

<strong>Presentation</strong> for the German Zope User<br />

Group's (DZUG) Meeting in Berlin, Germany<br />

28-29 March 2003<br />

Dinu C. Gherman<br />

ReportLab Consultant and Co-developer<br />

dinu @ mac or reportlab dot com<br />

Dynamic Documents with ReportLab and Zope, page 1 – © Dinu C. Gherman


Agenda<br />

But:<br />

• Background<br />

• ReportLab Alphabet Soup<br />

• Applications<br />

• Examples<br />

• Usage with Zope<br />

• Questions (anytime)<br />

• No source code<br />

• Not a tutorial-like intro<br />

Dynamic Documents with ReportLab and Zope, page 2 – © Dinu C. Gherman


Background<br />

Your end-users need documents, which are:<br />

• Readable (layout, fonts)<br />

• Feature-rich (graphics, interaction)<br />

• Personalised (maybe unique)<br />

• Available on-demand (online)<br />

• Printable (more often than not)<br />

• Portable and compact (easy exchange)<br />

• Up-to-date!<br />

They can even have them, too!<br />

• Stay here to learn how!<br />

Dynamic Documents with ReportLab and Zope, page 3 – © Dinu C. Gherman


The ReportLab ToolKit (RLTK)<br />

Purpose<br />

• Generate entire documents, and/or<br />

• document components<br />

Characteristics<br />

• Open Source<br />

• FreeBSD License<br />

• Python code base, mostly<br />

• Platform-independant<br />

• Even with Jython! (restricted)<br />

Dynamic Documents with ReportLab and Zope, page 4 – © Dinu C. Gherman


ReportLab Additions<br />

Accelerators<br />

• rlaccel (included in RLTK)<br />

External (optional) packages<br />

• renderPM (incl. libart)<br />

• pyRXP (incl. RXP)<br />

Third-party extensions<br />

• svglib (for importing SVG)<br />

• Barcodes<br />

Dynamic Documents with ReportLab and Zope, page 5 – © Dinu C. Gherman


pyRXP<br />

RXP<br />

• By Richard Tobin, University of Edinburgh<br />

• Extremely fast validating XML parser<br />

pyRXP<br />

• ReportLab's Python wrapper for RXP<br />

• Returns nested tuple/list tree<br />

Licensing<br />

• Both under GPL<br />

• Commercial licenses upon request (ask me)!<br />

Dynamic Documents with ReportLab and Zope, page 6 – © Dinu C. Gherman


Commercial Products<br />

PageCatcher<br />

• Reusing existing PDF documents<br />

• Benefit: split graphics/application work<br />

RML2PDF<br />

• RML: Report Markup Language<br />

• Fast conversion from XML to PDF<br />

Diagra<br />

• Licensable technology for web/print graphics<br />

• Color seperation (EPS)<br />

Dynamic Documents with ReportLab and Zope, page 7 – © Dinu C. Gherman


Generating Documents<br />

Either, do it all manually<br />

• Pdfgen: Canvas with operations<br />

Or define the layout...<br />

• Platypus: Templates, Documents, Pages, Frames<br />

And use components to tell a story<br />

• Text, Fonts, Tables, Images, Drawings, ...<br />

Dynamic Documents with ReportLab and Zope, page 8 – © Dinu C. Gherman


Including Graphics<br />

Graphic components<br />

• Primitive shapes: Rect, Circle, String, Image, ...<br />

• Composed widgets: Signs and Symbols, Flags<br />

• Sample libraries: Business Charts<br />

Output renderers<br />

• PDF<br />

• Bitmap formats<br />

• EPS (color seperating, on demand)<br />

• SVG (experimental)<br />

Dynamic Documents with ReportLab and Zope, page 9 – © Dinu C. Gherman


Known Application Domains<br />

Services<br />

• Reporting<br />

• Invoicing<br />

• Charting<br />

• Visualising<br />

Areas<br />

• Finance (Fidelity, AIG)<br />

• Administration (NASA, School Evaluations)<br />

• Publishing (brochures, newsletters, books)<br />

• Science<br />

Dynamic Documents with ReportLab and Zope, page 10 – © Dinu C. Gherman


Sample Documents<br />

• Fidelity Financial Documents<br />

• Telecom Invoices<br />

• Evaluations<br />

• Visualisation<br />

• <strong>Presentation</strong>s<br />

• iCards<br />

• Brochures, Books<br />

• (Business Cards)<br />

Dynamic Documents with ReportLab and Zope, page 11 – © Dinu C. Gherman


Sample: TheWorkx.Net<br />

theworkx.net<br />

SME Opportunity Profile for The Engine Room Ltd © theworkx.net Limited 2002. All rights reserved.<br />

theworkx.net<br />

SME Opportunity Profile for The Engine Room Ltd © theworkx.net Limited 2002. All rights reserved.<br />

LOCATION NAME/BUSINESS<br />

RELATED LINKS<br />

BUSINESS TECHNOLOGY/COMMUNICATIONS TOTALS (MODELLED)<br />

The Engine Room Ltd<br />

Royal Colanades, 16 Great George Street, Clifton<br />

Bristol BS1 5RH United Kingdom<br />

Telephone: +44 (0)117 929 4141<br />

Facsimile: +44 (0)117 929 4121<br />

Site ID EN234741231<br />

Estimated Number of Desktop PCs: 8 Presence of LAN:<br />

Yes<br />

Estimated Number of PC Servers: 1 Estimated Number of Telephone Lines: 4<br />

Estimated Number of Laptop/Notebook PCs: 2 Estimated Number of Mobile Handsets: 5<br />

BUSINESS VEHICLE/OFFICE EQUIPMENT TOTALS (MODELLED)<br />

KEY CONTACTS/DECISION MAKERS<br />

EMAIL ADDRESSES<br />

Estimated Number of Company Cars: 5<br />

Estimated Number of Company Vans: 0<br />

Estimated Number of Photocopiers: 1<br />

Estimated Number of Printers: 3<br />

Name<br />

Title<br />

Mr Richard Irvine<br />

Secretary<br />

Mr Gary Milton<br />

Creative Director<br />

Mrs Andrea Bolden<br />

Financial Director<br />

Mr Andrew Gavin<br />

Technical Director<br />

Mr Steve Lewis<br />

Operations Director<br />

BUSINESS BASICS<br />

Industry/SIC Classification: 7042 - Marketing Services/ Design Agency<br />

Status:<br />

Independent<br />

Enterprise Type:<br />

Private Limited Company<br />

Year Established: 1990<br />

Region:<br />

R747 - Bristol<br />

Multiple Sites in Country: Yes<br />

FINANCIAL GROWTH HISTORY<br />

1995 1996 1997 1998 1999<br />

Sales (£000s) 457 623 795 846 922<br />

Profit (£000s) (12) 22 57 72 87<br />

Email Address<br />

richard_irvine@engine-room.co.uk<br />

gary_milton@engine-room.co.uk<br />

andrea_bolden@engine-room.co.uk<br />

andrew_gavin@engine-room.co.uk<br />

steve_lewis@engine-room.co.uk<br />

Fiscal Year End:<br />

December<br />

International Trade:<br />

Exporter<br />

Company Registration No: 2345871<br />

VAT Registration No: 731 5804 47<br />

D-U-N-S ® Number: 1674592<br />

SALES<br />

PROFIT<br />

1000<br />

922<br />

846<br />

795<br />

100<br />

87<br />

623<br />

72<br />

57<br />

457<br />

22<br />

(12)<br />

0<br />

0<br />

BUSINESS ANNUAL EXPENDITURE TOTALS (MODELLED)<br />

Estimated Communications Spend: £15000 Estimated Office Equipment Spend: £8000<br />

Estimated Vehicle/Maintenance Spend: £60000<br />

Estimated Technology Spend: £22000<br />

BUSINESS OPPORTUNITY CLASSIFICATION (MODELLED)<br />

Life Stage:<br />

Established Small Innovation Profile:<br />

Likely Early Adopter<br />

Growth Profile:<br />

Productive Financial Products Profile:<br />

Savings Products<br />

Performance Profile:<br />

High Decision Making Autonomy:<br />

Autonomous<br />

CUSTOM CLASSIFICATION (MODELLED)<br />

Classification A: Classification B: Classification C: Classification D:<br />

High Moderate Very Likely High<br />

INTERNET USAGE (COLLECTED)<br />

EMPLOYEE GROWTH HISTORY<br />

Website:<br />

www.engine-room.co.uk<br />

Number of Active Internet Users: 5<br />

1995 1996 1997 1998 1999<br />

Employees in Country 4 7 10 12 15<br />

EMPLOYEES<br />

15<br />

12<br />

10<br />

7<br />

eCommerce:<br />

Use of Internet for Procurement:<br />

Primary ISP:<br />

No<br />

Yes<br />

City Netgates<br />

Number of Internet Email Users: 8<br />

Use of ASP:<br />

Yes<br />

0<br />

4<br />

PLANNED EMPLOYMENT CHANGE (COLLECTED)<br />

SECTOR COMPARISON (4 DIGIT SIC)<br />

Change: Increase Amount: 25<br />

THE ENGINE ROOM LTD<br />

SECTOR AVERAGES<br />

RELATIVE SCORE<br />

Sales Growth 8.9%<br />

Sales per Employee 61.47<br />

Employee Growth 25%<br />

Profit Growth 20.8%<br />

Profit on Sales 9.4%<br />

3%<br />

51.5<br />

5%<br />

(8%)<br />

12%<br />

-5 -4 -3 -2 -1 0 1 2 3 4 5<br />

Printed on Tuesday April 9 2002, Page 1 of 6<br />

Printed on Tuesday April 9 2002, Page 2 of 6<br />

Dynamic Documents with ReportLab and Zope, page 12 – © Dinu C. Gherman


Sample: Fidelity Forms<br />

Self-select ISA Account Opening Confirmation Form 12345678<br />

1 Personal Details<br />

Title<br />

First Name(s)<br />

Mr.<br />

Fred<br />

Surname<br />

Customer Reference Number<br />

Bloggs<br />

12345678<br />

Self-select ISA Account Opening Confirmation Form:<br />

ISA TRANSFER FROM FIDELITY CONTINUED 12345678<br />

6 Signature and Letter of Authorisation - You Must Sign and Date This Form Below<br />

I hereby authorise you to transfer my plan(s) as cash to Charles Stanley & Company Limited, 25 Luke Street, London, EC2A 4AR.<br />

I also authorise you to provide Charles Stanley & Co. Limited with any relevant information they may require.<br />

Signature<br />

Date<br />

Permanent Residential Address<br />

25 Badger Court<br />

Pinemartin Crescent<br />

Cricklewood<br />

London<br />

UK<br />

NW10 12H<br />

Nationality<br />

United Kingdom<br />

National Insurance Number<br />

2 4 2 4 A<br />

United Kingdom<br />

Email Address<br />

fred@bloggs.org<br />

Date of Birth (applicants must be 18 years or over)<br />

2 1 0 3 1 9 6 6<br />

Mr. Fred Bloggs<br />

Customer Reference Number: 12345678<br />

25 Badger Court<br />

Pinemartin Crescent<br />

Cricklewood<br />

London<br />

...<br />

NW10 12H<br />

UK<br />

2 Dividend Income Details<br />

Bank/Building Society Name<br />

Royal Bank of Scotland<br />

Bank/Building Society Account Number<br />

12345678<br />

Name of Account Holder<br />

Mr. Frederick Rumplestiltskin Bloggs<br />

Bank/Building Society Sort Code<br />

2 9 0 8 0 8<br />

Bank/Building Society Collection A/C No.<br />

100673485<br />

Distribution Option<br />

Half-yearly<br />

3 Signature and Declaration - You Must Sign and Date This Form Below<br />

I understand that all transactions in my Self Select ISA are carried out by Charles Stanley & Co Limited on an execution-only basis, that I will receive no advice, and that I am<br />

solely responsible for the selection, suitability, and eligibility under the ISA Regulations of investments and transactions.<br />

I authorise Charles Stanley & Co Limited:<br />

To hold my cash subscriptions, ISA investments, interest dividends and any other rights or proceeds in respect of those investments and any other cash. To make on my behalf<br />

any claims from tax in respect of ISA investments; and on my written request to transfer or pay to me, as the case may be, ISA investments, interest, dividends, rights or other<br />

proceeds in respect of such investments or any cash.<br />

I further declare that:<br />

I am eighteen years of age or over, I am resident and ordinarily resident in the United Kingdom or though not resident in the United Kingdom perform duties which by virtue of<br />

section 132(4)(a) of the Income & Corporation Taxes Act 1988 and any amendments thereto (Crown employees serving overseas), are treated as being performed in the United<br />

Kingdom or I am married to a person who performs such duties. I am subscribing with my own cash or with qualifying shares acquired by myself through an approved<br />

profit-sharing scheme or savings-related share option scheme: I have read and understood the Charles Stanley & Co Limited Terms and Conditions and agree that my account<br />

will be conducted in accordance with this. The information provided by me in this application form is true and correct to the best of my knowledge and belief. I will promptly notify<br />

Charles Stanley & Co Limited of any changes in my circumstances which affect any of the information below.<br />

Signature<br />

Date<br />

The share dealing service, self-select PEPs and ISAs are provided by Fidelity Investments Limited in association with Xest, a division of Charles Stanley & Company Limited. Charles Stanley & Co. Ltd, PEP &<br />

ISA Manager, Member of the London Stock Exchange and the London International Financial Futures & Options Exchange, is regulated by the Financial Services Authority. Approved by Charles Stanley &<br />

Company Limited. Issued in the UK by Fidelity Investments Ltd, Fidelity Investment Services Limited and Fidelity Investments International, regulated by the Financial Services Authority.<br />

This page used an evaluation or expired copy of RML2PDF http://www.reportlab.com<br />

The share dealing service, self-select PEPs and ISAs are provided by Fidelity Investments Limited in association with Xest, a division of Charles Stanley & Company Limited. Charles Stanley & Co. Ltd, PEP &<br />

ISA Manager, Member of the London Stock Exchange and the London International Financial Futures & Options Exchange, is regulated by the Financial Services Authority. Approved by Charles Stanley &<br />

Company Limited. Issued in the UK by Fidelity Investments Ltd, Fidelity Investment Services Limited and Fidelity Investments International, regulated by the Financial Services Authority.<br />

This page used an evaluation or expired copy of RML2PDF http://www.reportlab.com<br />

Dynamic Documents with ReportLab and Zope, page 13 – © Dinu C. Gherman


Sample: Fidelity Fund Descriptions<br />

Framlington UK Smaller Companies Fund<br />

Key Details<br />

Fund Name: UK Smaller Companies Fund<br />

Fund Provider: Framlington<br />

Launch Date: 09 April 2001<br />

Fund Management<br />

Fund Manager: Roger Whiteoak<br />

Fund Objective<br />

To provide capital growth by investing principally in quoted UK<br />

smaller companies.<br />

Investment Approach<br />

For over 30 years we have followed the same investment style.<br />

Investing in quality growth companies at a reasonable price. In<br />

seeking growth, we look to find companies expected to<br />

produce above average growth in profits and cash returns on<br />

capital. We look at the companies' quality of management,<br />

financial position, the industry in which it operates and its<br />

competitive position.<br />

Investment Opportunity<br />

have a wide remit allowing the fund to take opportunities<br />

across the market. Such investment possibilities are not only<br />

found in the so-called 'old economy' sectors of retailing,<br />

building & construction and property, but also the 'new<br />

economy' areas of aerospace, electronics, outsourcing,<br />

information technology, media, healthcare and biotechnology.<br />

Fund Provider<br />

The Framlington Group was established over 30 years ago, and<br />

today manages investments valued at over £5.4 billion for<br />

investment trusts, pension funds, charities, institutions, unit<br />

trusts and PEP and ISA investors. It has the backing of two<br />

significant shareholders: HSBC Holdings (51%) and Munder<br />

Capital Management (49%) - a US investment house managing<br />

assets in excess of £35 billion.<br />

Charges<br />

Annual Management Charge: 1.5% ISA Initial Charge 1.25%<br />

Non-ISA Initial Charge 1.25%<br />

The fund aims to exploit the potential growth from some of the<br />

best smaller companies in the UK. The investment manager will<br />

Market Cap Breakdown<br />

Sector Breakdown<br />

Blue Chip, with long word - 25%<br />

Small Cap - 22%<br />

Unlisted - 17%<br />

technology - 10.4%<br />

health care - 8%<br />

manufacturing - 6%<br />

financials - 5%<br />

Other - 6.6%<br />

Technology Media and Communications - 27%<br />

Sector Two - 20%<br />

Sector three - 15%<br />

Sector four - 10%<br />

Sector five - 8%<br />

Sector six - 6%<br />

Sector seven - 5%<br />

Sector eight - 4%<br />

Other - 5%<br />

Information provided by Framlington as at 06/04/01.<br />

Dynamic Documents with ReportLab and Zope, page 14 – © Dinu C. Gherman


Sample: Fidelity Retirement Plans<br />

RETIREMENT AT 65<br />

RETIREMENT AT 65<br />

Report compiled by John Basil of County Financial for Robin Becker<br />

Your investment plan<br />

Thank you for using Fidelity's Portfolio Planner. This report summarises your Retirement at 65 plan and gives details of funds you are<br />

thinking of investing in. It also compares the portfolio you have developed with the growth portfolio suggested by the Portfolio<br />

Planner. The aim of the Portfolio Planner is to help you make informed investment decisions - we hope you have found it useful. At<br />

the bottom of the page you will find information about the next steps you can take. Please discuss these options with your Adviser to<br />

determine the the best course of action to take.<br />

Your projection<br />

Your contributions<br />

Your target: £100,000 Initial investment: £45,000<br />

Projected value by June 2006: £82,734 Regular contributions: £600<br />

Shortfall or surplus: - £17,266 Frequency: Quarterly<br />

Until: June 2004<br />

Please remember that your projection takes account of inflation, so the figure is given in today's terms. The projections shown are also<br />

not guarantees; they are simply illustrations.<br />

AGGRESSIVE GROWTH<br />

GROWTH<br />

BALANCED<br />

CONSERVATIVE<br />

SHORT TERM<br />

£150,000<br />

£100,000<br />

£50,000<br />

Your portfolio strategy<br />

Our projection assumes that you concentrate on increasing the value of your investment over<br />

the long term with a growth investment strategy. This would involve choosing funds with the<br />

potential for strong returns, though you might have to tolerate short-term fluctuations in their<br />

value.<br />

Now By June 2006<br />

Target £100,000<br />

Growth<br />

Regular payments<br />

Initial investment<br />

Your investment growth<br />

Our projection for your Retirement at 65 investment, is shown in<br />

the chart on the left. It is for illustrative purposes only and is based<br />

on the growth you might achieve with our growth strategy. We<br />

have assumed this will be 7.2% a year, the average level of growth<br />

achieved by the various forms of investment in this type portfolio<br />

over the past 100 years. There is no guarantee that this level of<br />

perfromance will be repeated in coming years, and if markets fall<br />

you may not get back the amound you invest.<br />

We have chosen such a long period, covering both world wars and<br />

the depression of the 1930's, so that the figures are not distorted<br />

by the high returns that stockmarket investments have achieved in<br />

recent decades. Typical central bank forecasts of inflation for the<br />

years ahead are 3.5%. We have therefore taken this from the 7.2%<br />

growth rate and based our calculations on a real rate of return of<br />

3.7% a year.<br />

Our suggestion<br />

Investment % £<br />

Cash<br />

UK Gilts<br />

UK Equity Income<br />

North America<br />

Global Growth<br />

Japan<br />

Far East excluding Japan<br />

4 2,550<br />

4 2,550<br />

16 9,350<br />

15 9,350<br />

31 18,700<br />

15 9,350<br />

15 9,350<br />

Total 100 61,200<br />

Your next steps...<br />

Choose your funds<br />

If you decide you would like to use the Retirement Plan<br />

portfolio as a basis for your Retirement at 65 investment, you<br />

are now in a position to choose your funds. To make this as<br />

straightforward as possible we have linked the Portfolio<br />

Planner to our fund selection tool. This will automatically<br />

search through the hundreds of funds in our investment<br />

superstore FundsNetwork to find the ones from each category<br />

in our suggested portfolio. You can then draw up a short list of<br />

funds, read fact sheets on the ones you are considering and<br />

create your own portfolio fund by fund.<br />

You will then be able to print out a fuller version of this report,<br />

which incorporates your chosen funds and shows how the<br />

portfolio you have created compares with the suggested<br />

growth portfolio.<br />

When you have made your choice you can invest either online<br />

or by post via your Adviser.<br />

Suggested growth portfolio<br />

This pie chart shows a portfolio that you might want to consider as<br />

a suggestion for your Retirement at 65 investment. The Portfolio<br />

Planner cannot give an opinion on which funds and types of<br />

investment are right for your particular circumstances, but this<br />

model may help you make your decision.<br />

The primary aim of this portfolio is to achieve significant long-term<br />

growth without investing in those sectors that are usually<br />

considered to present the highest levels of risk. Only a small part<br />

of the portfolio is kept in relatively low-risk bonds. The rest is<br />

invested in equity funds. The majority of these focus on the UK,<br />

but about a third of the overall portfolio is invested internationally<br />

in order to benefit from growth potential in other parts of the<br />

world. With this type of portfolio you need to be prepared for<br />

short-term fluctuations in the value of your holdings.<br />

Fine-tune your investment plan<br />

You can update the details of your Retirement at 65 investment<br />

plan as often as you want. Simply speak to your Adviser who will<br />

be able to review your portfolio strategy for you.<br />

Need extra help<br />

Your Adviser will be able to assist you throughout the<br />

decision-making process and recommend the portfolio strategy<br />

best suited to your investment needs. Please also bear in mind<br />

that the suggested portfolios may change, so you may like to<br />

review your strategy regularly with your Adviser.<br />

We cannot give you advice on your investments, but if you call us<br />

on 0800 995511 we can give you any general information you<br />

may need about FundsNetwork's products and services. Please<br />

feel free to call us any day of the week, between 8am and 6pm.<br />

Issued by Fidelity Investments International, regulated by the FSA, © Fidelity Investments International 1996-2002<br />

Dynamic Documents with ReportLab and Zope, page 15 – © Dinu C. Gherman


Sample: School Evaluations<br />

GENERAL SCHOOL INFORMATION (cont.)<br />

Portables in School System<br />

Number of Portables Used as Classrooms as<br />

of March 1999<br />

Number of Portables Used as Classrooms as<br />

of September 2000<br />

Projected Number of Portables Used as Classrooms as<br />

of September 2001<br />

Classroom Information<br />

Each school is staffed with full- and part-time faculty and staff. This school currently<br />

employs the following professionals.<br />

All Schools<br />

Classification This School in System<br />

Teachers<br />

Counselors<br />

Librarians<br />

Administrators<br />

Nurses<br />

Other Certified Personnel<br />

Support Staff<br />

This chart shows the percentage of teachers holding each type degree at this school.<br />

Highest College Degree 1996-1997 1997-1998 1998-1999 1999-2000 2000-2001<br />

6-Year through Doctorate<br />

M a s t e r’s<br />

B a c h e l o r’s<br />

A l a b a m a ’s Career/Technical programs are<br />

forming partnerships with business and<br />

industry to align curriculum with their<br />

s t a n d a r d s . T h e g o a l i s t o c e r t i f y a l l<br />

programs to industry standards by 2003.<br />

The number indicates the percentage of<br />

Programs Achieving<br />

Business/Industry<br />

Certification<br />

2000-2001<br />

Rate Grade<br />

high school programs that have been certified. The letter grade measures whether or<br />

not these programs are on track to meet that goal.<br />

Safety & Discipline<br />

The following chart shows the types of discipline problems that have occurred at this<br />

school and what actions were taken in 2000-2001.<br />

Number of<br />

Action Taken<br />

Type of Incidents Sent to<br />

Incident Reported Suspension Expulsion Alternative School<br />

Assault<br />

Bomb Threat<br />

Drug Related<br />

Weapon Related<br />

5<br />

0<br />

4<br />

3<br />

1.0<br />

3<br />

59<br />

37<br />

31<br />

4.4% 2.5% 3.8% 2.8% 1.4%<br />

59.4%<br />

36.2%<br />

2<br />

0<br />

2<br />

1<br />

56.3% 60.8% 62.0% 55.6%<br />

41.3%<br />

72.0<br />

2.0<br />

2.0<br />

3.0<br />

0.0<br />

35.0<br />

35.4%<br />

0<br />

2<br />

2<br />

35.2%<br />

71%<br />

1551.2<br />

0<br />

0<br />

0<br />

0<br />

54.5<br />

42.0<br />

82.0<br />

11.0<br />

53.0<br />

1067.0<br />

43.1%<br />

A<br />

Spending per Student<br />

The chart below shows the spending per student for this school system. The letter<br />

grade compares the system’s per student spending to the state, southeast, and nation.<br />

Year Amount State Southeast Nation<br />

1996-1997<br />

1999-2000<br />

Taxpayers’ Report<br />

Sources of School System Revenues<br />

100%<br />

80%<br />

60%<br />

40%<br />

20%<br />

0%<br />

51.8%<br />

6.2%<br />

State Federal Local Other<br />

School System’s Use of Funds<br />

100%<br />

80%<br />

60%<br />

40%<br />

20%<br />

0%<br />

73.3%<br />

Instruction<br />

3.0% 3.5% 4.7%<br />

Admin<br />

Transportation<br />

8.4%<br />

Food<br />

Services<br />

Operations/<br />

Maintenance<br />

Mills Equivalent<br />

This is the total amount of revenue collected locally<br />

for public school purposes, divided by the value of<br />

one regular system mill of ad valorem tax. The state<br />

average is 29.78 mills equivalent. This chart<br />

compares this school system to others in the state.<br />

C<br />

40.8%<br />

Capital<br />

Outlay<br />

Debt<br />

Service<br />

This System<br />

Baldwin County High School<br />

One Tiger Dr<br />

Bay Minette, AL 36507-3300<br />

(251) 937-2341<br />

(Courtesy of Larry Bates)<br />

1.2%<br />

Total 2000 Fiscal Year Revenue = $151,051,574.52<br />

1.4% 3.7% 2.0%<br />

Total 2000 Fiscal Year Spending = $141,453,152.41<br />

$4,440.12<br />

$5,714.82 C<br />

C<br />

F<br />

27.90<br />

Other<br />

D<br />

D+<br />

Grade<br />

D+<br />

State Board of Education<br />

School Report Card for 2000-2001<br />

Baldwin County<br />

High School<br />

State Board of Education Members<br />

Gov. Don Siegelman, Board President<br />

Dr. Ethel Hall, Vice President, District 4<br />

Bradley Byrne, District 1<br />

G.J. “Dutch” Higginbotham, District 2<br />

Stephanie Bell, District 3<br />

Ella Bell, District 5<br />

David F. Byers, Jr., District 6<br />

Sandra Ray, District 7<br />

Dr. Mary Jane Caylor, District 8<br />

Ed Richardson, Superintendent of Education<br />

Academic Performance Summary*<br />

School’s Academic Status<br />

School System’s Academic Status<br />

Overall School Performance<br />

Overall Performance of<br />

Baldwin County<br />

Overall Performance of State of Alabama<br />

Principal-Mr Robert W Salter<br />

Superintendent-Dr Albert D Thomas<br />

School Board Members<br />

Mr Anthony P Kaiser<br />

Mr Dennis V Stastka<br />

Mr Robert A Wills<br />

Mr Don McGriff<br />

Report cards are prepared by the Alabama Department of Education.<br />

For more information, visit the SDE Web site at www.alsde.edu<br />

*Based on Stanford Achievement Test, 9th Edition Results<br />

CLEAR<br />

CLEAR<br />

C<br />

B<br />

B-<br />

Ms Julia Summerlin<br />

Ms Ruth S Underwood<br />

Mrs Denise Schmidt<br />

0020005<br />

Dynamic Documents with ReportLab and Zope, page 16 – © Dinu C. Gherman


Sample: Weather Forecasts<br />

Probabilidad<br />

(%)<br />

Precipitación<br />

100<br />

80<br />

60<br />

40<br />

20<br />

0<br />

Predicción para Sevilla (Aeropuerto), del jueves 30 de marzo al sábado 8 de abril<br />

Titular: Almacenes "Lealtad". Prohibida la distribución a terceros.<br />

jueves 30 mar viernes 31 mar sábado 1 abr domingo 2 abr lunes 3 abr martes 4 abr miércoles 5 abr jueves 6 abr viernes 7 abr sábado 8 abr<br />

85<br />

14<br />

1<br />

94<br />

5 1<br />

53<br />

33<br />

14<br />

4<br />

21<br />

75<br />

15<br />

38<br />

47 44 42<br />

14<br />

77<br />

19<br />

4<br />

84<br />

13<br />

3<br />

87<br />

10<br />

3<br />

87<br />

10<br />

3<br />

M E T E O L Ó G I C A<br />

meteorología avanzada<br />

10 l/m²<br />

Nubosidad<br />

Temp. máx<br />

Temp. mín<br />

Vientos<br />

100<br />

80<br />

60<br />

40<br />

20<br />

0<br />

Tª esperada<br />

100<br />

21° 21° 22° 19° 19° 19° 19° 19° 19° 20°<br />

80<br />

60<br />

40<br />

20<br />

0<br />

100<br />

80<br />

60<br />

40<br />

20<br />

0<br />

9<br />

3<br />

22<br />

80<br />

53<br />

20<br />

1<br />

17°<br />

19°<br />

21°<br />

23°<br />

25°<br />

Temperatura<br />

observada<br />

2<br />

3 19<br />

10°C<br />

1<br />

7<br />

47 1<br />

10 7<br />

2<br />

11 13<br />

1<br />

4<br />

29<br />

82<br />

47<br />

17<br />

2<br />

17°<br />

19°<br />

21°<br />

23°<br />

25°<br />

1<br />

13<br />

46<br />

34<br />

5°<br />

7°<br />

9°<br />

5<br />

11°<br />

13°<br />

5<br />

14<br />

1<br />

5<br />

17<br />

65<br />

31<br />

32<br />

12<br />

21<br />

1<br />

15°<br />

17°<br />

19°<br />

21°<br />

23°<br />

25°<br />

27°<br />

1<br />

9<br />

30<br />

35<br />

18<br />

3°<br />

5°<br />

7°<br />

9°<br />

11°<br />

13°<br />

15°<br />

5<br />

1<br />

1<br />

2<br />

7<br />

26<br />

18<br />

38<br />

21<br />

81<br />

13°<br />

15°<br />

17°<br />

19°<br />

21°<br />

23°<br />

25°<br />

3<br />

22<br />

45<br />

7°<br />

9°<br />

25<br />

4<br />

11°<br />

13°<br />

15°<br />

4<br />

1<br />

2<br />

8<br />

24<br />

33<br />

36<br />

24<br />

7<br />

15°<br />

17°<br />

19°<br />

21°<br />

23°<br />

1<br />

6<br />

26<br />

44<br />

5°<br />

7°<br />

9°<br />

20<br />

2<br />

11°<br />

13°<br />

15°<br />

65<br />

8<br />

7<br />

11<br />

23<br />

55<br />

31<br />

24<br />

10<br />

15°<br />

17°<br />

19°<br />

21°<br />

23°<br />

20<br />

30<br />

26<br />

5°<br />

7°<br />

9°<br />

12<br />

3<br />

11°<br />

13°<br />

15°<br />

38<br />

27<br />

9<br />

19<br />

55<br />

31<br />

27<br />

13<br />

15°<br />

17°<br />

19°<br />

21°<br />

23°<br />

12<br />

24<br />

30<br />

23<br />

5°<br />

7°<br />

9°<br />

10<br />

11°<br />

13°<br />

18<br />

37<br />

11<br />

20<br />

49<br />

32<br />

26<br />

10<br />

15°<br />

17°<br />

19°<br />

21°<br />

23°<br />

16<br />

27<br />

27<br />

19<br />

5°<br />

7°<br />

9°<br />

10<br />

11°<br />

13°<br />

14<br />

41<br />

9<br />

19<br />

46<br />

33<br />

26<br />

12<br />

15°<br />

17°<br />

19°<br />

21°<br />

23°<br />

10° 9° 11° 11° 9° 9° 9° 8° 8°<br />

3<br />

8 1<br />

3 51 10<br />

18<br />

2 4<br />

7<br />

1 1<br />

1 13<br />

21<br />

12 5<br />

2 9<br />

3<br />

24 1<br />

2<br />

6<br />

2<br />

12 8<br />

13 31 2<br />

20<br />

1<br />

1<br />

3 1 6 5 6<br />

1<br />

1<br />

33 4<br />

17 12 1<br />

12<br />

1<br />

5<br />

4<br />

1<br />

1<br />

24 30<br />

5<br />

13 1<br />

8 5<br />

2<br />

3<br />

9<br />

9<br />

4<br />

3<br />

15 21 17 1<br />

11<br />

3 3<br />

1<br />

2<br />

3 6 2<br />

7 8<br />

5 17 26 3 1<br />

13<br />

4 3<br />

17<br />

29<br />

33<br />

20<br />

11°<br />

5°<br />

7°<br />

9°<br />

13<br />

1 4 2<br />

5 10<br />

4 14<br />

32<br />

13 1<br />

4 4<br />

1<br />

5<br />

5<br />

45 42<br />

12<br />

26<br />

29<br />

19<br />

8<br />

15°<br />

17°<br />

19°<br />

21°<br />

23°<br />

25°<br />

14<br />

2 14<br />

28<br />

34<br />

30<br />

23<br />

11°<br />

13 1<br />

3 4<br />

1<br />

5°<br />

7°<br />

9°<br />

13<br />

1 4 2<br />

5 11<br />

7 2<br />

O<br />

Despejado<br />

Semicubierto<br />

cubierto<br />

4 < t < 6°C<br />

6 < t < 8°C<br />

8 < t < 10°C<br />

10 < t < 12°C<br />

12 < t < 14°C<br />

14 < t < 16°C<br />

16 < t < 18°C<br />

18 < t < 20°C<br />

20 < t < 22°C<br />

22 < t < 24°C<br />

24 < t < 26°C<br />

N<br />

S<br />

Fuerte<br />

Moder.<br />

E<br />

Calma<br />

Observaciones Miércoles 29 (Sevilla_Aero):<br />

Horas de sol: 8<br />

Precipitación: 0.0 l/m²<br />

Temperatura máxima: 20.0°C<br />

Temperatura mínima: 6.8°C<br />

T. mínima Jueves 30:10.3°C<br />

Jueves 30:<br />

Parcialmente cubierto. Temperaturas máxima y mínima de 21° y<br />

10°C. Viento flojo del suroeste.<br />

Viernes 31:<br />

Parcialmente cubierto. Temperaturas máxima y mínima de 21° y<br />

10°C. Viento flojo del oeste.<br />

Prob. alta<br />

Prob. media<br />

Prob. baja<br />

©2000 Meteológica SA Tf +34 91 378 8278 Fax +34 91 378 8279 eMail correo@meteologica.es www.meteologica.es<br />

(Courtesy of Marcos Sánchez Provencio)<br />

Dynamic Documents with ReportLab and Zope, page 17 – © Dinu C. Gherman


Sample: Telecom Invoices<br />

Telco Invoice Overview: May-Jun 2002<br />

Click on non-empty days to jump to details page!<br />

Mon Tue Wed Thu Fri Sat Sun<br />

10 11 12<br />

13 14 15 16 17 18 19<br />

20 21 22 23 24 25 26<br />

27 28 29 30 31 1 2<br />

3 4 5 6 7 8 9<br />

Call Details<br />

Move the mouse over the vertical bars (don't click) to see details popup!<br />

Fri<br />

10<br />

Sun<br />

12<br />

Date Start Duration Number Amount<br />

10.05.2002 16:55:36 00:19:49 0011620211 0.74<br />

10.05.2002 20:45:37 00:11:01 00480027802 0.44<br />

Date Start Duration Number Amount<br />

12.05.2002 10:27:28 00:00:38 0337863817 0.03<br />

12.05.2002 11:25:01 00:04:54 00480027802 0.18<br />

10 11 12 13 14<br />

Analysis<br />

Amounts Distribution (EUR)<br />

Duration Distribution (hours)<br />

16.21<br />

5<br />

4:24:27<br />

Frequency Distribution (#calls)<br />

40<br />

37<br />

Tue<br />

14<br />

Date Start Duration Number Amount<br />

14.05.2002 16:10:08 00:00:24 00458398788 0.21<br />

14.05.2002 16:11:21 00:00:07 00458398788 0.21<br />

14.05.2002 16:12:00 00:12:09 00458398788 2.80<br />

14.05.2002 18:23:01 00:27:16 0337863817 0.72<br />

15<br />

9.97<br />

10<br />

5<br />

2.49<br />

1.70<br />

0.00<br />

0<br />

Serv. GSM Local Nat'l Int'l<br />

Amounts Top 10 (EUR)<br />

00458398788<br />

3.02<br />

00458398788<br />

2.80<br />

4<br />

3:12:35<br />

3<br />

1:54:15<br />

2<br />

1<br />

0:13:21<br />

0:00:00<br />

0<br />

Serv. GSM Local Nat'l Int'l<br />

Duration Top 10 (hours)<br />

0011620211<br />

0:51:12<br />

03590932<br />

0:39:11<br />

30<br />

30<br />

20<br />

20<br />

10<br />

8<br />

0<br />

0<br />

Serv. GSM Local Nat'l Int'l<br />

Frequency Top 10 (#calls)<br />

0011620211<br />

18<br />

00480027802<br />

10<br />

Wed<br />

15<br />

Date Start Duration Number Amount<br />

15.05.2002 17:31:30 00:07:15 00480027802 0.30<br />

00458398788<br />

2.59<br />

2641419<br />

0:34:01<br />

0576619384<br />

8<br />

07551708738<br />

2.43<br />

03590932<br />

0:28:57<br />

00458398788<br />

8<br />

0011620211<br />

1.93<br />

3910570<br />

0:28:49<br />

3584517<br />

6<br />

2641419<br />

0.92<br />

0337863817<br />

0:27:16<br />

0127851520<br />

5<br />

0497646180<br />

0.87<br />

067767488<br />

0:25:10<br />

03590932<br />

4<br />

07551708738<br />

0.79<br />

07551708738<br />

0:22:49<br />

40932<br />

3<br />

03590932<br />

0.77<br />

0497646180<br />

0:22:00<br />

3910570<br />

3<br />

0011620211<br />

0.74<br />

0011620211<br />

0:19:49<br />

077649711<br />

3<br />

0 1 2 3 4<br />

0:00 0:15 0:30 0:45 1:00<br />

0 5 10 15 20<br />

Dynamic Documents with ReportLab and Zope, page 18 – © Dinu C. Gherman


Sample: iCards<br />

6 Mar.<br />

2003<br />

Greetings from<br />

Dinu Gherman<br />

Julia!<br />

Are you available for a<br />

dance with me tonight<br />

I'm dying if I can't meet<br />

you again!<br />

Muchos abrazos!<br />

Dinu<br />

Dynamic Documents with ReportLab and Zope, page 19 – © Dinu C. Gherman


Sample: <strong>Presentation</strong>s<br />

Dynamic Documents with<br />

ReportLab and Zope<br />

<strong>Presentation</strong> for the German Zope User<br />

Group's (DZUG) Meeting in Berlin, Germany<br />

28-29 March 2003<br />

Dinu C. Gherman<br />

ReportLab Consultant and Co-developer<br />

dinu @ mac or reportlab dot com<br />

Dynamic Documents with ReportLab and Zope, page 1 – © Dinu C. Gherman<br />

Dynamic Documents with ReportLab and Zope, page 20 – © Dinu C. Gherman


Sample: <strong>Presentation</strong>s cont'ed<br />

Informations sur ce document<br />

Ce document a été écrit au format XML pour le logiciel PythonPoint,<br />

qui permet de le convertir automatiquement au format PDF.<br />

Le document XML lui-même fait seulement 9 kilo-octets !<br />

Les images font en tout 28 kilo-octets !<br />

Le document PDF final comporte 10 pages et fait moins de 60 kilo<br />

kilo-octets !<br />

La routine Zope qui génère le document final fait moins de 30 lignes !<br />

Auteur :<br />

Jérôme Alet - Faculté de Médecine de Nice - 5 Mars 2002<br />

Licence :<br />

GNU Free Documentation License<br />

(Courtesy of Jérôme Alet)<br />

Dynamic Documents with ReportLab and Zope, page 21 – © Dinu C. Gherman


Sample: EuroPython Brochure<br />

8<br />

Friday, June 28 (morning)<br />

Room A Room B Room C<br />

08:30-09:00: Coffee<br />

09:00-09:10: "PrimeUser, a business case of the use 09:45-10:30: "New.zope.org<br />

of Zope for e-commerce", Raphaël Glassberg.<br />

09:15-09:25: "Enhancing and integrating Python Review", Paul Everitt.<br />

into an advanced IDE", Andre-Michel Descombes.<br />

09:30-09:40: "Slides - a presentation generator for<br />

Python", Itamar Shtull-Trauring.<br />

09:45-09:55: "Using Python to Escape the 4GL<br />

Trap", John Pinner.<br />

10:00-10:10: "Python-Logic: logic and constraint<br />

programming for Python", Alexandre Fayolle<br />

Nicolas Chauvat.<br />

10:15-10:25: "Python and wide field imaging in<br />

astronomy", Roeland Rengelink.<br />

09:00-09:10: "Python in a Tie",<br />

Marc-Andre Lemburg.<br />

09:30-09:40: "A support network for<br />

Python businesses in Europe",<br />

Andy Robinson.<br />

10:00-10:10: "Bottom-Up vs.<br />

Top-Down Strategies", Tim<br />

Couper.<br />

EURO P<br />

Conference 2002<br />

THON<br />

10:30-11:00: Coffee<br />

11:00-11:10: "BCLIMS : Improved Communications<br />

among the Structural Genomics Community", Babu<br />

Manjasetty.<br />

11:15-11:25: "Zoa - Working with Boa Constructor<br />

and Zope", Robert Boulanger.<br />

11:30-11:40: "Gideon: An Application Framework<br />

For Zope", Kapil Thangavelu.<br />

11:45-11:55: "AB Strakt's N-tier Framework for<br />

Real-time Computer-assisted Collaborative<br />

Applications", Alex Martelli.<br />

12:00-12:10: "CopyZClass, a Zope product to copy<br />

and adapt an existing ZClass", Michael Eichner.<br />

12:15-12:25: "Generating a database and its<br />

management interface based on a XML semantic<br />

description", Godefroid Chapelle.<br />

EURO P<br />

12:30-13:30: Lunch<br />

THON<br />

Conference 2002<br />

ASdu International N.V.<br />

11:00-11:10: "Using Open-Source<br />

Software for Profit ", Tim Couper.<br />

11:30-11:40: "Building<br />

Business-Relationships for<br />

Marketing Products and Services",<br />

Tim Couper.<br />

NB The times given here are not binding -- the entries are merely to give a rough outline of which topics are planned. It is<br />

the nature of a BoF/LT day to have short-notice changes.<br />

ASdu International is the distributor of important computer<br />

book publishers.<br />

ASdu International n.v. offers you a solution in your quest<br />

for the most suitable book.<br />

CHARLEROI - BELGIUM<br />

June 26.-28. 2002<br />

One of the publishers we distribute is O’Reilly.<br />

The O’Reilly books, known for the animals on their covers, occupy a<br />

treasured place on the shelves of the developers building the next<br />

generation of software. From the Internet to XML, opensource, .NET, Java and Web<br />

Services, O’Reilly puts technology on the map.<br />

More information Contact us !<br />

ASdu International n.v.<br />

Battelsesteenweg 455 d<br />

2800 Mechelen<br />

tel.: 015 285 440<br />

fax: 015-285 449<br />

email: info@asdu.be<br />

www.asdu.be<br />

Charleroi - Belgium European Python and Zope Conference 2002<br />

Dynamic Documents with ReportLab and Zope, page 22 – © Dinu C. Gherman


Sample: "Python Reference" Book<br />

Python Referenz<br />

Python Referenz<br />

3 Typen und Objekte<br />

Alle Daten eines Python-Programmes basieren auf dem Konzept eines Objektes. Objekte umfassen<br />

grundlegende Datentypen wie Zahlen, Zeichenketten, Listen und Dictionaries. Es ist auch möglich,<br />

benutzerdefinierte Datentypen in Form von Klassen oder Erweiterungstypen zu erstellen. Dieses Kapitel<br />

beschreibt das Objektmodell von Python und gibt eine Übersicht der eingebauten Datentypen. Kapitel 4,<br />

»Operatoren und Ausdrücke«, beschreibt weitere Operatoren und Ausdrücke.<br />

3.1 Terminologie<br />

Jedes Datum im Speicher ist ein Objekt. Jedes Objekt hat eine Identität, einen Typ und einen Wert.<br />

Wenn man z.B. a = 42 schreibt, wird ein Ganzzahl-Objekt mit dem Wert 42 erzeugt. Man kann die<br />

Identität eines Objektes als Zeiger auf einen Platz im Hauptspeicher betrachten. a ist der Name dieses<br />

Platzes.<br />

Der Typ eines Objektes (der seinerseits eine spezielle Art von Objekt ist) beschreibt die interne<br />

Repräsentation des Objektes wie auch die Methoden und Operationen, die es unterstützt. Wird ein<br />

Objekt eines bestimmten Typs erzeugt, so wird dieses Objekt manchmal als eine Instanz dieses Typs<br />

bezeichnet (obwohl eine Instanz eines Typs nicht mit einer Instanz einer benutzerdefinierten Klasse<br />

verwechselt werden sollte). Nachdem ein Objekt erzeugt wurde, können dessen Identität und Typ nicht<br />

mehr verändert werden. Falls dessen Wert jedoch verändert werden kann, so sagt man, das Objekt ist<br />

veränderlich. Falls der Wert nicht verändert werden kann, so spricht man entsprechend von einem<br />

unveränderlichen Objekt. Ein Objekt, das Verweise auf andere Objekte enthält, bezeichnet man als<br />

Container oder Sammlung.<br />

Zusätzlich zum Wert, den sie repräsentieren, definieren viele Objekte eine Anzahl von Datenattributen<br />

und Methoden. Ein Attribut ist eine mit dem Objekt assoziierte Eigenschaft oder ein Wert. Eine<br />

Methode ist eine Funktion, die eine gewisse Operation auf einem Objekt ausführt, sobald sie angestoßen<br />

wird. Attribute und Methoden werden mit dem Punkt-Operator (.) angesprochen, wie im folgenden<br />

Beispiel gezeigt wird:<br />

a = 3 + 4j<br />

r = a.real<br />

# Erzeuge eine komplexe Zahl.<br />

# Hole den Realteil (ein Attribut).<br />

b = [1, 2, 3] # Erzeuge eine Liste.<br />

b.append(7) # Füge ein neues Element an b<br />

# mit der Methode 'append' an.<br />

3.2 Identität und Typ von Objekten<br />

Die eingebaute Funktion id() gibt die Identität eines Objektes als ganzzahligen Wert zurück. Dieser<br />

entspricht normalerweise dem Platz des Objektes im Hauptspeicher, was aber abhängig von der<br />

Implementierung ist. Der Operator is vergleicht die Identität zweier Objekte. Die eingebaute Funktion<br />

type() gibt den Typ eines Objektes zurück, z.B:<br />

# Vergleiche zwei Objekte.<br />

def compare(a, b):<br />

print 'Die Identität von a ist ', id(a)<br />

print 'Die identität von b ist ', id(b)<br />

if a is b:<br />

print 'a und b sind dasselbe Objekt.'<br />

if a == b:<br />

print 'a und b haben den gleichen Wert.'<br />

if type(a) == type(b):<br />

print 'a und b haben den gleichen Typ.'<br />

Der Typ eines Objektes ist seinerseits ein Objekt. Das Standardmodul types beinhaltet die<br />

Typ-Objekte für alle eingebauten Typen und kann für eine Typ-Prüfung verwendet werden, z.B. so:<br />

import types<br />

if isinstance(s, types.ListType):<br />

print 'Ist eine Liste.'<br />

Benutzerdefinierte Funktionen sind aufrufbare Objekte, die auf Modulebene mit der Anweisung def<br />

oder der Operation lambda erzeugt werden (Funktionen, die innerhalb von Klassen definiert werden,<br />

nennt man Methoden. Sie werden in Kürze beschrieben). In Python sind Funktionen Bürger erster<br />

Klasse, die genauso behandelt werden wie alle anderen Python-Objekte. Daraus folgt, dass man sie an<br />

Variablen zuweisen oder sie in Listen, Tupel oder Dictionaries unterbringen kann, wie im folgenden<br />

Beispiel gezeigt wird:<br />

def foo(x, y):<br />

print '%s + %s ist %s' % (x, y, x+y)<br />

# Weise an eine neue Variable zu.<br />

bar = foo<br />

bar(3, 4)<br />

# Ruft 'foo' auf, oben definiert.<br />

# Setze foo in einen Container.<br />

d = {}<br />

d['callback'] = foo<br />

d['callback'](3, 4) # Ruft 'foo' auf.<br />

Eine benutzerdefinierte Funktion verfügt über folgende Attribute:<br />

Attribut(e)<br />

f.__doc__ oder<br />

f.func_doc<br />

f.__name__ oder<br />

f.func_name<br />

f.func_code<br />

f.func_defaults<br />

f.func_globals<br />

Beschreibung<br />

Dokumentations-String<br />

Funktionsname<br />

Byte-übersetzter Code<br />

Tupel mit voreingestellten Argumenten<br />

Dictionary, das den globalen Namensraum<br />

definiert<br />

Methoden sind Funktionen, die nur auf Objektinstanzen operieren. Üblicherweise werden Methoden<br />

innerhalb einer Klassendefinition definiert:<br />

# Eine Schlange von Objekten, nach Prioritäten sortiert.<br />

class PriorityQueue:<br />

def __init__(self):<br />

self.items = [ ]<br />

# Liste von (priority, item)<br />

def insert(self, priority, item):<br />

for i in range(len(self.items)):<br />

if self.items[i][0] > priority:<br />

self.items.insert(i, (priority, item))<br />

break<br />

else:<br />

self.items.append((priority, item))<br />

def remove(self):<br />

try:<br />

return self.items.pop(0)[1]<br />

except IndexError:<br />

raise RuntimeError, 'Schlange ist leer'<br />

Ein ungebundenes Methodenobjekt ist eine Methode, die noch nicht mit einem speziellen Instanzobjekt<br />

assoziiert wurde. Die Methoden in einer Klassendefinition sind solange ungebunden, bis sie einem<br />

speziellen Objekt hinzugefügt werden, z.B.:<br />

m = PriorityQueue.insert # Ungebundene Methode.<br />

Um eine ungebundene Methode aufzurufen, übergibt man eine Objektinstanz als erstes Argument:<br />

pq = PriorityQueue()<br />

m = PriorityQueue.insert<br />

m(pq, 5, "Python")<br />

# Ruft pq.insert(5, "Python") auf.<br />

Ein gebundenes Methodenobjekt ist eine Methode, die bereits mit einem speziellen Instanzobjekt<br />

assoziiert wurde, z.B.:<br />

27<br />

33<br />

Dynamic Documents with ReportLab and Zope, page 23 – © Dinu C. Gherman


Integration with Zope<br />

Adding functionality to Zope<br />

• Scripts<br />

• External Methods<br />

• Products<br />

Caution!<br />

• Thread-safety not guaranteed<br />

• Don't change module-level objects at runtime, like:<br />

reportlab.lib.colors.*<br />

reportlab.rl_config.*<br />

Dynamic Documents with ReportLab and Zope, page 24 – © Dinu C. Gherman


Sample product: RenderableCharts<br />

• Version 0.5, by Dirk Datzert<br />

• Provides chart templates and objects<br />

• Manages setting and storing attributes<br />

• Combines with DTML-Methods, ZSQL-Methods,<br />

TinyTables or Scripts for the real chart data<br />

• Output in different formats<br />

• Context: SAP reporting/controlling<br />

Dynamic Documents with ReportLab and Zope, page 25 – © Dinu C. Gherman


Demo<br />

Sample ext. method: RLfromZope<br />

• By Jérôme Alet<br />

• reportlab/demos/rlzope/rlzope.py, ~100 lines<br />

• Returns sample dynamic PDF<br />

• Contains one logo from Zope DB<br />

To make it more exciting:<br />

• Replace ~20 lines of code<br />

• Let it fetch some images from the web<br />

• Build a catalog of products (next page)<br />

Dynamic Documents with ReportLab and Zope, page 26 – © Dinu C. Gherman


Sample ext. method: RLfromZope cont'ed<br />

A sample catalog generated with an external Zope method and ReportLab<br />

A sample catalog generated with an external Zope method and ReportLab<br />

Dynamic Documents with ReportLab and Zope, page 27 – © Dinu C. Gherman


Summary<br />

Remember, you can:<br />

• make/serve "real" documents from Zope,<br />

• give users what they want,<br />

• do it all in Python,<br />

• get help, too (contact me)!<br />

The message to take home:<br />

• ReportLab/Zope is a perfect match!<br />

Dynamic Documents with ReportLab and Zope, page 28 – © Dinu C. Gherman


Links<br />

• reportlab.com<br />

• reportlab.com/contrib/pyref1de.html<br />

• keyfeatures.fidelity.co.uk<br />

• fidelity.co.uk/direct/select<br />

• alsde.edu/html/ed_dir_menu.asp<br />

• zope.org/Members/Dirk.Datzert/RenderableCharts<br />

• python.net/~gherman/#rlzope<br />

• python.net/~gherman/#svglib<br />

• zope.org<br />

• dzug.org<br />

Dynamic Documents with ReportLab and Zope, page 29 – © Dinu C. Gherman

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!