source: main/waeup.kofa/trunk/src/waeup/kofa/accesscodes/catalog.py

Last change on this file was 7811, checked in by uli, 13 years ago

Rename all non-locales stuff from sirp to kofa.

  • Property svn:keywords set to Id
File size: 2.7 KB
RevLine 
[7195]1## $Id: catalog.py 7811 2012-03-08 19:00:51Z uli $
2##
3## Copyright (C) 2011 Uli Fouquet & Henrik Bettermann
4## This program is free software; you can redistribute it and/or modify
5## it under the terms of the GNU General Public License as published by
6## the Free Software Foundation; either version 2 of the License, or
7## (at your option) any later version.
8##
9## This program is distributed in the hope that it will be useful,
10## but WITHOUT ANY WARRANTY; without even the implied warranty of
11## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12## GNU General Public License for more details.
13##
14## You should have received a copy of the GNU General Public License
15## along with this program; if not, write to the Free Software
16## Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
17##
[6446]18"""Cataloging and searching components for access codes.
19"""
20import grok
[6549]21from grok import index
[6450]22from hurry.query import Eq, Text
23from hurry.query.query import Query
24from zope.index.text.parsetree import ParseError
[7811]25from waeup.kofa.interfaces import IUniversity, IQueryResultItem
26from waeup.kofa.accesscodes.interfaces import IAccessCode
[6446]27
28class AccessCodeIndexes(grok.Indexes):
29    """A catalog for access codes.
30    """
31    grok.site(IUniversity)
32    grok.name('accesscodes_catalog')
33    grok.context(IAccessCode)
34
[6549]35    code = index.Field(attribute='representation')
36    history = index.Text(attribute='history')
37    batch_serial = index.Field(attribute='batch_serial')
38    state = index.Field(attribute='state')
[6450]39
40class AccessCodeQueryResultItem(object):
41    grok.implements(IQueryResultItem)
42
[6549]43    title = u'Access Code Query Item'
44    description = u'Some access code found in a search'
45
[6450]46    def __init__(self, context, view):
47        self.context = context
[6549]48        self.url = view.url(context)
[6450]49        self.code = context.representation
50        self.history = context.history
[7754]51        self.translated_state = context.translated_state
[6928]52        self.owner = context.owner
[6450]53        self.batch_serial = context.batch_serial
54
55def search(query=None, searchtype=None, view=None):
56    if not query:
57        view.flash('Empty search string.')
58        return
59    hitlist = []
[6551]60    if searchtype == 'history':
61        results = Query().searchResults(
62            Text(('accesscodes_catalog', searchtype), query))
63    elif searchtype == 'batch_serial':
[7748]64        try:
65            results = Query().searchResults(
66                Eq(('accesscodes_catalog', searchtype), int(query)))
67        except ValueError:
68            return
[6551]69    else:
70        results = Query().searchResults(
71            Eq(('accesscodes_catalog', searchtype), query))
72    for result in results:
73        hitlist.append(AccessCodeQueryResultItem(result, view=view))
[6450]74    return hitlist
Note: See TracBrowser for help on using the repository browser.