--- cdli/cdli_files.py 2006/07/14 14:51:50 1.36 +++ cdli/cdli_files.py 2006/10/16 13:19:34 1.49 @@ -1,11 +1,13 @@ """CDLI extensions of the filearchive""" -from Products.versionedFile.versionedFile import * +from Products.versionedFile.extVersionedFile import * from Products.ZCatalog.CatalogPathAwareness import CatalogAware from tempfile import mkstemp,mkdtemp import os.path import os from types import * import urlparse +import urllib +import cgi from OFS.OrderedFolder import OrderedFolder from OFS.SimpleItem import SimpleItem import time @@ -13,6 +15,7 @@ from OFS.Folder import manage_addFolder import re from AccessControl import ClassSecurityInfo from Acquisition import Implicit +from Globals import Persistent from threading import Thread from ZPublisher.HTTPRequest import HTTPRequest from ZPublisher.HTTPResponse import HTTPResponse @@ -20,7 +23,27 @@ from ZPublisher.BaseRequest import Reque import threading +class BasketContent(SimpleItem): + """classe fuer den Inhalt eines Baskets""" + + def __init__(self,content=[]): + """content""" + self.contentList=content[0:] + + def getContent(self): + """get content""" + return self.contentList + + def setContent(self,content): + self.contentList=content[0:] + + def numberOfItems(self): + """number""" + + return len(self.getContent()) + + class uploadATFfinallyThread(Thread): """class for adding uploaded filed (temporarily stored in the staging area at /tmp""" @@ -77,7 +100,8 @@ class uploadATFfinallyThread(Thread): conn.close() #set flag for end of this method self.end=True - return True + print "ended" + return True def __del__(self): """delete""" @@ -105,7 +129,7 @@ class uploadATFfinallyThread(Thread): elif procedure=="uploadAll": uploadFns=[] for x in os.listdir(SESSION['tmpdir']): - if not x in SESSION['errors']: + if not x in SESSION['lockerrors']: uploadFns.append(x) #or maybe nothing @@ -120,7 +144,7 @@ class uploadATFfinallyThread(Thread): if len(founds)>0: SESSION['author']=str(username) self.result+="
Changing : %s"%fn - founds[0].getObject().manage_addCDLIFileObject('',comment,SESSION['author'],file=file(os.path.join(SESSION['tmpdir'],fn))) + founds[0].getObject().manage_addCDLIFileObject('',comment,SESSION['author'],file=os.path.join(SESSION['tmpdir'],fn),from_tmp=True) #now add the new files @@ -218,10 +242,10 @@ class uploadATFThread(Thread): #ctx.cdliRoot.cdli_main.tmpStore2[self.getName()[0:]]=self.returnValue get_transaction().commit() - + while self.continueVar: pass - + conn.close() @@ -247,6 +271,8 @@ class uploadATFThread(Thread): changed=[] # changed files errors=[] # files with errors + lockerrors=[] # files with errors + newPs=[] # new p filed psNotInCatalog=[] # files not in the catalog @@ -261,7 +287,7 @@ class uploadATFThread(Thread): if basketObj: basketId=basketObj.getId() - #if there is no active baske and no basketid given, id is empty, else get besketname and length + #if there is no active basket and no basketid given, id is empty, else get besketname and length if basketId == '0': basketNameFromId="" basketLen=0 @@ -287,29 +313,37 @@ class uploadATFThread(Thread): founds=ctx2.CDLICatalog.search({'title':fn}) #if not than add filename to the list of newfiles - if len(founds)==0: - newPs.append(fn) - #if p file alread at the server - for found in founds: - #analyse the differences to the actual file - obj=found.getObject() + data=file(os.path.join(dir,fn)).read() + #status,msg=checkFile(fn,data,dir) + status=True + msg="" + if not status: # error + errors.append((fn,msg)) + else: + if len(founds)==0: + newPs.append(fn) + + #if p file alread at the server + for found in founds: + #analyse the differences to the actual file + obj=found.getObject() + + if (not (str(obj.lockedBy))=='') and (not (str(obj.lockedBy)==str(self.username))): + lockerrors.append(fn) + else: + + diffs=obj.diff(data) + if diffs[0]>0: + changed.append((obj,diffs)) #hochladen - if (not (str(obj.lockedBy))=='') and (not (str(obj.lockedBy)==str(self.username))): - errors.append(obj) - else: - data=file(os.path.join(dir,fn)).read() - diffs=obj.diff(data) - if diffs[0]>0: - changed.append((obj,diffs)) - #hochladen - #ready, set the returnValues self.result+="