Diff for /MPIWGWeb/MPIWGProjects.py between versions 1.11 and 1.27

version 1.11, 2004/07/06 16:49:36 version 1.27, 2004/09/03 13:33:02
Line 7  from Products.PageTemplates.PageTemplate Line 7  from Products.PageTemplates.PageTemplate
 from Products.PageTemplates.ZopePageTemplate import ZopePageTemplate  from Products.PageTemplates.ZopePageTemplate import ZopePageTemplate
 from Products.ZSQLExtend.ZSQLExtend import ZSQLExtendFolder  from Products.ZSQLExtend.ZSQLExtend import ZSQLExtendFolder
   
   import urllib
 import MPIWGStaff  import MPIWGStaff
 import string  import string
 import re  import re
Line 28  def sortF(x,y): Line 29  def sortF(x,y):
     try:      try:
         return cmp(x[1],y[1])          return cmp(x[1],y[1])
     except:      except:
           try:
               return cmp(str(x[1]),str(y[1]))
           except:           
               print "error",x[1],y[1]
         return 0          return 0
           
 def sortI(x,y):  def sortI(x,y):
Line 79  class MPIWGRoot(ZSQLExtendFolder): Line 84  class MPIWGRoot(ZSQLExtendFolder):
         """format"""          """format"""
         return formatBibliography(here,found)          return formatBibliography(here,found)
           
     def getValue(self,field):      def getValue(self,fieldStr):
         """Inhalt des Feldes"""          """Inhalt des Feldes"""
   
         if type(field)==StringType:          if type(fieldStr)==StringType:
               field=fieldStr
           else:
               field=fieldStr[0]
             try:              try:
                 if field[len(field)-1]==";":                  if field[len(field)-1]==";":
                     field=field[0:len(text)-1]                  field=field[0:len(field)-1]
             except:              except:
                     """nothing"""  
                           
               """nothing"""
           field=re.sub(r';([^\s])','; \g<1>',field)
             return field.encode('utf-8')              return field.encode('utf-8')
                   
         else:  
             return field[0].encode('utf-8')  
   
           
     def sortedNames(self,list):      def sortedNames(self,list):
         """sort names"""          """sort names"""
   
         def sortLastName(x,y):          def sortLastName(x_c,y_c):
               try:
                   x=urllib.unquote(x_c).encode('utf-8','ignore')
               except:
                   x=urllib.unquote(x_c)
   
               try:
                   y=urllib.unquote(y_c).encode('utf-8','ignore')
               except:
                   x=urllib.unquote(y_c)
                   
   
               
             try:              try:
                 last_x=x.split()[len(x.split())-1]                  last_x=x.split()[len(x.split())-1]
                 last_y=y.split()[len(y.split())-1]                  last_y=y.split()[len(y.split())-1]
Line 127  class MPIWGRoot(ZSQLExtendFolder): Line 146  class MPIWGRoot(ZSQLExtendFolder):
         self.id=id          self.id=id
         self.title=title          self.title=title
                   
       def urlQuote(self,str):
           """quote"""
           return urllib.quote(str)
   
       def urlUnQuote(self,str):
           """quote"""
           return urllib.unquote(str)
       
     def harvestHistoricalPersons(self):      def harvestHistoricalPersons(self):
         """erstelle liste aller erwaehnten actors"""          """erstelle liste aller erwaehnten actors"""
   
Line 145  class MPIWGRoot(ZSQLExtendFolder): Line 172  class MPIWGRoot(ZSQLExtendFolder):
             lg=len(project[1].xdata_03[0])-1              lg=len(project[1].xdata_03[0])-1
   
             if (lg>1) and (project[1].xdata_03[0][lg]==";"):              if (lg>1) and (project[1].xdata_03[0][lg]==";"):
                 project[1].xdata_03[0]=project[1].xdata_03[0][0:lg-1]                  project[1].xdata_03[0]=project[1].xdata_03[0][0:lg]
   
                       
             
Line 155  class MPIWGRoot(ZSQLExtendFolder): Line 182  class MPIWGRoot(ZSQLExtendFolder):
                     for person in project[1].xdata_03[0].split(";"):                      for person in project[1].xdata_03[0].split(";"):
                         personNormal=normalize(person)                          personNormal=normalize(person)
                         if personNormal in list.keys():                          if personNormal in list.keys():
                             list[personNormal].append(project[1])                              list[urllib.quote(personNormal)][1].append(project[1])
                         else:                          else:
                             list[personNormal]=[project[1]]                              list[urllib.quote(personNormal)]=(personNormal,[project[1]])
                 else: #guess , is sepeator                  else: #guess , is sepeator
                     for person in project[1].xdata_03[0].split(","):                      for person in project[1].xdata_03[0].split(","):
                         personNormal=normalize(person)                          personNormal=normalize(person)
                         if personNormal in list.keys():                          if urllib.quote(personNormal) in list.keys():
                             list[personNormal].append(project[1])                              list[urllib.quote(personNormal)][1].append(project[1])
                         else:                          else:
                             list[personNormal]=[project[1]]                              list[urllib.quote(personNormal)]=(personNormal,[project[1]])
   
             except:              except:
                 print "ERROR",project                  print "ERROR",project
Line 176  class MPIWGRoot(ZSQLExtendFolder): Line 203  class MPIWGRoot(ZSQLExtendFolder):
         self.personDict={}          self.personDict={}
         personDict=self.harvestHistoricalPersons()          personDict=self.harvestHistoricalPersons()
         for person in personDict.keys():          for person in personDict.keys():
             for project in personDict[person]:              for project in personDict[person][1]:
                 if person in self.personDict.keys():                  if person in self.personDict.keys():
                     self.personDict[person].append((project.absolute_url(),project.WEB_title[0],project.xdata_01[0]))                      self.personDict[person][1].append((project.absolute_url(),project.WEB_title[0],project.xdata_01[0]))
                 else:                  else:
                     self.personDict[person]=[(project.absolute_url(),project.WEB_title[0],project.xdata_01[0])]                      self.personDict[person]=(personDict[person][0],[(project.absolute_url(),project.WEB_title[0],project.xdata_01[0])])
   
         if RESPONSE is not None:          if RESPONSE is not None:
             RESPONSE.redirect("showHistoricalPersons")              RESPONSE.redirect("showHistoricalPersons")
                           
   
       def getPersonDict(self,name):
           """name von dict"""
   
           try:
               return self.personDict[name][0].encode('utf-8')
           except:
               return self.personDict[name][0]
               return self.personDict[name][0].decode('latin-1').encode('utf-8')
           
   
     def showHistoricalPersons(self):      def showHistoricalPersons(self):
         """show persons"""          """show persons"""
         pt=PageTemplateFile('Products/MPIWGWeb/zpt/showHistoricalPersons').__of__(self)          pt=PageTemplateFile('Products/MPIWGWeb/zpt/showHistoricalPersons').__of__(self)
Line 251  class MPIWGRoot(ZSQLExtendFolder): Line 288  class MPIWGRoot(ZSQLExtendFolder):
                 if re.match(searchStr,project[1]):                  if re.match(searchStr,project[1]):
                                           
                     if depth:                      if depth:
                         print "ho"  
                         if int(depth)>=len(project[1].split("."))-len(childs.split(".")):                          if int(depth)>=len(project[1].split("."))-len(childs.split(".")):
                                           
                             ret.append(project)                              ret.append(project)
Line 325  class MPIWGRoot(ZSQLExtendFolder): Line 362  class MPIWGRoot(ZSQLExtendFolder):
                           
                           
             splitted=line.split(",")              splitted=line.split(",")
             print splitted             # print splitted
                   
             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])
                                   
                 try:                  try:
                     project._setObject(splitted[0],newObj)                      project._setObject(splitted[0],newObj)
                     print "done:",splitted[0]                      #print "done:",splitted[0]
                 except:                  except:
                     print "not done:",splitted[0]                      print "not done:",splitted[0]
                                           
Line 350  class MPIWGRoot(ZSQLExtendFolder): Line 387  class MPIWGRoot(ZSQLExtendFolder):
         for x in self.ZopeFind(self.members,obj_metatypes=['MPIWGStaff']):          for x in self.ZopeFind(self.members,obj_metatypes=['MPIWGStaff']):
                                ret.append(x[1].title.decode('utf-8'))                                 ret.append(x[1].title.decode('utf-8'))
                           
         #ret.sort()          ret.sort()
         #print ret          #print ret
       
         return ret          return ret
Line 381  class MPIWGRoot(ZSQLExtendFolder): Line 418  class MPIWGRoot(ZSQLExtendFolder):
                     splittedId=idNr.split(".")                      splittedId=idNr.split(".")
                     depth=len(splittedId)                      depth=len(splittedId)
                     nr=idNr                      nr=idNr
                     title=project[0].WEB_title                      #title=project[0].WEB_title
                                           title=[project[0].getContent('WEB_title')]
                       #print title
                     returnList.append((depth,nr,title,project[0]))                      returnList.append((depth,nr,title,project[0]))
                   
         return returnList          return returnList
   
       def formatElementForOverview(self,element):
           """format the element for output in overview"""
           if element[0]==1: #department
               #print element[3].getContent('xdata_05')
               if element[3].getContent('xdata_05') == "4":
                   return """<h2><a href="%s">Ind. Research Group I: %s</a></h2>"""%(element[3].absolute_url()+"/index_html",element[3].getContent('WEB_title'))
               if element[3].getContent('xdata_05') == "5":
                   return """<h2><a href="%s">Ind. Research Group II: %s</a></h2>"""%(element[3].absolute_url()+"/index_html",element[3].getContent('WEB_title'))
               
               return """<h2><a href="%s">Department %s: %s</a></h2>"""%(element[3].absolute_url()+"/index_html",element[3].getContent('xdata_05'),element[3].getContent('WEB_title'))
   
           elif element[0]==2: #mainprojects
               return """<h3><a href="%s">%s</a></h3><p>"""%(element[3].absolute_url()+"/index_html",element[3].getContent('WEB_title'))
   
           elif element[0]==3:
               return """<p class="p_noindent"><a href="%s">%s</a></p>"""%(element[3].absolute_url()+"/index_html",element[3].getContent('WEB_title'))
           
     def changePosition(self,treeId,select,RESPONSE=None):      def changePosition(self,treeId,select,RESPONSE=None):
         """Change Postion Entry"""          """Change Postion Entry"""
         numbers=[]          numbers=[]
Line 445  class MPIWGRoot(ZSQLExtendFolder): Line 500  class MPIWGRoot(ZSQLExtendFolder):
                   
                           
                   
       def getRelativeUrlFromPerson(self,list):
           """get urls to person list"""
           ret=[]
           persons=list.split(";")
           for person in persons:
               
               if len(person)>1: #nicht nur Trennzeichen
                   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.encode('utf-8')))
                       ret.append("<a href=%s >%s</a>"%('members/'+proj[0].id+'/index_html',person))
                   else:
                       #ret.append("%s"%person.encode('utf-8'))
                       ret.append("%s"%person)
           return string.join(ret,";")
                   
                           
     def getUrlFromPerson(self,list):      def getUrlFromPerson(self,list):
Line 456  class MPIWGRoot(ZSQLExtendFolder): Line 540  class MPIWGRoot(ZSQLExtendFolder):
             if len(person)>1: #nicht nur Trennzeichen              if len(person)>1: #nicht nur Trennzeichen
                 splitted=person.split(",")                  splitted=person.split(",")
                 if len(splitted)==1:                  if len(splitted)==1:
                     splitted=person.split(" ")                      splitted=person.lstrip().rstrip().split(" ")
                 splittedNew=[re.sub(r'\s(.*)','$1',split) for split in splitted]                  splittedNew=[re.sub(r'\s(.*)','$1',split) for split in splitted]
                 if splittedNew[0]=='':                  if splittedNew[0]=='':
                     del splittedNew[0]                      del splittedNew[0]
Line 470  class MPIWGRoot(ZSQLExtendFolder): Line 554  class MPIWGRoot(ZSQLExtendFolder):
                         proj=None                          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.encode('utf-8')))
                       ret.append("<a href=%s >%s</a>"%(proj[0].absolute_url+"/index_html",person))
                 else:                  else:
                       #ret.append("%s"%person.encode('utf-8'))
                     ret.append("%s"%person)                      ret.append("%s"%person)
         return string.join(ret,";")          return string.join(ret,";")
                                                     
Line 489  class MPIWGRoot(ZSQLExtendFolder): Line 575  class MPIWGRoot(ZSQLExtendFolder):
         """get project of a member"""          """get project of a member"""
         def sortP(x,y):          def sortP(x,y):
             """sort by sorting number"""              """sort by sorting number"""
                           #print x.xdata_05,y.xdata_05
             return cmp(x.xdata_05,y.xdata_05)              return cmp(x.WEB_title,y.WEB_title)
                   
     
         ret=[]          ret=[]
Line 508  class MPIWGRoot(ZSQLExtendFolder): Line 594  class MPIWGRoot(ZSQLExtendFolder):
         proj=self.ProjectCatalog({'xdata_01':search})          proj=self.ProjectCatalog({'xdata_01':search})
         if proj:          if proj:
             proj2=[x for x in proj]              proj2=[x for x in proj]
             proj2.sort(sortP)          #    proj2.sort(sortP)
             ret.append((y,proj2))          #    ret.append((y,proj2))
           else:
               proj2=[]
   
         proj=self.ProjectCatalog({'xdata_08':search})          proj=self.ProjectCatalog({'xdata_08':search})
         if proj:          if proj:
             proj2=[x for x in proj]              names=[x.WEB_title for x in proj]
               for x in proj:
                   if not x.WEB_title in names:
                       proj2.append(x)
   
   
             proj2.sort(sortP)              proj2.sort(sortP)
             ret.append((y,proj2))  
   
           if len(proj2)>0:
               ret.append((y,proj2))
                   
         return ret          return ret
             
Line 525  class MPIWGRoot(ZSQLExtendFolder): Line 619  class MPIWGRoot(ZSQLExtendFolder):
                   
         splitted=name.split(",")          splitted=name.split(",")
         if len(splitted)==1:          if len(splitted)==1:
             splitted=name.split(" ")              splitted=name.lstrip().rstrip().split(" ")
         splittedNew=[re.sub(r'\s(.*)','$1',split) for split in splitted]          splittedNew=[split.lstrip() for split in splitted]
           
         if splittedNew[0]=='':          if splittedNew[0]=='':
             del splittedNew[0]              del splittedNew[0]
         search=string.join(splittedNew,' AND ')          search=string.join(splittedNew,' AND ')
Line 677  class MPIWGProject(Folder): Line 772  class MPIWGProject(Folder):
         """giveListofDatafields"""          """giveListofDatafields"""
         ret=[]          ret=[]
         for x in range(1,14):          for x in range(1,14):
               if not x in [6,10,9]: # not used fields
             ret.append('xdata_%02i'%x)              ret.append('xdata_%02i'%x)
         return ret          return ret
                           
Line 703  class MPIWGProject(Folder): Line 799  class MPIWGProject(Folder):
                 try:                  try:
                     text =x.encode('utf-8')                      text =x.encode('utf-8')
                 except:                  except:
                     text="ERROR"                      text=x.decode('latin-1').encode('utf-8')
                   
         #delete separator (;) if  is there is one          #delete separator (;) if  is there is one
           ## try:
   ##             print text, text[len(text)-1]
   ##         except:
   ##             print "error:",text
         try:          try:
             if text[len(text)-1]==";":              if text[len(text)-1]==";":
                 text=text[0:len(text)-1]                  text=text[0:len(text)-1]
             
                   
         except:          except:
             """nothing"""              """nothing"""
                           
         return text          text2=re.sub(r';([^\s])','; \g<1>',text)
           return text2
           
     def show_html(self):      def show_html(self):
         """simple index"""          """simple index"""
Line 826  def manage_addMPIWGProjectForm(self): Line 928  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.get('fileupload',None)
         fileupload=self.REQUEST['fileupload']  
         if fileupload:          if fileupload:
           print fileupload
             file_name=fileupload.filename              file_name=fileupload.filename
             filedata=fileupload.read()              filedata=fileupload.read()
   

Removed from v.1.11  
changed lines
  Added in v.1.27


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