Alg Problem (new to Python)

Steve Hunter Steve at HOSYS.com
Mon Jun 14 11:44:48 EDT 1999


Hello,
 The out put of a program is below....the problem is the tasks are being
added
to every project vs. to the specific project....it sees like an alg program
but
I can't see it....brand new to Python...have mercy.

project key: z125 name: Project C
task key: t1241
task key: t1231
project key: y124 name: Project B
task key: t1241
task key: t1231
project key: x123 name: Project A
task key: t1241
task key: t1231

the program below is in on .py file


import sys

projectDict = {} #MAPS PROJECT id string to PROJECT  object
taskDict = {}  #MAPS TASK id string to TASK object

class Project:
 _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 null
  self._tasks[aTask.id()] = aTask

 #getters
 def id(self):
  return self._id

 def name(self):
  return self._name

#end class Project



class Task:
 _id = ''
 _name = ''
 _descr = ''
 _owner = '' #Person responsible for the task
 _project = ''   #the project that contains me

 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

 #getters
 def id(self):
  return self._id

 def name(self):
  return self._name

 def descr(self):
  return self._descr


#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

if __name__ == '__main__':
 testRun()










More information about the Python-list mailing list