Diff for /MPIWGWeb/MPIWGProjects.py between versions 1.15 and 1.36

version 1.15, 2004/07/29 07:36:16 version 1.36, 2004/10/11 15:41:51
Line 6  from Products.PageTemplates.PageTemplate Line 6  from Products.PageTemplates.PageTemplate
 from Products.PageTemplates.PageTemplate import PageTemplate  from Products.PageTemplates.PageTemplate import 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
   from Globals import package_home
 import urllib  import urllib
 import MPIWGStaff  import MPIWGStaff
 import string  import string
 import re  import re
   import os
 from types import *  from types import *
   
 import xmlhelper # Methoden zur Verwaltung der projekt xmls  import xmlhelper # Methoden zur Verwaltung der projekt xmls
Line 29  def sortF(x,y): Line 30  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 68  class MPIWGRoot(ZSQLExtendFolder): Line 73  class MPIWGRoot(ZSQLExtendFolder):
     folders=['MPIWGProject','Folder']      folders=['MPIWGProject','Folder']
     meta_type='MPIWGRoot'      meta_type='MPIWGRoot'
   
       def upDateSQL(self,fileName):
           """updates SQL databases using fm.jar"""
           fmJarPath=os.path.join(package_home(globals()), 'updateSQL/fm.jar')
           xmlPath=os.path.join(package_home(globals()), "updateSQL/%s"%fileName)
   
           os.popen("java -classpath %s -Djava.awt.headless=true Convert %s"%(fmJarPath,xmlPath),"r").read()
   
           return 1
       
       def patchProjects(self,RESPONSE):
           """patch"""
           projects=self.ZopeFind(self.projects,obj_metatypes=['MPIWGProject'])
           for project in projects:
           tmp=project[1].WEB_project_description[0].replace("/CD/projects/","")[0:]
                   setattr(project[1],'WEB_project_description',[tmp[0:]])
                   RESPONSE.write("<p>%s</p>\n"%project[0])
               
     def replaceNotEmpty(self,format,field):      def replaceNotEmpty(self,format,field):
         """replace not empty"""          """replace not empty"""
         if field and (not field==''):          if field and (not field==''):
Line 76  class MPIWGRoot(ZSQLExtendFolder): Line 98  class MPIWGRoot(ZSQLExtendFolder):
             return ""              return ""
                   
                   
       def redirectIndex_html(self,request):
           #return request['URL1']+'/index_html'
           
           return urllib.urlopen(request['URL1']+'/index_html').read()
   
       
     def formatBibliography(self,here,found):      def formatBibliography(self,here,found):
         """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):
Line 336  class MPIWGRoot(ZSQLExtendFolder): Line 366  class MPIWGRoot(ZSQLExtendFolder):
           
                   
     manage_options = Folder.manage_options+(      manage_options = Folder.manage_options+(
         {'label':'Import Persons','action':'importNamesForm'},          {'label':'Update Personal Homepages','action':'updateHomepages'},
         {'label':'Main config','action':'changeMPIWGRootForm'},          {'label':'Main config','action':'changeMPIWGRootForm'},
         {'label':'Edit Historical Persons','action':'editHistoricalPersonsForm'},          {'label':'Edit Historical Persons','action':'editHistoricalPersonsForm'},
         {'label':'Store Historical Persons','action':'storeHistoricalPersons'},          {'label':'Store Historical Persons','action':'storeHistoricalPersons'},
Line 356  class MPIWGRoot(ZSQLExtendFolder): Line 386  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]
                                           
         if RESPONSE is not None:          if RESPONSE is not None:
             RESPONSE.redirect('manage_main')              RESPONSE.redirect('manage_main')
   
       def updateHomepages(self,RESPONSE):
           """lege members an"""
           self.upDateSQL('personalwww.xml')
           founds=self.ZSQLInlineSearch(_table='personal_www')
           project=getattr(self,'members')
           for found in founds:
               
               if not (found.e_mail==""):
                   newObj=MPIWGStaff.MPIWGStaff(found.username,found.name,found.vorname)
                   
                   try:
                       project._setObject(found.username,newObj)
                       RESPONSE.write("<p>new:%s</p>\n"%found.username)
                   except:
                       RESPONSE.write("<p>old:%s (%s,%s)</p>\n"%(found.username,found.name,found.vorname))
   
   
                       
           if RESPONSE is not None:
               RESPONSE.redirect('manage_main')
   
           
     def getAllMembers(self):      def getAllMembers(self):
         """give list of all members"""          """give list of all members"""
         ret=[]          ret=[]
Line 381  class MPIWGRoot(ZSQLExtendFolder): Line 433  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 415  class MPIWGRoot(ZSQLExtendFolder): Line 467  class MPIWGRoot(ZSQLExtendFolder):
                     #title=project[0].WEB_title                      #title=project[0].WEB_title
                     title=[project[0].getContent('WEB_title')]                      title=[project[0].getContent('WEB_title')]
                     #print 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 class="hier"><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 class="hier"><a href="%s">Ind. Research Group II: %s</a></h2>"""%(element[3].absolute_url()+"/index.html",element[3].getContent('WEB_title'))
               
               return """<h2 class="hier"><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 class="hier"><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="hier"><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 502  class MPIWGRoot(ZSQLExtendFolder): Line 572  class MPIWGRoot(ZSQLExtendFolder):
   
                 if proj:                  if proj:
                     #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,person.encode('utf-8')))
                     ret.append("<a href=%s >%s</a>"%('members/'+proj[0].id,person))                      ret.append("<a href=%s >%s</a>"%('members/'+proj[0].id+'/index.html',person))
                 else:                  else:
                     #ret.append("%s"%person.encode('utf-8'))                      #ret.append("%s"%person.encode('utf-8'))
                     ret.append("%s"%person)                      ret.append("%s"%person)
Line 518  class MPIWGRoot(ZSQLExtendFolder): Line 588  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 532  class MPIWGRoot(ZSQLExtendFolder): Line 602  class MPIWGRoot(ZSQLExtendFolder):
                         proj=None                          proj=None
   
                 if proj:                  if proj:
               if person =="Otto Sibum" : person="H. Otto Sibum"
               if person =="Norton Wise" : person="M. Norton Wise"
                     #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,person.encode('utf-8')))
                     ret.append("<a href=%s >%s</a>"%(proj[0].absolute_url,person))                      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.encode('utf-8'))
                     ret.append("%s"%person)                      ret.append("%s"%person)
Line 553  class MPIWGRoot(ZSQLExtendFolder): Line 625  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 565  class MPIWGRoot(ZSQLExtendFolder): Line 637  class MPIWGRoot(ZSQLExtendFolder):
   
         y=name          y=name
         splitted=y.split(",")            splitted=y.split(",")  
         for s in splitted:          #XXXX
             splitNeu.append("\""+s+"\"")          splitNeu=["\'"+splitted[1]+" "+splitted[0]+"\'"]
           
           #for s in splitted:
           #    splitNeu.append("\""+s+"\"")
         search=string.join(splitNeu,' AND ')          search=string.join(splitNeu,' AND ')
                           
         proj=self.ProjectCatalog({'xdata_01':search})          proj=self.ProjectCatalog({'xdata_01':search})
   
         if proj:          if proj:
             proj2=[x for x in proj]              proj2=[]
             proj2.sort(sortP)              for x in proj:
             ret.append((y,proj2))               
                   if not((splitted[1]==" Christoph") and (splitted[0]=="Hoffmann") and (str(x.WEB_title).find('Einstein')>0)):
                          
                          #print repr(splitted[1]),repr(splitted[0]),repr(x.WEB_title)
                          proj2.append(x)
           #    proj2.sort(sortP)
           #    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 589  class MPIWGRoot(ZSQLExtendFolder): Line 679  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 737  class MPIWGProject(Folder): Line 828  class MPIWGProject(Folder):
         {'label':'Edit Themes & Disciplines','action':'editMPIWGDisciplinesThemesForm'},          {'label':'Edit Themes & Disciplines','action':'editMPIWGDisciplinesThemesForm'},
         )          )
   
   
       def index_html(self):
           """show homepage"""
       ext=self.ZopeFind(self.aq_parent,obj_ids=["project_main"])
   
           if ext:
               return getattr(self,ext[0][1].getId())()
   
           pt=PageTemplateFile('Products/MPIWGWeb/zpt/project_main').__of__(self)
           return pt()
   
     def getDataFields(self):      def getDataFields(self):
         """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 770  class MPIWGProject(Folder): Line 873  class MPIWGProject(Folder):
                     text=x.decode('latin-1').encode('utf-8')                      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].encode('utf-8')                  text=text[0:len(text)-1]
             
                   
         except:          except:
             """nothing"""              """nothing"""
                           
         return text          text2=re.sub(r';([^\s])','; \g<1>',text)
           #teste ob ergebnis leer und header dann nehme title
           
           if (text2=='') and (field=='WEB_project_header'):
               return self.getContent('WEB_title')
   
           #teste ob WEB_project_description und keine führenden p tags
           if (len(text2)>4) and (not text2[0:3]=='<p>') and (field=='WEB_project_description'):
               return "<p>"+text2+"</p>"
           #if text2=="Otto Sibum":
           #text2="H. Otto Sibum"
           return text2
           
     def show_html(self):      def show_html(self):
         """simple index"""          """simple index"""
Line 890  def manage_addMPIWGProjectForm(self): Line 1009  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.15  
changed lines
  Added in v.1.36


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