Diff for /cdli/cdli_files.py between versions 1.84 and 1.85

version 1.84, 2008/09/25 13:41:58 version 1.85, 2008/09/26 16:03:30
Line 32  import cdliSplitter Line 32  import cdliSplitter
 from sets import Set  from sets import Set
 import md5  import md5
   
                                          
   def makelist(mySet):
           x = list(mySet)
           x.sort()
           return x
       
 def unicodify(s):  def unicodify(s):
     """decode str (utf-8 or latin-1 representation) into unicode object"""      """decode str (utf-8 or latin-1 representation) into unicode object"""
     if not s:      if not s:
Line 395  class uploadATFfinallyThread(Thread): Line 401  class uploadATFfinallyThread(Thread):
                 basketId=ob.getId()                  basketId=ob.getId()
             basket=getattr(ctx2.basketContainer,str(basketId))              basket=getattr(ctx2.basketContainer,str(basketId))
             ids=os.listdir(SESSION['tmpdir'])              ids=os.listdir(SESSION['tmpdir'])
               logging.debug("should add:"+repr(ids))
             basket.addObjects(ids,deleteOld=True,username=str(username))                  basket.addObjects(ids,deleteOld=True,username=str(username))    
                                 
         logging.debug("uploadatffinallythread uploadfinally done")          logging.debug("uploadatffinallythread uploadfinally done")
Line 1024  class CDLIBasket(Folder,CatalogAware): Line 1031  class CDLIBasket(Folder,CatalogAware):
   
     def isActual(self,obj):      def isActual(self,obj):
         """teste ob im basket die aktuelle version ist"""          """teste ob im basket die aktuelle version ist"""
           try:
               logging.debug("isActual:"+repr(obj))
         actualNo=obj[1].getLastVersion().getVersionNumber()          actualNo=obj[1].getLastVersion().getVersionNumber()
         storedNo=obj[0].getVersionNumber()          storedNo=obj[0].getVersionNumber()
                   
Line 1038  class CDLIBasket(Folder,CatalogAware): Line 1047  class CDLIBasket(Folder,CatalogAware):
             return True , 0              return True , 0
         else:          else:
             return False, actualNo              return False, actualNo
           except:
               return False, -1
                   
     def history(self):      def history(self):
         """history"""            """history"""  
Line 1210  class CDLIBasket(Folder,CatalogAware): Line 1221  class CDLIBasket(Folder,CatalogAware):
 #                    newContent.append((found.getObject().getLastVersion(),found.getObject()))  #                    newContent.append((found.getObject().getLastVersion(),found.getObject()))
 #                    added+=1  #                    added+=1
   
         hash = md5.new(repr(self.makelist(ids))).digest() # erzeuge hash als identification          hash = md5.new(repr(makelist(ids))).hexdigest() # erzeuge hash als identification
         #logging.debug("JJJJJJJ:"+repr(self.makelist(ids)))          #logging.debug("JJJJJJJ:"+repr(self.makelist(ids)))
         logging.debug("JJJJJJJ:"+repr(hash))          logging.debug("JJJJJJJ:"+repr(hash))
                                               
         if hasattr(self.cdliRoot,'_v_tmpStore') and self.cdliRoot._v_tmpStore.has_key(hash):           if hasattr(self.cdliRoot,'v_tmpStore') and self.cdliRoot.v_tmpStore.has_key(hash): 
             logging.debug("from store!")              logging.debug("from store!")
             newContent=Set(map(swap,self.cdliRoot._v_tmpStore[hash]))              newContent=Set(map(swap,self.cdliRoot.v_tmpStore[hash]))
                     
         else:          else:
             logging.debug("not from store!")              logging.debug("not from store!")
Line 1552  class CDLIFileObject(CatalogAware,extVer Line 1563  class CDLIFileObject(CatalogAware,extVer
            return str(self)             return str(self)
                 
     def makeThisVersionCurrent_html(self):      def makeThisVersionCurrent_html(self):
         """form for making this version current"""          """form for mthis version current"""
                   
         pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','makeThisVersionCurrent.zpt')).__of__(self)          pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','makeThisVersionCurrent.zpt')).__of__(self)
         return pt()                           return pt()                 
Line 1645  def manage_addCDLIFileObject(self,id,vC= Line 1656  def manage_addCDLIFileObject(self,id,vC=
     logging.debug("reindex2: %s in %s"%(repr(fob), repr(fob.default_catalog)))      logging.debug("reindex2: %s in %s"%(repr(fob), repr(fob.default_catalog)))
     fob.index_object()      fob.index_object()
   
       self.CDLIRoot.updateOrAddToFileBTree(ob)
     if REQUEST is not None:      if REQUEST is not None:
         REQUEST['RESPONSE'].redirect(self.absolute_url()+'/manage_main')          REQUEST['RESPONSE'].redirect(self.absolute_url()+'/manage_main')
           
Line 1758  class CDLIFile(extVersionedFile,CatalogA Line 1770  class CDLIFile(extVersionedFile,CatalogA
         except:          except:
             pass              pass
       
           #self.cdliRoot.updateOrAddToFileBTree(self)# now update the object in the cache
         
           
         if RESPONSE:          if RESPONSE:
             if ob.getSize()==0:              if ob.getSize()==0:
                 self.REQUEST.SESSION['objID']=ob.getId()                  self.REQUEST.SESSION['objID']=ob.getId()
Line 1967  class CDLIFileFolder(extVersionedFileFol Line 1982  class CDLIFileFolder(extVersionedFileFol
             fileTree.add(found.getId)              fileTree.add(found.getId)
             logging.debug("ADDD:"+found.getId)              logging.debug("ADDD:"+found.getId)
                     
     def findObjectsFromList(self,enterList=None,display=False,start=None,upload=None,list=None,basketName=None,numberOfObjects=None,RESPONSE=None,REQUEST=None):      def findObjectsFromList(self,enterList=None,display=False,start=None,upload=None,list=None,basketName=None,numberOfObjects=None,RESPONSE=None,REQUEST=None,returnHash=False,hash=None):
         """findObjectsFromList (, TAB oder LINE separated)"""          """findObjectsFromList (, TAB oder LINE separated)"""
                                                                                 
         logging.debug("start: findObjectsFromList")          logging.debug("start: findObjectsFromList")
           #logging.debug("start: findObjectsFromList"+repr(list))
           
               
         if upload: # list from file upload          if upload: # list from file upload
             txt=upload.read()              txt=upload.read()
                                                                                 
Line 2001  class CDLIFileFolder(extVersionedFileFol Line 2019  class CDLIFileFolder(extVersionedFileFol
             pt=getattr(self,'filelist.html')              pt=getattr(self,'filelist.html')
             return pt(basketName=basketName,numberOfObjects=numberOfObjects)              return pt(basketName=basketName,numberOfObjects=numberOfObjects)
                   
           if hash is not None and hasattr(self.cdliRoot,'v_tmpStore') and self.cdliRoot.v_tmpStore.has_key(hash): 
                  
                  logging.debug("asking for storage2")
                  result =self.cdliRoot.v_tmpStore[hash]
                  if result:
                      logging.debug("give result from storage2")
                      return hash,self.cdliRoot.v_tmpStore[hash]
             
         if list is not None: # got already a list          if list is not None: # got already a list
                           
             logging.debug(" ----List version")              logging.debug(" ----List version")
Line 2024  class CDLIFileFolder(extVersionedFileFol Line 2050  class CDLIFileFolder(extVersionedFileFol
                           
                           
             ids = fileTree & self.v_file_ids              ids = fileTree & self.v_file_ids
               #self.REQUEST.SESSION['fileIds']=ids#store fieldIds in session for further usage
               l=makelist(fileTree)[0:]
               logging.debug("l-list:"+repr(l))
               self.REQUEST.SESSION['fileIds']=l#store fieldIds in session for further usage
               self.REQUEST.SESSION['searchList']=l
               #self.REQUEST.SESSION['searchList']=['P000001.atf']
                           
                           
             hash = md5.new(repr(self.makelist(ids))).digest() # erzeuge hash als identification              hash = md5.new(repr(makelist(fileTree))).hexdigest() # erzeuge hash als identification
             #TODO: do I need garbage collection for _v_tmpStore ?              self.REQUEST.SESSION['hash']=hash
             #logging.debug("list:"+repr(self.makelist(ids)))              #TODO: do I need garbage collection for v_tmpStore ?
               
             #logging.debug("Hash:"+repr(hash))              #logging.debug("Hash:"+repr(hash))
             if hasattr(self.cdliRoot,'_v_tmpStore') and self.cdliRoot._v_tmpStore.has_key(hash):   #        
                logging.debug("asking for storage")  #            if hasattr(self.cdliRoot,'v_tmpStore') and self.cdliRoot.v_tmpStore.has_key(hash): 
                return self.cdliRoot._v_tmpStore[hash]  #               logging.debug("asking for storage")
   #               res=self.cdliRoot.v_tmpStore[hash]
   #               if res:
   #                   if returnHash == True:
   #                       return hash,res
   #                   return res
                       
             #TODO: get rid of one of these..              #TODO: get rid of one of these..
             #ids=[x.getObject().getId() for x in ret]              #ids=[x.getObject().getId() for x in ret]
Line 2040  class CDLIFileFolder(extVersionedFileFol Line 2078  class CDLIFileFolder(extVersionedFileFol
                           
             #self.REQUEST.SESSION['fileIds']=ids#store fieldIds in session for further usage              #self.REQUEST.SESSION['fileIds']=ids#store fieldIds in session for further usage
             #self.REQUEST.SESSION['searchList']=self.REQUEST.SESSION['fileIds']              #self.REQUEST.SESSION['searchList']=self.REQUEST.SESSION['fileIds']
             self.REQUEST.SESSION['fileIds']=list#store fieldIds in session for further usage  
             self.REQUEST.SESSION['searchList']=self.REQUEST.SESSION['fileIds']  
                     
             if display:              if display:
                 pt=getattr(self,'filelist.html')                  pt=getattr(self,'filelist.html')
Line 2049  class CDLIFileFolder(extVersionedFileFol Line 2085  class CDLIFileFolder(extVersionedFileFol
                 return pt(search=ids)                  return pt(search=ids)
             else:                   else:     
                 #self.REQUEST.SESSION['hash'] = ret # store in session                   #self.REQUEST.SESSION['hash'] = ret # store in session 
                 if not hasattr(self,'_v_tmpStore'):                  if not hasattr(self,'v_tmpStore'):
                     self.cdliRoot._v_tmpStore={}                      self.cdliRoot.v_tmpStore={}
                 #logging.debug("HHHHHHNEU:"+repr(self.makelist(ids)))                  #logging.debug("HHHHHHNEU:"+repr(self.makelist(ids)))
                 #logging.debug("HHHHHHNEU:"+repr(hash))                  #logging.debug("HHHHHHNEU:"+repr(hash))
                 self.cdliRoot._v_tmpStore[hash] = ret # store in session                   self.cdliRoot.v_tmpStore[hash] = ret # store in session 
                   if returnHash == True:
                       return hash,ret
                 return ret                  return ret
                   
                   
Line 2061  class CDLIFileFolder(extVersionedFileFol Line 2099  class CDLIFileFolder(extVersionedFileFol
         if start:          if start:
             RESPONSE.redirect("filelist.html?start:int="+str(start))              RESPONSE.redirect("filelist.html?start:int="+str(start))
                                                                                 
     def makelist(self,mySet):  
         x = list(mySet)  
         x.sort()  
         return x  
       
     security.declareProtected('Manage','createAllFilesAsSingleFile')      security.declareProtected('Manage','createAllFilesAsSingleFile')
     def createAllFilesAsSingleFile(self,RESPONSE=None):      def createAllFilesAsSingleFile(self,RESPONSE=None):
         """download all files"""          """download all files"""
Line 2194  class CDLIRoot(Folder): Line 2227  class CDLIRoot(Folder):
           
           
     def getFileObject(self,fileId):      def getFileObject(self,fileId):
           """get an object"""
         x=self.v_files.get(fileId)          x=self.v_files.get(fileId)
         #logging.debug(x)          #logging.debug(x)
         return x          return x
           
     def getFileObjectLastVersion(self,fileId):      def getFileObjectLastVersion(self,fileId):
           """get an object"""
         x=self.v_files_lastVersion.get(fileId)          x=self.v_files_lastVersion.get(fileId)
         #logging.debug(x)          #logging.debug(x)
         return x          return x
           
       def showFileIds(self):
           """showIds"""
           return self.v_file_ids
       
     def generateFileBTree(self):      def generateFileBTree(self):
         """erzeuge einen Btree aus allen Files"""          """erzeuge einen Btree aus allen Files"""
         self.v_files = OOBTree()          self.v_files = OOBTree()
Line 2216  class CDLIRoot(Folder): Line 2255  class CDLIRoot(Folder):
             self.v_file_ids.add(x.getId)              self.v_file_ids.add(x.getId)
             logging.debug("add:"+x.getId+"XXX"+repr(x.getObject()))              logging.debug("add:"+x.getId+"XXX"+repr(x.getObject()))
                   
         return "done"          return True
       
       
       def updateOrAddToFileBTree(self,obj):
           """update a BTree"""
           self.v_files.update({obj.getId():obj})
           self.v_files_lastVersion.update({obj.getId():obj.getLastVersion()})
           
           self.v_file_ids.add(obj.getId())
           logging.debug("update:"+obj.getId()+"XXX"+repr(obj))
           
       def deleteFromBTree(self,objId):
           """delete an obj"""
           self.v_files.pop(objId)
           self.v_files_lastVersion.pop(objId)
           self.v_file_ids.remove(objId)
           
   
    
     def deleteFiles(self,ids):      def deleteFiles(self,ids):
         """delete files"""          """delete files"""
         for id in ids:          for id in ids:
Line 2650  class CDLIRoot(Folder): Line 2707  class CDLIRoot(Folder):
                 pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','uploadATFWait.zpt')).__of__(self)                  pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','uploadATFWait.zpt')).__of__(self)
                 return pt(txt='/uploadATFfinally',threadName=threadName)                  return pt(txt='/uploadATFfinally',threadName=threadName)
             else:              else:
                 
                
                 idTmp=self.REQUEST.SESSION['idTmp']
                 stObj=getattr(self.temp_folder,idTmp) 
               self.REQUEST.SESSION['idTmp']=None                self.REQUEST.SESSION['idTmp']=None
                
                 #update changed
                 logging.debug("dir:"+repr(stObj.returnValue['changed']))
                 for x in stObj.returnValue['changed']:
                       ob=self.CDLICatalog.search({'title':x[0]})
                      
                       self.cdliRoot.updateOrAddToFileBTree(ob[0].getObject())
               if RESPONSE is not None:                if RESPONSE is not None:
                   RESPONSE.redirect(self.absolute_url())                    RESPONSE.redirect(self.absolute_url())
   
Line 2665  class CDLIRoot(Folder): Line 2733  class CDLIRoot(Folder):
         for f in files:          for f in files:
             folder=f[0:3]              folder=f[0:3]
             f2=f[0:5]              f2=f[0:5]
               
               #check if main folder PXX already exists
             obj=self.ZopeFind(root,obj_ids=[folder])              obj=self.ZopeFind(root,obj_ids=[folder])
             logging.debug("importFiles: folder=%s f2=%s obj=%s"%(folder,f2,obj))               logging.debug("importFiles: folder=%s f2=%s obj=%s"%(folder,f2,obj)) 
             if ext:              if ext:
                 ext.result="<p>adding: %s </p>"%f+ext.result                  ext.result="<p>adding: %s </p>"%f+ext.result
   
             if not obj:              
               if not obj: # if not create it
                 manage_addCDLIFileFolder(root,folder,folder)                  manage_addCDLIFileFolder(root,folder,folder)
                 fobj=getattr(root,folder)                  fobj=getattr(root,folder)
                 #transaction.get().commit()                                             #transaction.get().commit()                           
Line 2678  class CDLIRoot(Folder): Line 2749  class CDLIRoot(Folder):
             else:              else:
                 fobj=obj[0][1]                  fobj=obj[0][1]
                           
               #check IF PYYYYY already exist
             obj2=fobj.ZopeFind(fobj,obj_ids=[f2])              obj2=fobj.ZopeFind(fobj,obj_ids=[f2])
             logging.debug("importFiles: fobj=%s obj2=%s"%(fobj,obj2))               logging.debug("importFiles: fobj=%s obj2=%s"%(fobj,obj2)) 
                   
             if not obj2:              if not obj2:# if not create it
                 manage_addCDLIFileFolder(fobj,f2,f2)                  manage_addCDLIFileFolder(fobj,f2,f2)
                 fobj2=getattr(fobj,f2)                  fobj2=getattr(fobj,f2)
                   
             else:              else:
                 fobj2=obj2[0][1]                  fobj2=obj2[0][1]
                               
               # not add the file
             file2=os.path.join(folderName,f)                file2=os.path.join(folderName,f)  
             id=f              id=f
             logging.debug("importFiles: addCDLIFile fobj2=%s, f=%s file2=%s"%(fobj2,repr(f),repr(file2)))              logging.debug("importFiles: addCDLIFile fobj2=%s, f=%s file2=%s"%(fobj2,repr(f),repr(file2)))
             fobj2.addFile(vC='',file=file(file2),author=author,newName=f)              fobj2.addFile(vC='',file=file(file2),author=author,newName=f)
             count+=1              count+=1
   
               #now add the file to the storage
               ob = getattr(fobj2,f)
               self.cdliRoot.updateOrAddToFileBTree(ob)
               
             if count%100==0:              if count%100==0:
                 logging.debug("importfiles: committing")                  logging.debug("importfiles: committing")
                 transaction.get().commit()                  transaction.get().commit()

Removed from v.1.84  
changed lines
  Added in v.1.85


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