Diff for /MPIWGWeb/MPIWGProjects.py between versions 1.3 and 1.5

version 1.3, 2004/02/09 08:57:27 version 1.5, 2004/03/10 09:17:31
Line 6  from Products.PageTemplates.ZopePageTemp Line 6  from Products.PageTemplates.ZopePageTemp
 import MPIWGStaff  import MPIWGStaff
 import string  import string
 import re  import re
   from types import *
   
 import xmlhelper # Methoden zur Verwaltung der projekt xmls  import xmlhelper # Methoden zur Verwaltung der projekt xmls
 from OFS.SimpleItem import SimpleItem  from OFS.SimpleItem import SimpleItem
Line 19  def sortF(x,y): Line 20  def sortF(x,y):
   
     return cmp(x[1],y[1])      return cmp(x[1],y[1])
   
   def sortI(x,y):
       xsplit=x[1].split(".")
       ysplit=y[1].split(".")
       xret=""
       yret=""
       try:
           for i in range(5):
               try:
                   yret=yret+"%04i"%int(xsplit[i])
               except:
                   yret=yret+"%04i"%0
   
               try:
                   xret=xret+"%04i"%int(ysplit[i])
               except:
                   xret=xret+"%04i"%0
                   
           
           return cmp(int(yret),int(xret))
       except:
           return cmp(x[1],y[1])
   
       
 class MPIWGRoot(Folder):  class MPIWGRoot(Folder):
     """Stammordner für den Web-Server"""      """Stammordner für den Web-Server"""
   
Line 30  class MPIWGRoot(Folder): Line 54  class MPIWGRoot(Folder):
         self.id=id          self.id=id
         self.title=title          self.title=title
   
     def getProjectFields(self,fieldName,folder=None):      def getProjectFields(self,fieldName,folder=None,sort=None):
         """getListofFieldNames"""          """getListofFieldNames"""
         ret=[]          ret=[]
         #print "FN",fieldName          #print "FN",fieldName
Line 40  class MPIWGRoot(Folder): Line 64  class MPIWGRoot(Folder):
   
             obj=getattr(folder,object)              obj=getattr(folder,object)
             if hasattr(obj,'meta_type'):              if hasattr(obj,'meta_type'):
                                   #print obj.meta_type
                 if obj.meta_type=='MPIWGProject':                  if obj.meta_type=='MPIWGProject':
                       if fieldName=="WEB_title_or_short":
                           #print "HI!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
                           #print len(obj.getContent('xdata_07'))
                           if len(obj.getContent('xdata_07'))<3: # hack weil z.Z. manchmal noch ein Trennzeichen ; oder , im Feld statt leer
                               fieldNameTmp="WEB_title"
                           else:
                               fieldNameTmp="xdata_07"
                       else:
                           fieldNameTmp=fieldName
                       
                       ret.append((obj,obj.getContent(fieldNameTmp)))
                                           
                     ret.append((obj,obj.getContent(fieldName)))  
                 if obj.meta_type in self.folders:                  if obj.meta_type in self.folders:
                                           
                     ret += self.getProjectFields(fieldName,obj)                      ret += self.getProjectFields(fieldName,obj)
                   
           if sort=="int":
               ret.sort(sortI)
           else:
         ret.sort(sortF)          ret.sort(sortF)
                   
         return ret          return ret
   
       def showNewProjects(self):
           projects=[]
           for objs in self.getProjectFields('WEB_title_or_short'): # Get all Projets
               if objs[0].xdata_05[0] == "":
                   
                   projects.append(objs)
                   
           return projects
       
           
     manage_options = Folder.manage_options+(      manage_options = Folder.manage_options+(
         {'label':'Import Persons','action':'importNamesForm'},          {'label':'Import Persons','action':'importNamesForm'},
         )          )
Line 66  class MPIWGRoot(Folder): Line 113  class MPIWGRoot(Folder):
         project=getattr(self,folderName)          project=getattr(self,folderName)
                   
         for line in fileupload.readlines():          for line in fileupload.readlines():
             print line              #print line
             splitted=line.split(",")              splitted=line.split(",")
             if not (splitted[0]==""):              if not (splitted[0]==""):
                 newObj=MPIWGStaff.MPIWGStaff(splitted[0],splitted[1],splitted[2])                  newObj=MPIWGStaff.MPIWGStaff(splitted[0],splitted[1],splitted[2])
Line 82  class MPIWGRoot(Folder): Line 129  class MPIWGRoot(Folder):
         ret=[]          ret=[]
   
         for x in self.members.objectValues('MPIWGStaff'):          for x in self.members.objectValues('MPIWGStaff'):
             print x.title              #print x.title
             ret.append(x.title)              ret.append(x.title)
                           
         ret.sort()          ret.sort()
         return ret          return ret
   
       def makeList(self,entry):
           """makes a list out of one entry or repeat a list"""
           if type(entry) is StringType:
               return [entry]
           else:
               return entry
   
   
       def getTree(self):
           """generate Tree from project list"""
           returnList=[]
           for project in self.getProjectFields('xdata_05',sort="int"): # get Projects sorted by xdata_05
               for idNr in project[1].split(";"): # more than one number
                   if not idNr=="":
                       splittedId=idNr.split(".")
                       depth=len(splittedId)
                       nr=idNr
                       title=project[0].WEB_title
                       returnList.append((depth,nr,title,project[0]))
           
           return returnList
   
       def changePosition(self,treeId,select,RESPONSE=None):
           """Change Postion Entry"""
           numbers=[]
   
           # Suche hoechste bisherige nummer
           projects=self.getProjectFields('xdata_05') # get Projects sorted by xdata_05
           for project in projects: #suche alle subtrees der treeId
               #print treeId
               
               founds=re.match(treeId+"\.(.*)",project[1].split(";")[0])
               if founds:
                   #print "x",founds.group(0),len(founds.group(0).split("."))
                   if len(founds.group(0).split("."))==len(treeId.split("."))+1: # nur ein punkt mehr, d.h. untere ebene
                       try:
                           numbers.append(int(founds.group(0).split(".")[len(founds.group(0).split("."))-1]))
                       except:
                           numbers.append(0)
           numbers.sort()
           highest=int(numbers[len(numbers)-1])
           projects=self.showNewProjects()
           for i in self.makeList(select):
               highest+=10
               projects[int(i)][0].xdata_05=treeId+"."+str(highest)
   
   
           if RESPONSE is not None:
               RESPONSE.redirect('showTree')
           
       def changeTree(self,RESPONSE=None):
           """change the complete tree"""
           form=self.REQUEST.form
           hashList={}
           fields=self.getTree()
   
           
           for idNr in form.keys():
               fields[int(idNr)][3].xdata_05=form[idNr]
   
           
   
           if RESPONSE is not None:
               RESPONSE.redirect('showTree')
   
       def getProjectWithId(self,id):
           fields=self.getProjectFields('xdata_05')
           for field in fields:
               if field[1]==id:
                   return field[0]
   
           return None
               
           
               
           
           
               
     def getUrlFromPerson(self,list):      def getUrlFromPerson(self,list):
         """get urls to person list"""          """get urls to person list"""
         ret=[]          ret=[]
Line 102  class MPIWGRoot(Folder): Line 227  class MPIWGRoot(Folder):
                 del splittedNew[0]                  del splittedNew[0]
             search=string.join(splittedNew,' AND ')              search=string.join(splittedNew,' AND ')
             if not search=='':              if not search=='':
                   
                   try:
                 proj=self.MembersCatalog({'title':search})                  proj=self.MembersCatalog({'title':search})
                 print search,"PER",person,splittedNew,proj                  except:
                       proj=None
                   
             if proj:              if proj:
                 ret.append("<a href=%s >%s</a>"%(proj[0].absolute_url,person))                  ret.append("<a href=%s >%s</a>"%(proj[0].absolute_url,person))
Line 167  class MPIWGRoot(Folder): Line 295  class MPIWGRoot(Folder):
   
     def personCheck(self,names):      def personCheck(self,names):
         """all persons for list"""          """all persons for list"""
         print "names",names          #print "names",names
         splitted=names.split(";")          splitted=names.split(";")
         ret={}          ret={}
         for name in splitted:          for name in splitted:
Line 177  class MPIWGRoot(Folder): Line 305  class MPIWGRoot(Folder):
                     ret[name]=self.givePersonList(name)                      ret[name]=self.givePersonList(name)
                 except:                  except:
                     """NOTHIHN"""                      """NOTHIHN"""
         print "RET",ret          #print "RET",ret
         return ret          return ret
   
     def giveCheckList(self,person,fieldname):      def giveCheckList(self,person,fieldname):
Line 185  class MPIWGRoot(Folder): Line 313  class MPIWGRoot(Folder):
         #print "GCL",fieldname          #print "GCL",fieldname
         if fieldname=='xdata_01':          if fieldname=='xdata_01':
             x=self.personCheck(person.getContent(fieldname))              x=self.personCheck(person.getContent(fieldname))
             print "GCLBACKX",x              #print "GCLBACKX",x
             return x              return x
                   
   
Line 251  class MPIWGProject(Folder): Line 379  class MPIWGProject(Folder):
         if RESPONSE is not None:          if RESPONSE is not None:
             RESPONSE.redirect('manage_main')              RESPONSE.redirect('manage_main')
                           
     def __init__(self, id, argv):      def __init__(self, id, argv=None):
         """initieriere classe"""          """initieriere classe"""
                   
         self.id=id          self.id=id
         self.title=id          self.title=id
           if argv:
         for arg in definedFields:          for arg in definedFields:
               
             setattr(self,arg,argv[arg])              setattr(self,arg,argv[arg])
             """NP"""          else:
               for arg in definedFields:
                   setattr(self,arg,'')
               
     manage_options = Folder.manage_options+(      manage_options = Folder.manage_options+(
         {'label':'Load New File','action':'loadNewFileForm'},          {'label':'Load New File','action':'loadNewFileForm'},
         {'label':'Edit ProjectInfo','action':'editMPIWGProjectForm'},          {'label':'Edit ProjectInfo','action':'editMPIWGProjectForm'},
Line 298  class MPIWGProject(Folder): Line 429  class MPIWGProject(Folder):
                     text =x                      text =x
                 except:                  except:
                     text="ERROR"                      text="ERROR"
         #print "TEXT",text            #print "TEXT",text.encode('ascii','ignore')  
         return text          return text
           
     def show_html(self):      def show_html(self):
Line 370  def manage_addMPIWGProjectForm(self): Line 501  def manage_addMPIWGProjectForm(self):
 def manage_addMPIWGProject(self,id,RESPONSE=None):  def manage_addMPIWGProject(self,id,RESPONSE=None):
     """method to add a project"""      """method to add a project"""
     #print argv      #print argv
       if self.REQUEST.has_key('fileupload'):
     fileupload=self.REQUEST['fileupload']      fileupload=self.REQUEST['fileupload']
     if fileupload:      if fileupload:
         file_name=fileupload.filename          file_name=fileupload.filename
Line 378  def manage_addMPIWGProject(self,id,RESPO Line 510  def manage_addMPIWGProject(self,id,RESPO
         argv=xmlhelper.proj2hash(filedata)          argv=xmlhelper.proj2hash(filedata)
   
         #print argv          #print argv
   
     newObj=MPIWGProject(id,argv)      newObj=MPIWGProject(id,argv)
       else:
           newObj=MPIWGProject(id)
   
     self._setObject(id,newObj)      self._setObject(id,newObj)
   

Removed from v.1.3  
changed lines
  Added in v.1.5


FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>