Creating An Online Survey Using Zope & QSurvey:
A Step by Step Introduction
Download this Document as PDF

Main URL for the Zope Management Interface:  (replace "EUID" with the appropriate user folder name,
                                                                            i.e. - your EUID)

NOTE:  In Windows under "My Network Places", "Add Network Place" with URL:        (replace "EUID" with the appropriate user folder name,
                                                                              i.e. - your EUID)

Yahoo Groups Forum for using Zope with QSurvey at UNT:   

Group name: zopeunt
Group home page:
Group email:

AVI Tutorial Download

These are a set of 14 zipped AVI videos (approx. 53 meg. total) with sound (5-10 minutes each) that
demonstrate how to authenticate in to the Zope server and create a QSurvey object from beginning to end. 
I will post more AVI's as I record them.  I will also post some AVI's on how to download the data and
import into a statistical package.   

R and Survey Analysis



Zope is a web publishing system. It consists of an optional web server, a middle layer which coordinates
getting things into and out of the database, and an object database. You can leave out the web server and
run Zope behind Apache or IIS. Zope is designed to, and excels at, publishing dynamic content. If you have
a three page web site, Zope is overkill. If you have hundreds and thousands of pages, lots of users, and
impatient readers, Zope is a very good thing. Zope is also open-source, which is crucial to its success.
(Zope is actually an acronym: it stands for Z Object Publishing Environment. The programming languages
used to build Zope are Python and C. Most of Zope is written in Python, and any bits where performance is
crucial have been rewritten in C. Zope has been described as Python's killer application; that is, the one
application that makes it well worth learning Python and which best shows off the power of Python.

Zope (Z Object Publishing Environment )

  • Digital Creations (1998) ? Zope Corporation. (2001)
  • Originally Used for Newspaper Publishing
  • Zope is Based on Python; Cross-Platform
  • Zope uses an Object-Oriented Web development Model
  • Content, Logic, & Presentation are separated

Component Features

  • ZServer + Apache - Can be used alone or in conjunction with Apache
  • Through-the-Web Management - Zope Management Interface (ZMI)
  • Integrated Control: Undo, Security
  • ZODB + SQL Database Adaptor - Built in Object Database and API's for Popular Databases
  • Built-in Search Tools: ZCatalog
  • Safe Delegation: acl_users folder allows management of usernames and passwords
  • Extensible Modules: Products - QSurvey is one example


The QSurvey product is designed to make on-line surveys easy to write. Instead of having first to
develop the backend for the storage, then adapt the questions to the storage available, this product
allows you to concentrate on the survey and its questions. Zope takes care of the storage. The
page-centric model with optional branching determines at run-time which page to display next.
If you need more than simple questions, you may include DTML Document material interspersed
with your questions. This means that Images and other content are allowed inside a QPage.

QSurvey features:

  • A page-oriented model, with the QSurvey holding QPages, and QPages holding DTML
     Documents and Questions.
  • Multi-page interaction is possible with branching dependent on the values of a multiple-choice
  • All Multiple-Choice are a single type. Select listbox, radio, checkbox, formatting from a
    single "options" tab.
  • Ordering of things within a page from a management tab in the QPage object.
  • Uses css instead of tables. Looks very nice in IE4+, Mozilla. Acceptable on NS4. Degrades
    nicely for Lynx. Deliberately ugly default css provided to encourage customization.
  • Pays attention to AUTHENTICATED_USER for results ID creation .
  • RESULTS available in various tab-delimited formats.


Information on the Zope Web-Content Management System

Installing and Starting Zope - Main Zope Site  - "The Zope Book" Online

Free Zope Hosting

General Introductions to Survey Methodology

General Introduction to Internet Survey Construction
Using the Internet for Quantitative Survey Research
Survey Analysis via Email and Internet - Online E-Book
Articles on Survey Construction and Analysis
Everything About Web Surveys
American Statistical Association Series on Surveys
Essentials of Survey Research
Social Surveys Online
Survey Design
A Collection of Papers on Non-Response in Surveys
Articles on Internet Survey Methodology - Dillman
Review Article on Internet Data Collection
Review Article on Survey Research

S Language Interface and Links

Statistical Computing Interface
Download R for Windows
Help Page for the R library "survey" - library for analyzing complex surveys

Other Resources and Free Statistical Packages for Surveys

Website for AM Statistical Software (Windows platform) - Software for Complex Survey Analysis
Download AM software, manual, and patch file - ZIP file contains self extracting file
Digital Resources for Evaluators

Introduction to the QSurvey Zope Software 
(For updates see - Notes)

Quick Overview of General Usage of QSurvey

Create a QSurvey. Within the QSurvey, create a QPage. Within the QPage, add questions. Within each
question, enter the text for the question and the choices if it is a multiple-choice question. Set options on each
question from the "Options" management tab."View" or index_html from the QSurvey level actually writes to
the ZODB when submitted; "View" from QPage or "Question" level will dump REQUEST when submitted. 
Please note that a QSurvey page will not work outside of a QSurvey survey object, nor will QSurvey questions
work outside of a QSurvey page - you must retain the hierarchical structure of the QSurvey objects.  QSurvey
uses Zope's session tracking and commits save on submission of  the last page. To make this happen, create a
final FINISH page, and on the Button_Text tab, set the button text.  This is a good place to say "thanks for
completing the survey."  Make sure that you set the first page of the survey by going to the "Navigation
Tab" at the survey folder level.  Choose the first page of the survey.  You will need to set the transitions
for each page at the survey page folder level.  It is very important that you DO NOT set the transition
on the "Transition Tab" for the last page.  This will cause the survey to not submit the results to the
Zope ZODB database.
  A "RESULTS" folder and a "qss_css" file will be created when the first survey result is
submitted.  The qss_css file is a cascading style sheet that can be edited to change the look and feel (colors, formatting)
of the survey.  Within the RESULTS folder there are a few tabs that extract the data from the ZODB database. 
The tabs:  "tsv_single" (single selection questions); "tsv_multiple" (multiple selection questions); "tsv_text" (text box
only questions) extract your submitted data into a tab-delimmited text file that can be downloaded to your desktop
for input into Excel or SPSS for example.  Lastly,  it is important to note that browser errors are cached whenever
a QSurvey survey is being built and tested.  So that whenever a problem is corrected in the survey, that the error
will persist in displaying.  You will need to close all browser down and re-spawn your browser to have the
corrected survey display without errors. 

Adding an LDAPUserFolder to an Existing QSurvey Survey

PLEASE NOTE UPDATE:  THE LDAPUserFolder will need to use the
                                        LDAP server instead of
                                                 (for example, the information in the following
                                                  screen shots is inaccurate on this information).      

To use an LDAPUserFolder you must first delete the regular "acs_users" folder object if it exists.  Select LDAPUserFolder from the drop down list of Zope objects.  Note:  If you currently use your EUID as your username for login to the Zope management interface, you will need to change your Zope login username to a username different from the EUID username currently in the LDAP database - there are conflicts between the LDAP EUID username and any usernames assigned in Zope that are identical to the LDAP usernames.  Once the LDAPUserFolder object is created, go into that folder and fill in the form with appropriate information as listed in the screenshots below:  



Creating a QSurvey Survey: Screenshots from beginning to end:

Screen 1

Screen 2

Screen 3

Screen 4

Screen 5

Screen 6

Screen 7

Screen 8

Screen 9

Screen 10

Screen 11

Screen 12

Screen 13

Screen 14

Screen 15

Screen 16

Screen 17

Screen 18

Screen 19

Screen 20

Screen 21

Screen 22

Screen 23

Screen 24

Screen 25

Screen 26

Screen 27

Screen 28

Screen 29

Screen 30

Screen 31

Screen 32

Screen 33

Screen 34

Screen 35

Screen 36

Screen 37

Screen 38

Screen 39

Screen 40

Screen 41

Screen 42

Screen 43

Screen 44

Screen 45

Screen 46

Screen 47

Screen 48

Screen 49

Screen 50

Screen 51

Screen 52

Screen 53

Screen 54

Screen 55

Screen 56

Screen 57

Screen 58

 Screen 59

Screen 60

Screen 61

Screen 62