| Foreword | 7 |
---|
| Contents | 11 |
---|
| Part I Beginner | 16 |
---|
| 1 Introduction | 17 |
| 1.1 About this book | 17 |
| 1.2 What is Zope? | 18 |
| 1.3 Zope’s features | 21 |
| 1.4 The history of Zope | 23 |
| 1.5 The Python Programming Language | 25 |
| 1.6 Changes since Zope X3 3.0 | 26 |
| 2 Zope and the Component Architecture | 29 |
| 2.1 How Zope works—an overview | 29 |
| 2.2 Introducing components | 30 |
| 2.3 Interfaces | 33 |
| 2.4 Content components | 34 |
| 2.5 Adapters | 35 |
| 2.6 Utilities | 37 |
| 2.7 Configuring components | 38 |
| 2.8 Security | 39 |
| 3 Installing Zope | 42 |
| 3.1 Requirements | 42 |
| 3.2 Download, compilation and installation | 44 |
| 3.3 Setting up a Zope instance | 46 |
| 3.4 The example application | 55 |
| 4 Interfaces | 59 |
| 4.1 Interface semantics | 59 |
| 4.2 Defining interfaces | 60 |
| 4.3 Declaring that an object provides an interface | 64 |
| 4.4 Verifying implementations | 68 |
| 4.5 Schemas | 69 |
| 5 Content Components | 78 |
| 5.1 Schema-based content | 78 |
| 5.2 Configuration via ZCML | 83 |
| 5.3 Content types | 87 |
| 5.4 Factories | 89 |
| 6 Persistency | 94 |
| 6.1 The problem of object storage | 94 |
| 6.2 Making persistent objects | 97 |
| 6.2 Making persistent objects | 97 |
| 6.3 Working with persistent objects | 99 |
| 6.4 BTrees | 103 |
| 7 Simple Views and Browser Pages | 106 |
| 7.1 Introduction to views | 106 |
| 7.2 Page Templates | 110 |
| 7.3 A simple view Page Template | 117 |
| 7.4 Enhanced browser pages | 121 |
| 8 Browser Forms | 126 |
| 8.1 Schema-based forms | 126 |
| 8.2 Adding objects and add forms | 133 |
| 8.3 Custom widgets | 135 |
| Part II Intermediate | 147 |
---|
| 9 Internationalization | 148 |
| 9.1 Overview | 149 |
| 9.2 Messages and translation domains | 150 |
| 9.3 Internationalizing an application | 154 |
| 9.4 Message catalogs | 165 |
| 9.5 Localization | 170 |
| 10 Customizing a Site’s Layout | 176 |
| 10.1 Layers and skins | 176 |
| 10.2 Page Template macros | 182 |
| 10.3 Custom skins | 187 |
| 10.4 Content providers and viewlets | 193 |
| 11 Adapters | 201 |
| 11.1 Size | 201 |
| 11.2 File representation | 205 |
| 11.3 Customizing an existing adapter | 212 |
| 12 Automated Testing | 215 |
| 12.1 Introduction | 215 |
| 12.2 Unit tests | 217 |
| 12.3 Doctests | 220 |
| 12.4 Running tests | 223 |
| 12.5 Integration tests | 229 |
| 13 Advanced Views | 241 |
| 13.1 Browser pages with non-HTML content | 241 |
| 13.2 Browser menus | 250 |
| 13.3 Other HTTP protocols | 253 |
| 14 Metadata | 263 |
| 14.1 Annotations | 263 |
| 14.2 The Dublin Core | 267 |
| 15 Containers | 286 |
| 15.1 Object hierarchies and traversal | 286 |
| 15.2 Containment and location | 289 |
| 15.3 Containment constraints | 294 |
| 15.4 Names of contained objects | 299 |
| 15.5 File representation | 304 |
| 16 Events | 309 |
| 16.1 Introduction | 309 |
| 16.2 Object events | 312 |
| 16.3 Sending emails for event notification | 320 |
| Part III Expert | 334 |
---|
| 17 Sources and Vocabularies | 335 |
| 17.1 Sources | 335 |
| 17.2 Vocabularies | 337 |
| 17.3 Using vocabularies | 342 |
| 18 Sites | 348 |
| 18.1 Introduction | 348 |
| 18.2 Local utilities | 352 |
| 18.3 Implementing sites | 356 |
| 19 Indexing and Searching | 362 |
| 19.1 Indexing and object references | 362 |
| 19.2 The catalog and its indices | 365 |
| 19.3 Querying the catalog for searching | 370 |
| 19.4 Database generations | 375 |
| 20 Browser Sessions | 379 |
| 20.1 Identifying clients | 379 |
| 20.2 Storing session data | 382 |
| 20.3 Using sessions | 385 |
| 21 Security | 390 |
| 21.1 Overview | 390 |
| 21.2 Permissions | 397 |
| 21.3 Roles | 401 |
| 22 Authentication and User Management | 406 |
| 22.1 The Pluggable Authentication Utility | 406 |
| 22.2 Login and logout with credential plug-ins | 408 |
| 22.3 Managing principals with authenticator plug-ins | 412 |
| 22.4 Principal metadata | 425 |
| 23 Debugging Zope | 432 |
| 23.1 Self-documenting code with APIDoc | 432 |
| 23.2 Online debugging tools | 436 |
| 23.3 Using the Python debugger | 439 |
| 24 Packaging and Deployment | 442 |
| 24.1 Packaging an application | 442 |
| 24.2 Preparing a production instance | 447 |
| 24.3 Virtual hosting | 449 |
| 24.4 Improving scalability | 455 |
| Part IV Appendices | 459 |
---|
| A API Reference | 460 |
| B ZCML Reference | 499 |
| References | 545 |
---|
| Index | 553 |