[Zope] How to configure Zope & Python environment
Steve Hunter
Steve@hosys.com
Tue, 15 Jun 1999 00:33:03 -0400
Hello,
I am running Zope on windows using the builtin webserver and attempting to
add a new Product. The way
I've been going about using Zope so far is to install a new "Zope directory"
for each new project...not so
bad until I started trying to "compile" python code. It seems to me I should
create a "default" install of
Zope and point my python path to those directories ?
I am trying to compile the following Product code (below) and get the
following err message:
Traceback (innermost last):
File
"C:\Tech\Lang\Python\Python152\Pythonwin\pywin\framework\scriptutils.py",
line 237, in RunScript
exec codeObject in __main__.__dict__
File "C:\Zope\ProjectMgt\lib\python\Products\ProjectMgt\projobjs.py", line
1, in ?
from Globals import HTMLFile, MessageDialog, Persistent
File "C:\Zope\ProjectMgt\lib\python\Globals.py", line 90, in ?
import Acquisition, ComputedAttribute, App.PersistentExtra, os
File "C:\Zope\ProjectMgt\lib\python\App\PersistentExtra.py", line 87, in ?
from Persistence import Persistent
ImportError: cannot import name Persistent
My path settings are at the end of the code below.
#-------projobjs.py---------------------------------------------------------
------------------------
from Globals import HTMLFile, MessageDialog, Persistent
import OFS.SimpleItem, Acquisition, AccessControl.Role
import sys,DocumentTemplate
projectDict = {} #MAPS PROJECT id string to PROJECT object
taskDict = {} #MAPS TASK id string to TASK object
class Project(
OFS.SimpleItem.Item,
Persistent,
Acquisition.Implicit,
AccessControl.Role.RoleManager,
):
index_html =
DocumentTemplate.HTMLFile("c:\Zope\ProjectMgt\lib\python\Products\ProjectMgt
\project.dtml")
_id = ''
_name = ''
_descr = ''
_tasks = {} #list of Tasks I contain
def __init__(self, projectID):
self._id = projectID
#setters
def set_id(self, anID):
self._id = anID
def set_name(self, aName):
self._name = aName
def set_descr(self, aDescr):
self._descr = aDescr
def addTask(self, aTask):
#require aTask not nul
self._tasks[aTask.id()] = aTask
#getters
def id(self):
return self._id
def name(self):
return self._name
def descr(self):
return self._descr
#end class Project
class Task:
index_html =
DocumentTemplate.HTMLFile("c:/Zope/ProjectMgt/lib/python/Products/ProjectMgt
/task.dtml")
_id = ''
_name = ''
_descr = ''
_owner = '' #Person responsible for the task
_project = '' #the project that contains me
_budgeted_units = 0
_budgeted_unit_type = ''
_budgeted_mhrs = 0
def __init__(self,ID):
self._id = ID
def test(self):
#dump internals
print('in Task test')
#setters
def set_id(self,anID):
self._id = anID
def set_name(self, aName):
self._name = aName
def set_descr(self, aDescr):
self._descr = aDescr
def set_project(self, aProject):
#aProject: PROJECT
self._project = aProject
def set_budgeted_units(self,aUnits):
#must match unit type
self._budgeted_units = aUnits
def set_budgeted_units__type(self,aUnitType):
self._budgeted_units_type = aUnitType
def set_budgeted_mhrs(self,aMHRS):
self._budgeted_mhrs = aMHRS
#getters
def id(self):
return self._id
def name(self):
return self._name
def descr(self):
return self._descr
def budgeted_units(self):
return self._budgeted_units
def budgeted_units_type(self):
return self._budgeted_units_type
def budgeted_mhrs(self):
return self._budgeted_mhrs
#end class Task
#---------------Call back functions for GUI------------------------
def addTaskToProject(aTaskID, aProjectID):
#require valid id's and exist in the dictionaries
prj = projectDict[aProjectID]
task = taskDict[aTaskID]
prj.addTask(task)
#end addTaskToProject
def createNewProject(anID,aName):
p = Project(anID)
p.set_name(aName)
projectDict[p.id()] = p
def createNewTask(anID,aName):
t = Task(anID)
t.set_name(aName)
taskDict[t.id()]= t
def dumpProjectDictContents():
for prjKey in projectDict.keys():
print 'project key: ' + prjKey + ' name: ' + projectDict[prjKey].name()
def dumpTaskDictContents():
for key in taskDict.keys():
print 'task key: ' + key + ' name: ' + taskDict[key].name()
def projectReport():
for prjKey in projectDict.keys():
print 'project key: ' + prjKey + ' name: ' + projectDict[prjKey].name()
for taskKey in projectDict[prjKey]._tasks.keys():
print 'task key: ' + taskKey
taskKey = ''
#end createNewProject
#--------------------------------------------------------------------
def testRun():
createNewProject('x123','Project A')
createNewProject('y124','Project B')
createNewProject('z125','Project C')
# dumpProjectDictContents()
createNewTask('t1231','Task A')
createNewTask('t1232','Task B')
createNewTask('t1233','Task C')
createNewTask('t1241','Task D')
createNewTask('t1242','Task E')
createNewTask('t1251','Task F')
createNewTask('t1252','Task G')
# dumpTaskDictContents()
addTaskToProject('t1231','x123') #some how all the tasks are added to all
the projects
addTaskToProject('t1241','y124')
projectReport()
#end testRun
def testHTML():
t = Task('123')
t.set_name('abc')
t.set_descr('This is task abc easy as 123')
print t.index_html(t)
p = Project('456')
p.set_name('def')
p.set_descr('This is cool')
print p.index_html(p)
if __name__ == '__main__':
#testRun()
testHTML()
set
PYTHONPATH=.;c:\tech\lang\python\python152\lib;c:\tech\lang\python\python152
\lib-tk;c:\tech\lang\python\tcl\lib;c:\tech\lang\python\tcl\bin
set PYTHONPATH=%PYTHONPATH%;c:\tech\lang\python\zopemodules
set PYTHONPATH=%PYTHONPATH%;c:\tech\lang\python\zopemodules\DocumentTemplate
set PYTHONPATH=%PYTHONPATH%;c:\tech\lang\python\zopemodules\Ofs
set PYTHONPATH=%PYTHONPATH%;c:\tech\lang\python\zopemodules\ZPublisher
set PYTHONPATH=%PYTHONPATH%;c:\tech\lang\python\zopemodules\Shared
set PYTHONPATH=%PYTHONPATH%;c:\tech\lang\python\zopemodules\DateTime
regards,
Steve