version 1.74, 2007/03/23 16:03:53
|
version 1.79, 2007/08/31 14:22:52
|
Line 26 import logging
|
Line 26 import logging
|
import transaction |
import transaction |
import copy |
import copy |
import codecs |
import codecs |
|
import sys |
|
|
|
def unicodify(s): |
|
"""decode str (utf-8 or latin-1 representation) into unicode object""" |
|
if not s: |
|
return u"" |
|
if isinstance(s, str): |
|
try: |
|
return s.decode('utf-8') |
|
except: |
|
return s.decode('latin-1') |
|
else: |
|
return s |
|
|
|
def utf8ify(s): |
|
"""encode unicode object or string into byte string in utf-8 representation. |
|
assumes string objects to be utf-8""" |
|
if not s: |
|
return "" |
|
if isinstance(s, str): |
|
return s |
|
else: |
|
return s.encode('utf-8') |
|
|
|
|
def generateXMLReturn(hash): |
def generateXMLReturn(hash): |
"""erzeugt das xml file als returnwert fuer uploadATFRPC""" |
"""erzeugt das xml file als returnwert fuer uploadATFRPC""" |
Line 530 class CDLIBasketContainer(OrderedFolder)
|
Line 554 class CDLIBasketContainer(OrderedFolder)
|
|
|
return ret |
return ret |
|
|
|
security.declareProtected('manage','getBasketAsOneFile') |
def getBasketAsOneFile(self,basketName,current="no"): |
def getBasketAsOneFile(self,basketName,current="no"): |
"""returns all files of the basket combined in one file |
"""returns all files of the basket combined in one file |
@param basketName: Name of the basket |
@param basketName: Name of the basket |
Line 553 class CDLIBasketContainer(OrderedFolder)
|
Line 578 class CDLIBasketContainer(OrderedFolder)
|
ret+=str(founds[0].getObject().getLastVersion().getData())+"\n" |
ret+=str(founds[0].getObject().getLastVersion().getData())+"\n" |
return ret |
return ret |
|
|
|
security.declareProtected('manage','upDateBaskets') |
def upDateBaskets(self): |
def upDateBaskets(self): |
"""update content in to objects""" |
"""update content in to objects""" |
|
|
Line 623 class CDLIBasketContainer(OrderedFolder)
|
Line 649 class CDLIBasketContainer(OrderedFolder)
|
return pt(basketId=basketId,basketName=basketName) |
return pt(basketId=basketId,basketName=basketName) |
|
|
|
|
security.declareProtected('View','index_html') |
security.declareProtected('manage','index_html') |
def index_html(self): |
def index_html(self): |
"""stanadard ansicht""" |
"""stanadard ansicht""" |
|
|
Line 827 class CDLIBasketContainer(OrderedFolder)
|
Line 853 class CDLIBasketContainer(OrderedFolder)
|
"""get name of the actualuser""" |
"""get name of the actualuser""" |
return str(self.REQUEST['AUTHENTICATED_USER']) |
return str(self.REQUEST['AUTHENTICATED_USER']) |
|
|
|
security.declareProtected('manage','addBasket') |
def addBasket(self,newBasketName): |
def addBasket(self,newBasketName): |
"""add a new basket""" |
"""add a new basket""" |
|
|
Line 883 class CDLIBasket(Folder,CatalogAware):
|
Line 909 class CDLIBasket(Folder,CatalogAware):
|
meta_type="CDLIBasket" |
meta_type="CDLIBasket" |
default_catalog="CDLIBasketCatalog" |
default_catalog="CDLIBasketCatalog" |
|
|
def searchInBasket(self,searchStr): |
def searchInBasket(self,indexName,searchStr,regExp=False): |
|
"""searchInBasket""" |
|
|
|
lst=self.searchInLineIndexDocs(indexName,searchStr,uniq=True,regExp=regExp) |
|
ret={} |
|
|
|
lv=self.getLastVersion() |
|
|
|
|
|
for obj in lv.content.getContent(): |
|
id=obj[1].getId().split(".")[0] |
|
if id in lst: |
|
|
|
ret[id]=self.showWordInFile(id,searchStr,lineList=self.getLinesFromIndex(indexName,searchStr,id,regExp=regExp),regExp=regExp,indexName=indexName) |
|
|
|
|
|
pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','searchResultsInBasket')).__of__(self) |
|
return pt(result=ret,indexName=indexName,regExp=regExp,word=searchStr) |
|
|
|
|
|
|
|
|
|
def searchInBasket_v1(self,searchStr): |
"""search occurences of searchStr in files im basket""" |
"""search occurences of searchStr in files im basket""" |
ret=[] |
ret=[] |
lv=self.getLastVersion() |
lv=self.getLastVersion() |
Line 1218 class CDLIBasketVersion(Implicit,Persist
|
Line 1266 class CDLIBasketVersion(Implicit,Persist
|
self.REQUEST.RESPONSE.setHeader("Content-Length",length) |
self.REQUEST.RESPONSE.setHeader("Content-Length",length) |
self.REQUEST.RESPONSE.write(ret) |
self.REQUEST.RESPONSE.write(ret) |
|
|
security.declareProtected('View','downloadObjectsAsOneFile') |
security.declareProtected('manage','downloadObjectsAsOneFile') |
def downloadObjectsAsOneFile(self,lock=None,procedure=None,REQUEST=None,check="yes",current="no"): |
def downloadObjectsAsOneFile(self,lock=None,procedure=None,REQUEST=None,check="yes",current="no"): |
"""download all selected files in one file""" |
"""download all selected files in one file""" |
|
|
Line 1350 class CDLIBasketVersion(Implicit,Persist
|
Line 1398 class CDLIBasketVersion(Implicit,Persist
|
"""get Comment""" |
"""get Comment""" |
return self.comment |
return self.comment |
|
|
security.declareProtected('View','index_html') |
security.declareProtected('manage','index_html') |
def index_html(self): |
def index_html(self): |
"""view the basket""" |
"""view the basket""" |
|
|
Line 1405 class CDLIFileObject(CatalogAware,extVer
|
Line 1453 class CDLIFileObject(CatalogAware,extVer
|
|
|
security.declarePublic('makeThisVersionCurrent') |
security.declarePublic('makeThisVersionCurrent') |
|
|
|
security.declareProtected('manage','index_html') |
def PrincipiaSearchSource(self): |
def PrincipiaSearchSource(self): |
"""Return cataloguable key for ourselves.""" |
"""Return cataloguable key for ourselves.""" |
return str(self) |
return str(self) |
Line 1513 def manage_addCDLIFileObject(self,id,vC=
|
Line 1562 def manage_addCDLIFileObject(self,id,vC=
|
class CDLIFile(extVersionedFile,CatalogAware): |
class CDLIFile(extVersionedFile,CatalogAware): |
"""CDLI file""" |
"""CDLI file""" |
|
|
|
security=ClassSecurityInfo() |
meta_type="CDLI file" |
meta_type="CDLI file" |
default_catalog='CDLICatalog' |
default_catalog='CDLICatalog' |
|
security.declareProtected('manage','index_html') |
#security.declarePublic('history') |
#security.declarePublic('history') |
def getLastVersionData(self): |
def getLastVersionData(self): |
"""get last version data""" |
"""get last version data""" |
Line 1967 class CDLIFileFolder(extVersionedFileFol
|
Line 2017 class CDLIFileFolder(extVersionedFileFol
|
return ret |
return ret |
|
|
|
|
security.declareProtected('View','index_html') |
security.declareProtected('manage','index_html') |
def index_html(self): |
def index_html(self): |
"""main""" |
"""main""" |
ext=self.ZopeFind(self,obj_ids=["index.html"]) |
ext=self.ZopeFind(self,obj_ids=["index.html"]) |
Line 2062 class CDLIRoot(Folder):
|
Line 2112 class CDLIRoot(Folder):
|
words=self.findWordRegExp(indexName,searchTerm) # suche nach allen Treffern |
words=self.findWordRegExp(indexName,searchTerm) # suche nach allen Treffern |
logging.info("wd:%s"%words) |
logging.info("wd:%s"%words) |
for word in words: |
for word in words: |
|
|
ret+=self.searchInLineIndexDocs(indexName,word) |
ret+=self.searchInLineIndexDocs(indexName,word) |
|
|
return unique(ret) |
|
|
x= unique(ret) |
|
logging.info("words_done") |
|
return x |
|
|
def showInLineIndex(self): |
def showInLineIndex(self): |
"""get the index for debug purposes""" |
"""get the index for debug purposes""" |
Line 2188 class CDLIRoot(Folder):
|
Line 2242 class CDLIRoot(Folder):
|
"""get lines with word fromFileId""" |
"""get lines with word fromFileId""" |
|
|
file=self.showFile(fileId) |
file=self.showFile(fileId) |
|
logging.info("regEXP %s"%regExp) |
ret=[] |
ret=[] |
if regExp: # wenn regexp dann generiere alle worte aus der list die der regexp entsprechen |
if regExp: # wenn regexp dann generiere alle worte aus der list die der regexp entsprechen |
wordlist=self.findWordRegExp(indexName,word) |
wordlist=self.findWordRegExp(indexName,word) |
Line 2198 class CDLIRoot(Folder):
|
Line 2252 class CDLIRoot(Folder):
|
for line in file.split("\n"): |
for line in file.split("\n"): |
found=False |
found=False |
for word in wordlist: |
for word in wordlist: |
|
try: # just a hack because of possible unicode errors in line |
if line.find(word)>-1: |
if line.find(word)>-1: |
if lineList: #liste of moeglichen Zeilennummern |
if lineList: #liste of moeglichen Zeilennummern |
num=line.split(".")[0] #Zeilenummer ist alles vor dem . in der Zeile |
num=line.split(".")[0] #Zeilenummer ist alles vor dem . in der Zeile |
Line 2209 class CDLIRoot(Folder):
|
Line 2264 class CDLIRoot(Folder):
|
ret.append(line) |
ret.append(line) |
|
|
break; |
break; |
|
except: |
|
pass |
return ret |
return ret |
|
|
def tagWordInFile(self,fileId,word,lineList=None,regExp=True,indexName=""): |
def tagWordInFile(self,fileId,word,lineList=None,regExp=True,indexName=""): |
"""get lines with word fromFileId""" |
"""get lines with word fromFileId""" |
|
|
file=self.showFile(fileId) |
file=self.showFile(fileId) |
tagStr="""<span class="found">%s</span>""" |
tagStr=u'<span class="found">%s</span>' |
ret=[] |
ret=[] |
|
|
if regExp: # wenn regexp dann generiere alle worte aus der list die der regexp entsprechen |
if regExp: # wenn regexp dann generiere alle worte aus der list die der regexp entsprechen |
Line 2224 class CDLIRoot(Folder):
|
Line 2281 class CDLIRoot(Folder):
|
wordlist=[word] |
wordlist=[word] |
|
|
for line in file.split("\n"): |
for line in file.split("\n"): |
|
line = unicodify(line) |
found=False |
found=False |
for word in wordlist: |
for word in wordlist: |
if line.find(word)>-1: #word ist gefunden dann makiere und breche die Schleife ab |
if line.find(word)>-1: #word ist gefunden dann makiere und breche die Schleife ab |
Line 2241 class CDLIRoot(Folder):
|
Line 2299 class CDLIRoot(Folder):
|
if not found: #word wurde nicht gefunden keine makierung |
if not found: #word wurde nicht gefunden keine makierung |
ret.append(line) |
ret.append(line) |
|
|
return "<br>\n".join(ret) |
return u'<br>\n'.join(ret) |
|
|
def URLquote(self,str): |
def URLquote(self,str): |
"""quote url""" |
"""quote url""" |