version 1.1, 2004/07/01 19:31:25
|
version 1.2, 2004/07/05 21:08:55
|
Line 69 class OSAS_search(SimpleItem):
|
Line 69 class OSAS_search(SimpleItem):
|
metacache = self.REQUEST.SESSION['dbMeta'] |
metacache = self.REQUEST.SESSION['dbMeta'] |
if metacache.has_key(fileid): |
if metacache.has_key(fileid): |
res = metacache[fileid] |
res = metacache[fileid] |
print "meta from cache " |
#print "meta from cache " |
return res |
return res |
|
|
curs = self.dbCursor() |
curs = self.dbCursor() |
Line 97 class OSAS_search(SimpleItem):
|
Line 97 class OSAS_search(SimpleItem):
|
filecache = self.REQUEST.SESSION['dbFiles'] |
filecache = self.REQUEST.SESSION['dbFiles'] |
if filecache.has_key(fileid): |
if filecache.has_key(fileid): |
res = filecache[fileid] |
res = filecache[fileid] |
print "file from cache " |
#print "file from cache " |
return res |
return res |
|
|
curs = self.dbCursor() |
curs = self.dbCursor() |
Line 117 class OSAS_search(SimpleItem):
|
Line 117 class OSAS_search(SimpleItem):
|
return res |
return res |
|
|
|
|
def dbSearch(self, query): |
def dbSearch(self, query, type): |
"""search DB for query and return result set""" |
"""search DB for query and return result set""" |
curs = self.dbCursor() |
curs = self.dbCursor() |
|
if type == 'equals': |
|
qs = query |
|
elif type == 'startswith': |
qs = query + "%" |
qs = query + "%" |
|
elif type == 'contains': |
|
qs = "%" + query + "%" |
|
|
sql = 'select fileid,idx,tags,content from meta where content like %(qs)s' |
sql = 'select fileid,idx,tags,content from meta where content like %(qs)s' |
print sql, " -> ", qs |
print sql, " -> ", qs |
curs.execute(sql, {'qs':qs}) |
curs.execute(sql, {'qs':qs}) |
Line 141 class OSAS_search(SimpleItem):
|
Line 147 class OSAS_search(SimpleItem):
|
curs.close() |
curs.close() |
#self.dbCon = None |
#self.dbCon = None |
|
|
print "SEARCH: ", rescnt, " results" |
#print "SEARCH: ", rescnt, " results" |
return results |
return results |
|
|
|
|
def getResult(self, db_result, rank=0): |
def getResult(self, db_result, rank=0): |
"""factory for result objects""" |
"""factory for result objects""" |
print "NEW RESULT!" |
|
|
|
(fileid, tagidx, tags, content) = db_result |
(fileid, tagidx, tags, content) = db_result |
res = None |
res = None |
|
|
print "tags: ", tags |
|
if tags.find('/meta/bib/') > -1: |
if tags.find('/meta/bib/') > -1: |
res = BibResult(self, db_result, rank) |
res = BibResult(self, db_result, rank) |
elif tags.find('/meta/archimedes/') > -1: |
elif tags.find('/meta/archimedes/') > -1: |
Line 165 class OSAS_search(SimpleItem):
|
Line 169 class OSAS_search(SimpleItem):
|
def renderResult(self, result): |
def renderResult(self, result): |
"""returns HTML rendering of a search result""" |
"""returns HTML rendering of a search result""" |
|
|
print "renderresult!", result, " -- ", result.url |
|
return result.render(self) |
return result.render(self) |
|
|
|
|
Line 182 class OSAS_search(SimpleItem):
|
Line 185 class OSAS_search(SimpleItem):
|
return pt() |
return pt() |
|
|
|
|
def search(self, searchstring=None): |
def search(self, searchstring=None, searchtype='startswith', start=1, count=10): |
"""search and result""" |
"""search and create result""" |
if searchstring: |
sres = int(start) -1 |
print "SEARCH: ", searchstring |
lres = sres + count |
res = self.dbSearch(searchstring) |
try: |
|
oldsearch = self.REQUEST.SESSION['searchstring'] |
|
oldtype = self.REQUEST.SESSION['searchtype'] |
|
except: |
|
oldsearch = "" |
|
oldtype = "" |
|
|
|
if not searchstring: |
|
searchstring = oldsearch |
|
searchtype = oldtype |
|
|
|
if not oldsearch or searchstring != oldsearch or searchtype != oldtype: |
|
# new search |
|
res = self.dbSearch(searchstring, searchtype) |
|
# sort the result |
res.sort(ranksort) |
res.sort(ranksort) |
|
# store it |
self.REQUEST.SESSION['results'] = res |
self.REQUEST.SESSION['results'] = res |
self.REQUEST.SESSION['searchstring'] = searchstring |
self.REQUEST.SESSION['searchstring'] = searchstring |
|
self.REQUEST.SESSION['searchtype'] = searchtype |
|
|
|
self.REQUEST.SESSION['resultgroup'] = self.REQUEST.SESSION['results'][sres:lres] |
|
self.REQUEST.SESSION['res_indexes'] = (sres+1, lres, len(self.REQUEST.SESSION['results']), int(count)) |
|
|
print "SEARCH res:", res |
|
pt=PageTemplateFile(os.path.join(package_home(globals()), "zpt/searchResult.zpt")).__of__(self) |
pt=PageTemplateFile(os.path.join(package_home(globals()), "zpt/searchResult.zpt")).__of__(self) |
return pt() |
return pt() |
|
|
|
|
|
def getSearchType(self): |
|
"""returns the last search type""" |
|
try: |
|
ret = self.REQUEST.SESSION['searchtype'] |
|
except: |
|
ret = "" |
|
|
|
return ret |
|
|
|
def getSearchString(self): |
|
"""returns the last search string""" |
|
try: |
|
ret = self.REQUEST.SESSION['searchstring'] |
|
except: |
|
ret = "" |
|
|
|
return ret |
|
|
|
|
|
def hasNextResults(self): |
|
"""returns if there are more results""" |
|
try: |
|
(first, last, total, count) = self.REQUEST.SESSION['res_indexes'] |
|
return (first < total) |
|
except: |
|
return False |
|
|
|
def hasPrevResults(self): |
|
"""returns if there are previous results""" |
|
try: |
|
(first, last, total, count) = self.REQUEST.SESSION['res_indexes'] |
|
return (first > 1) |
|
except: |
|
return False |
|
|
|
|
|
def nextResults(self): |
|
"""returns more results""" |
|
try: |
|
(first, last, total, count) = self.REQUEST.SESSION['res_indexes'] |
|
first = first + count |
|
last = last + count |
|
if first > total: |
|
first = total |
|
if last > total: |
|
last = total |
|
except: |
|
print "OUCH: no next results: ", first, last, total, count |
|
|
|
return self.search(start=first, count=count) |
|
|
|
|
|
def prevResults(self): |
|
"""returns more results""" |
|
try: |
|
(first, last, total, count) = self.REQUEST.SESSION['res_indexes'] |
|
first = first - count |
|
last = last - count |
|
if first < 1: |
|
first = 1 |
|
if last < 1: |
|
last = 1 |
|
except: |
|
print "OUCH: no prev results: ", first, last, total, count |
|
|
|
|
|
return self.search(start=first, count=count) |
|
|
|
|
|
|
def manage_AddOSAS_searchForm(self): |
def manage_AddOSAS_searchForm(self): |
"""create Search form""" |
"""create Search form""" |
Line 230 class AnyResult(SearchResult):
|
Line 320 class AnyResult(SearchResult):
|
def __init__(self, zope, db_result, rank): |
def __init__(self, zope, db_result, rank): |
"""returns a catch-all type result""" |
"""returns a catch-all type result""" |
SearchResult.__init__(self, type='unknown') |
SearchResult.__init__(self, type='unknown') |
print "NEW ANY RESULT!" |
#print "NEW ANY RESULT!" |
|
|
self.zptFile = os.path.join(package_home(globals()), "zpt/searchResult_any.zpt") |
self.zptFile = os.path.join(package_home(globals()), "zpt/searchResult_any.zpt") |
|
|
Line 252 class AnyResult(SearchResult):
|
Line 342 class AnyResult(SearchResult):
|
def render(self, zope): |
def render(self, zope): |
"""render this result object""" |
"""render this result object""" |
zope.REQUEST.SESSION['result'] = self |
zope.REQUEST.SESSION['result'] = self |
print "renderender...", self |
|
pt=PageTemplateFile(self.zptFile).__of__(zope) |
pt=PageTemplateFile(self.zptFile).__of__(zope) |
return pt() |
return pt() |
|
|
Line 263 class MetaResult(AnyResult):
|
Line 352 class MetaResult(AnyResult):
|
def __init__(self, zope, db_result, rank): |
def __init__(self, zope, db_result, rank): |
"""contructor""" |
"""contructor""" |
AnyResult.__init__(self, zope, db_result, rank) |
AnyResult.__init__(self, zope, db_result, rank) |
print "NEW META RESULT!" |
#print "NEW META RESULT!" |
|
|
(fileid, tagidx, tags, content) = db_result |
(fileid, tagidx, tags, content) = db_result |
|
|
Line 293 class BibResult(MetaResult):
|
Line 382 class BibResult(MetaResult):
|
def __init__(self, zope, db_result, rank): |
def __init__(self, zope, db_result, rank): |
"""constructor""" |
"""constructor""" |
MetaResult.__init__(self, zope, db_result, rank) |
MetaResult.__init__(self, zope, db_result, rank) |
print "NEW BIB RESULT!" |
#print "NEW BIB RESULT!" |
self.type = "bib" |
self.type = "bib" |
self.zptFile = os.path.join(package_home(globals()), "zpt/searchResult_bib.zpt") |
self.zptFile = os.path.join(package_home(globals()), "zpt/searchResult_bib.zpt") |
self.url = urlForFile(self.file) |
self.url = urlForFile(self.file) |
Line 343 class ArchimResult(MetaResult):
|
Line 432 class ArchimResult(MetaResult):
|
def __init__(self, zope, db_result, rank): |
def __init__(self, zope, db_result, rank): |
"""constructor""" |
"""constructor""" |
MetaResult.__init__(self, zope, db_result, rank) |
MetaResult.__init__(self, zope, db_result, rank) |
print "NEW ARCHIM RESULT!" |
#print "NEW ARCHIM RESULT!" |
self.type = "archim" |
self.type = "archim" |
self.zptFile = os.path.join(package_home(globals()), "zpt/searchResult_archim.zpt") |
self.zptFile = os.path.join(package_home(globals()), "zpt/searchResult_archim.zpt") |
self.url = urlForFile(self.file) |
self.url = urlForFile(self.file) |