예제 #1
0
 def test_get_content_types_does_caching(self):
     self._setupContentTypes()
     from repoze.lemonade.tests.fixtureapp import content
     from repoze.lemonade.content import get_content_types
     from repoze.lemonade.interfaces import IContentTypeCache
     from zope.interface import implements
     from zope.component import getSiteManager
     class Fred:
         implements(content.IBar)
     fred = Fred()
     get_content_types(fred)
     sm = getSiteManager()
     cache = sm.getUtility(IContentTypeCache)
     self.failUnless(content.IBar in cache)
예제 #2
0
    def test_get_content_types_does_caching(self):
        self._setupContentTypes()
        from repoze.lemonade.tests.fixtureapp import content
        from repoze.lemonade.content import get_content_types
        from repoze.lemonade.interfaces import IContentTypeCache
        from zope.interface import implements
        from zope.component import getSiteManager

        class Fred:
            implements(content.IBar)

        fred = Fred()
        get_content_types(fred)
        sm = getSiteManager()
        cache = sm.getUtility(IContentTypeCache)
        self.failUnless(content.IBar in cache)
예제 #3
0
 def test_get_content_types_nocontext(self):
     self._setupContentTypes()
     from repoze.lemonade.tests.fixtureapp import content
     from repoze.lemonade.content import get_content_types
     types = sorted(get_content_types())
     self.assertEqual(len(types), 2)
     self.assertEqual(types, [content.IBar, content.IFoo])
예제 #4
0
def advancedsearch_view(context, request):

    page_title = 'Advanced Search'
    api = request.api
    api.page_title = page_title

    type_choices = []
    for t in get_content_types():
        if t.queryTaggedValue('search_option', False):
            # this content type should be on the list of types to search
            iid = interface_id(t)
            name = t.queryTaggedValue('name', iid)
            type_choices.append((name, iid))
    type_choices.sort()

    this_year = datetime.datetime.now().year
    year_choices = [str(i) for i in range(2007, this_year+1)]
    topic_choices = get_topic_options(context)
    return dict(
        api=api,
        post_url=model_url(context, request, "searchresults.html"),
        topic_choices=topic_choices,
        type_choices=type_choices,
        year_choices=year_choices,
        )
예제 #5
0
 def test_get_content_types_nocontext(self):
     self._setupContentTypes()
     from repoze.lemonade.tests.fixtureapp import content
     from repoze.lemonade.content import get_content_types
     types =sorted(get_content_types())
     self.assertEqual(len(types), 2)
     self.assertEqual(types, [content.IBar, content.IFoo])
예제 #6
0
 def test_functional_with_get_content_types(self):
     from repoze.lemonade.testing import registerContentFactory
     from repoze.lemonade.content import get_content_types
     from zope.interface import Interface
     class IFoo(Interface):
         pass
     class Foo:
         def __init__(self, arg): self.arg = arg
     registerContentFactory(Foo, IFoo)
     self.assertEqual(get_content_types(), [IFoo])
예제 #7
0
 def test_get_content_types_context(self):
     self._setupContentTypes()
     from repoze.lemonade.tests.fixtureapp import content
     from repoze.lemonade.content import get_content_types
     from zope.interface import implements
     class Fred:
         implements(content.IBar)
     fred = Fred()
     types = get_content_types(fred)
     self.assertEqual(len(types), 1)
     self.assertEqual(types, [content.IBar])
예제 #8
0
    def test_get_content_types_context(self):
        self._setupContentTypes()
        from repoze.lemonade.tests.fixtureapp import content
        from repoze.lemonade.content import get_content_types
        from zope.interface import implements

        class Fred:
            implements(content.IBar)

        fred = Fred()
        types = get_content_types(fred)
        self.assertEqual(len(types), 1)
        self.assertEqual(types, [content.IBar])
예제 #9
0
    def test_functional_with_get_content_types(self):
        from repoze.lemonade.testing import registerContentFactory
        from repoze.lemonade.content import get_content_types
        from zope.interface import Interface

        class IFoo(Interface):
            pass

        class Foo:
            def __init__(self, arg):
                self.arg = arg

        registerContentFactory(Foo, IFoo)
        self.assertEqual(get_content_types(), [IFoo])
예제 #10
0
파일: search.py 프로젝트: boothead/karl
def make_query(context, request):
    """Given a search request, return a catalog query and a list of terms.
    """
    params = request.params
    query = {}
    terms = []
    body = params.get("body")
    if body:
        query["texts"] = body
        query["sort_index"] = "texts"
        terms.append(body)

    creator = params.get("creator")
    if creator:
        userids = list(_iter_userids(context, request, creator))
        query["creator"] = {"query": userids, "operator": "or"}
        terms.append(creator)

    types = params.getall("types")
    if types:
        type_dict = {}
        for t in get_content_types():
            type_dict[interface_id(t)] = t
        ifaces = [type_dict[name] for name in types]
        query["interfaces"] = {"query": ifaces, "operator": "or"}
        terms.extend(iface.getTaggedValue("name") for iface in ifaces)
    else:
        query["interfaces"] = [IContent]

    tags = params.getall("tags")
    if tags:
        query["tags"] = {"query": tags, "operator": "or"}
        terms.extend(tags)

    year = params.get("year")
    if year:
        year = int(year)
        begin = coarse_datetime_repr(datetime.datetime(year, 1, 1))
        end = coarse_datetime_repr(datetime.datetime(year, 12, 31, 12, 59, 59))
        query["creation_date"] = (begin, end)
        terms.append(year)

    return query, terms
예제 #11
0
파일: search.py 프로젝트: boothead/karl
def advancedsearch_view(context, request):

    page_title = "Advanced Search"
    api = TemplateAPI(context, request, page_title)

    type_choices = []
    for t in get_content_types():
        if t.queryTaggedValue("search_option", False):
            # this content type should be on the list of types to search
            iid = interface_id(t)
            name = t.queryTaggedValue("name", iid)
            type_choices.append((name, iid))
    type_choices.sort()

    this_year = datetime.datetime.now().year
    year_choices = [str(i) for i in range(2007, this_year + 1)]

    return render_template_to_response(
        "templates/advancedsearch.pt",
        api=api,
        post_url=model_url(context, request, "searchresults.html"),
        type_choices=type_choices,
        year_choices=year_choices,
    )
예제 #12
0
 def test_factory_register(self):
     from repoze.lemonade.content import get_content_types
     assert(self._target_marker_interface in get_content_types())
 def test_factory_register(self):
     from repoze.lemonade.content import get_content_types
     self.assert_(self._target_marker_interface in get_content_types())
예제 #14
0
def make_query(context, request, search_interfaces=[]):
    """Given a search request, return a catalog query and a list of terms.
    """
    params = request.params
    query = {}
    terms = []
    body = params.get('body')
    if body:
        query['texts'] = body
        query['sort_index'] = 'texts'
        terms.append(body)

    creator = params.get('creator')
    if creator:
        userids = list(_iter_userids(context, request, creator))
        query['creator'] = {
            'query': userids,
            'operator': 'or',
            }
        terms.append(creator)

    types = params.getall('types')
    if types:
        type_dict = {}
        for t in get_content_types():
            type_dict[interface_id(t)] = t
        ifaces = [type_dict[name] for name in types]
        query['interfaces'] = {
            'query': ifaces,
            'operator': 'or',
            }
        terms.extend(iface.getTaggedValue('name') for iface in ifaces)
    else:
        query['interfaces'] = {
            'query': search_interfaces,
            'operator': 'or'
            }

    tags = params.getall('tags')
    if tags:
        query['tags'] = {
            'query': tags,
            'operator': 'or',
            }
        terms.extend(tags)

    topics = params.getall('topics')
    if topics:
        query['topics'] = {
            'query': topics,
            'operator': 'or',
            }
        terms.extend(topics)

    year = params.get('year')
    if year:
        year = int(year)
        begin = coarse_datetime_repr(datetime.datetime(year, 1, 1))
        end = coarse_datetime_repr(datetime.datetime(year, 12, 31, 12, 59, 59))
        query['creation_date'] = (begin, end)
        terms.append(year)

    return query, terms