Commit 3b4b2216 authored by Evan Simpson's avatar Evan Simpson

Merge 2 from evan-script_fix-branch

parent f51e088d
...@@ -83,8 +83,8 @@ ...@@ -83,8 +83,8 @@
# #
############################################################################## ##############################################################################
__doc__='''Python Scripts Product Initialization __doc__='''Python Scripts Product Initialization
$Id: __init__.py,v 1.6 2001/01/10 21:33:06 brian Exp $''' $Id: __init__.py,v 1.7 2001/02/27 17:35:17 evan Exp $'''
__version__='$Revision: 1.6 $'[11:-2] __version__='$Revision: 1.7 $'[11:-2]
import PythonScript import PythonScript
try: try:
...@@ -111,4 +111,5 @@ def initialize(context): ...@@ -111,4 +111,5 @@ def initialize(context):
) )
context.registerHelp() context.registerHelp()
context.registerHelpTitle('Zope Help') context.registerHelpTitle('Script (Python)')
Script (Python) - Bindings: View/Change Bindings Bindings View: View/Change Script Bindings
Description Description
......
Allowing Import of Modules
Scripts are able to import a small number of Python modules for
which there are security declarations. These include 'string',
'math', and 'random'. The only way to make other Python modules
available for import is to add security declarations to them in the
filesystem.
MyScriptModules
The simplest way to allow import of a module is to create your own
simple custom Product. To make this Product:
1. Create a subdirectory of your Zope installation's "Products"
directory. The name of the directory doesn't really matter; Let's
call it 'MyScriptModules'.
2. Create a file in this subdirectory called '__init__.py'.
3. Add the following lines to your '__init__.py'::
from Products.PythonScripts.Utility import allow_module, allow_class
from AccessControl import ModuleSecurityInfo, ClassSecurityInfo
from Globals import InitializeClass
4. For each module to which you want to allow access, add
security declarations in '__init__.py'.
Security Declarations
You will need to write different security declarations depending
on how much of a module you want to expose. You should import the
module at the Python command line, and use 'dir(<module_name>)' to
examine its contents. Names starting with underscore ('_') may be
safely ignored. Be wary of dangerous modules, such as 'sys' and
'os', which may be exposed by the module.
You can handle a module, such as 'base64', that contains only safe
functions by writing 'allow_module("module_name")'.
To allow access to only some names, in a module with dangerous
contents, you can write::
ModuleSecurityInfo('module_name').declarePublic('name1',
'name2', ...)
If the module contains a class that you want to use, you will need
to add the following::
from <module_name> import <class>
allow_class(<class>)
Certain modules, such as 'sha', provide extension types instead of
classes. Security declarations typically cannot be added to
extension types, so the only way to use this sort of module is to
write a Python wrapper class, or use External Methods.
Script (Python) - Edit: Edit A Script (Python) Edit View: Edit A Script (Python)
Description Description
This view allows you to edit the logic which composes a script This view allows you to edit the logic which composes a script
in Python. Script (Python) instances execute in a restricted in Python. Script instances execute in a restricted
context, bounded by your user's privilege level in Zope, and context, bounded by your user's privilege level in Zope, and
certain global restrictions of all through-the-web code. For certain global restrictions of all through-the-web code. For
information about what you "can" and "cannot" do in a Script information about what you "can" and "cannot" do in a Script
(Python) instance as opposed to non-through-the-web Python, instance as opposed to non-through-the-web Python,
see the API Reference documentation for "PythonScript" in see the API Reference documentation for "Script (Python)" in
this help system. this help system.
Controls Controls
......
Script (Python) - Test: Test A Script (Python) Test View: Test a Script (Python)
Description Description
...@@ -6,11 +6,11 @@ Script (Python) - Test: Test A Script (Python) ...@@ -6,11 +6,11 @@ Script (Python) - Test: Test A Script (Python)
Controls Controls
If a Script (Python) has no parameters, when the "Test" tab is If a Script has no parameters, when the "Test" tab is
visited, the return value of the script will be presented in visited the return value of the script will be presented in
the manage_main frame. the manage_main frame.
However, if a Script (Python) instance has parameters, a form However, if a Script instance has parameters, a form
will be presented with fields for "Parameter" and "Value", will be presented with fields for "Parameter" and "Value",
changeable on a per-parameter basis. These accept string changeable on a per-parameter basis. These accept string
values. The 'Run Script' button runs the script after the values. The 'Run Script' button runs the script after the
......
a = 0
b = 1
try:
int('$')
except ValueError:
a = 1
try:
int('1')
except:
b = 0
return a, b
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment