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

version 1.2, 2004/02/04 18:01:45 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 77  class MPIWGRoot(Folder): Line 124  class MPIWGRoot(Folder):
         if RESPONSE is not None:          if RESPONSE is not None:
             RESPONSE.redirect('manage_main')              RESPONSE.redirect('manage_main')
   
       def getAllMembers(self):
           """give list of all members"""
           ret=[]
   
           for x in self.members.objectValues('MPIWGStaff'):
               #print x.title
               ret.append(x.title)
               
           ret.sort()
           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):
           """get urls to person list"""
           ret=[]
           persons=list.split(";")
           for person in persons:
               
               splitted=person.split(",")
               if len(splitted)==1:
                   splitted=person.split(" ")
               splittedNew=[re.sub(r'\s(.*)','$1',split) for split in splitted]
               if splittedNew[0]=='':
                   del splittedNew[0]
               search=string.join(splittedNew,' AND ')
               if not search=='':
                   
                   try:
                       proj=self.MembersCatalog({'title':search})
                   except:
                       proj=None
           
               if proj:
                   ret.append("<a href=%s >%s</a>"%(proj[0].absolute_url,person))
               else:
                   ret.append("%s"%person)
           return string.join(ret,";")
                            
       def getProjectsOfMembers(self):
           """give tuple member /projects"""
           ret=[]
           members=self.getAllMembers()
           for x in members:
               splitted=x.split(",")
               
               proj=self.ProjectCatalog({'xdata_01':string.join(splitted,' AND')})
               if proj:
                 ret.append((x,proj))
           return ret
     def givePersonList(self,name):      def givePersonList(self,name):
         """check if person is in personfolder and return list of person objects"""          """check if person is in personfolder and return list of person objects"""
   
           splitted=name.split(",")
           if len(splitted)==1:
               splitted=name.split(" ")
           splittedNew=[re.sub(r'\s(.*)','$1',split) for split in splitted]
           if splittedNew[0]=='':
               del splittedNew[0]
           search=string.join(splittedNew,' AND ')
           if not search=='':
               proj=self.MembersCatalog({'title':search})
                 
                       if proj:
         splitted=name.split(",") # version nachname, vorname...              return [[x.lastName,x.firstName] for x in proj]
         if len(splitted)>1:  
             lastName=splitted[0]   
             firstName=splitted[1]  
         else:           else: 
             splitted=name.split(" ") #version vorname irgenwas nachnamae              return []
               
   ##         splitted=name.split(",") # version nachname, vorname...
   ##         if len(splitted)>1:
   ##             lastName=splitted[0] 
   ##             firstName=splitted[1]
   ##         else: 
   ##             splitted=name.split(" ") #version vorname irgenwas nachnamae
           
   ##             lastName=splitted[len(splitted)-1]
   ##             firstName=string.join(splitted[0:len(splitted)-1])
                   
             lastName=splitted[len(splitted)-1]  ##         objs=[]
             firstName=string.join(splitted[0:len(splitted)-1])  
   
         objs=[]          #print  self.members 
         ##   for x in self.members.__dict__:
   ##             obj=getattr(self.members,x)
   ##             if hasattr(obj,'lastName') and hasattr(obj,'firstName'):
   
         print  self.members   ##                 if (re.match(".*"+obj.lastName+".*",lastName) or re.match(".*"+lastName+".*",obj.lastName)) and (re.match(".*"+obj.firstName+".*",firstName) or re.match(".*"+firstName+".*",obj.firstName)):
         for x in self.members.__dict__:  
             obj=getattr(self.members,x)  
             if hasattr(obj,'lastName') and hasattr(obj,'firstName'):  
                                   
                 if (re.match(".*"+obj.lastName+".*",lastName) or re.match(".*"+lastName+".*",obj.lastName)) and (re.match(".*"+obj.firstName+".*",firstName) or re.match(".*"+firstName+".*",obj.firstName)):  ##                     objs.append((obj,lastName+", "+firstName))
                                           
                     objs.append((obj,lastName+", "+firstName))  
   
         return objs          return objs
   
   
     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:
   
             if not (name==""):              if not (name==""):
                   try:
                 ret[name]=self.givePersonList(name)                  ret[name]=self.givePersonList(name)
                   except:
         print "RET",ret                      """NOTHIHN"""
           #print "RET",ret
         return ret          return ret
   
     def giveCheckList(self,person,fieldname):      def giveCheckList(self,person,fieldname):
Line 155  class MPIWGProject(Folder): Line 344  class MPIWGProject(Folder):
   
     meta_type='MPIWGProject'      meta_type='MPIWGProject'
   
       def crossLinker(self):
           """experimental crosslinker"""
           splitted=self.WEB_project_description[0].split()
           new=[]
           for split in splitted:
               try:
                   found=self.DescriptionCatalog({'fulltext':split})
             
                   if len(found)>1:
                
                       new.append("<a href=%s>%s</a>"%(split,split))
                   else:
                       new.append(split)
               except:
                   new.append(split)
           return string.join(new)
               
               
       
   
     def generateTemplate(self,RESPONSE=None):      def generateTemplate(self,RESPONSE=None):
Line 172  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 219  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 291  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 299  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.2  
changed lines
  Added in v.1.5


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