ZCML File
configure.zcml

<configure
    xmlns="http://namespaces.zope.org/zope"
    xmlns:browser="http://namespaces.zope.org/browser"
    i18n_domain="zope"
    >
<interface
    interface=".IPythonPage"
    type="zope.app.content.interfaces.IContentType"
    />
<class
    class=".PythonPage"
    >
<factory
    id="zope.app.pythonpage.PythonPage"
    title="Python Page"
    description="A simple, content-based Python Page"
    />
<require
    permission="zope.View"
    interface=".IPythonPage"
    />
<require
    permission="zope.ManageContent"
    set_attributes="source contentType"
    />
</class>
<browser:page
    class=".browser.PythonPageEval"
    for=".IPythonPage"
    permission="zope.View"
    name="index.html"
    attribute="index"
    />
<browser:addform
    name="AddPythonPage.html"
    schema=".IPythonPage"
    permission="zope.ManageContent"
    label="Add Python Page"
    content_factory=".PythonPage"
    />
<browser:addMenuItem
    title="Python Page"
    description="An Python Page"
    permission="zope.ManageContent"
    class=".PythonPage"
    view="AddPythonPage.html"
    />
<browser:editform
    name="edit.html"
    schema=".IPythonPage"
    for=".IPythonPage"
    permission="zope.ManageContent"
    template="edit.pt"
    class=".browser.PythonPageEditView"
    label="Edit Python Page"
    menu="zmi_views"
    title="Edit"
    />
<configure
    package="zope.app.preview"
    >
<browser:page
    for="zope.app.pythonpage.IPythonPage"
    permission="zope.ManageContent"
    name="preview.html"
    template="preview.pt"
    menu="zmi_views"
    title="Preview"
    />
</configure>
</configure>