Edit View: Edit A Script (Python)

Description

This view allows you to edit the logic which composes a script in Python. Script instances execute in a restricted context, bounded by your user's privilege level in Zope, and certain global restrictions of all through-the-web code. For information about what you "can" and "cannot" do in a Script instance as opposed to non-through-the-web Python, see the API Reference documentation for "Script (Python)" in this help system.

Controls

Title
Allows you to specify the Zope title of the script.
Id
Allows you to specify the id of the script.
Parameter List
Enter function parameters for this script separated by commas. For example: foo, bar, baz

Status Elements

Bound Names
the names used by this script for bindings. You may use these names in the body of the script to refer to bound elements. The defaults are:
          context -- the script's "parent" respective to acquisition.

          container -- the script's "parent" respective to containment.

          script -- the script object itself.

          traverse_subpath -- if the script is called directly from a URL,
           this is the portion of the URL path after the script's name,
           split at slash separators, into a list of strings.  If the script
           was not called directly from a URL, this will be an empty list.

Another possible name binding, to the "namespace" object, is not set by default. If this was set, if the Script was called from DTML, it would represent the namespace of the calling DTML object.

More information about bindings can be found by visiting the help screens of the "Bindings" tab of a Script (Python) instance.

Buttons and Other Form Elements

Save Changes
saves changes you make to the body, title, or parameter list.
Taller/Shorter/Wider/Narrower
make the body textarea taller, shorter, wider, or narrower.
File
upload a file into this Script (Python) instance.
File Upload Details

Files uploaded into a Script (Python) instance may either consist only of the actual body of the function, or the file containing the function body may contain at its head a set of lines starting with "##" which describe bindings, parameters, and the title. For example, a file uploaded into a Script (Python) instance might be simply:

            return "Hello"

If you upload this file into a Script (Python) instance, the existing settings (or default settings) for bindings, parameters, and title will remain.

However, if you wished to, you could develop a Script (Python) on disk which looked like:

            ## Script (Python) "foo"
            ##bind container=container
            ##bind context=context
            ##bind namespace=
            ##bind script=script
            ##bind subpath=traverse_subpath
            ##parameters=goop, fudge
            ##title=
            ##
            return "Fudge was %s, goop was %s" % (fudge, goop)

The lines preceded by "##" are metadata about the Script (Python) instance which can survive a round trip via FTP or through the web interface. When these lines are encountered by the parser after an upload (or webform save), they serve to modify the settings of the Script (Python) instance with the metadata contained within the blocked area.

Lines beginning with "##" without any spaces after the "##" are contextually meaningful to the file upload parser. There are three keywords which can directly follow a "##": "bind", "parameters", and "title".

The "bind" keyword following a "##" binds a name to a object in the context this Script (Python) instance's body. For example, the line "##bind container=goober" binds the name "goober" to the acquisition parent of the script, allowing you to refer to "goober" in the script body. Legal objects to which to bind are: container, context, namespace, script, and subpath. See the help available from the "bindings" tab of Script (Python) instances for more details about what bindings mean.

The "title" keyword following a "##" provides a title to the script. E.g. "title=A Really Neat Script"

The "parameters" keyword following a "##" provides parameters to the Script (Python) instance. E.g. "parameters=foo,bar,baz".