Changeset 4475


Ignore:
Timestamp:
28 Jul 2009, 15:37:25 (15 years ago)
Author:
uli
Message:

Start first real catalog implementations. This is obviously work in
progress.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • waeup/branches/ulif-rewrite/src/waeup/catalog.py

    r4472 r4475  
    4242
    4343     code = index.Field(attribute='code')
    44      title = index.Field(attribute='title')
     44     title = index.Text(attribute='title')
    4545
    4646
     
    6767     index = cat['code']
    6868     index.index_doc(intids.getId(obj), obj)
     69
     70
     71from zope.interface import Interface
     72from zope import schema
     73
     74class IQueryResultItem(Interface):
     75     url = schema.TextLine(
     76          title = u'URL that links to the found item')
     77     title = schema.TextLine(
     78          title = u'Title displayed in search results.')
     79     description = schema.Text(
     80          title = u'Longer description of the item found.')
     81     
     82     
     83class QueryResultItem(object):
     84     grok.implements(IQueryResultItem)
     85     url = None
     86     title = None
     87     description = None
     88     
     89     def __init__(self, context, view):
     90          self.context = context
     91          self.url = view.url(context)
     92          self.title = context.title
     93          self.description = ''
     94     
     95class CourseQueryResultItem(QueryResultItem):
     96     def __init__(self, context, view):
     97          self.context = context
     98          self.url = view.url(context)
     99          self.title = "COURSE: " + context.title
     100          self.description = 'code: %s' % context.code
     101
     102
     103from waeup.viewlets import Search, MainArea
     104from hurry.query.query import Query, Text, Eq
     105
     106class SearchViewlet(grok.Viewlet):
     107     grok.viewletmanager(MainArea)
     108     grok.view(Search)
     109     grok.context(University)
     110
     111     def update(self, *args, **kw):
     112          #print "UPDATE: ", args, kw
     113          #print self.request.form
     114          form = self.request.form
     115          self.hitlist = []
     116          self.query = ''
     117          if not 'query' in form:
     118               return
     119          query = form['query']
     120          self.query = query
     121          cat = getUtility(ICatalog, name='courses_catalog')
     122          #print "CODES: ",  cat['code'].documentCount()
     123          #print "TITLES: ", cat['title'].documentCount()
     124          results = list(cat.searchResults(code=(query, query)))#
     125          #title=(query, query)))
     126          hitlist = []
     127          results = Query().searchResults(
     128               Eq(('courses_catalog', 'code'), query))
     129          for result in results:
     130               hitlist.append(CourseQueryResultItem(result, view=self.view))
     131
     132          results = Query().searchResults(
     133               Text(('courses_catalog', 'title'), query))
     134         
     135          for result in results:
     136               hitlist.append(CourseQueryResultItem(result, view=self.view))
     137
     138          self.hitlist = hitlist
Note: See TracChangeset for help on using the changeset viewer.