示例#1
0
文件: search.py 项目: jochengcd/gcd
def process_advanced(request):
    """
    Runs advanced searches.
    """
    form = AdvancedSearch(request.GET)
    if not form.is_valid():
        return render_to_response('gcd/search/advanced.html',
                                  { 'form': form, 'style': 'default' },
                                  context_instance=RequestContext(request))

    data = form.cleaned_data
    template = None
    context = {}
    op = str(data['method'] or 'iregex')

    try:
        stq_obj = search_stories(data, op)
        iq_obj = search_issues(data, op)
        sq_obj = search_series(data, op)
        pq_obj = search_publishers(data, op)
        query = combine_q(data, stq_obj, iq_obj, sq_obj, pq_obj)
        terms = compute_order(data)
    except SearchError, se:
        return render_to_response(
          'gcd/search/advanced.html',
          {
            'form': form,
            'style': 'default',
            'error_text': '%s' % se,
          },
          context_instance=RequestContext(request))
def do_advanced_search(request):
    """
    Runs advanced searches.
    """
    form = AdvancedSearch(request.GET)
    if not form.is_valid():
        raise ViewTerminationError(response = render_to_response(
          'gcd/search/advanced.html',
          { 'form': form },
          context_instance=RequestContext(request)))

    data = form.cleaned_data
    op = str(data['method'] or 'iregex')

    try:
        stq_obj = search_stories(data, op)
        iq_obj = search_issues(data, op)
        sq_obj = search_series(data, op)
        if data['target'] != 'brand':
            ipq_obj = search_indicia_publishers(data, op)
        else:
            ipq_obj = None
        if data['target'] != 'indicia_publisher':
            bq_obj = search_brands(data, op)
        else:
            bq_obj = None
        pq_obj = search_publishers(data, op)

        # if there are sequence searches limit to type cover
        if data['target'] == 'cover' and stq_obj != None:
            cq_obj = Q(**{ 'issue__story__type': StoryType.objects\
                                                          .get(name='cover') })
        else:
            cq_obj = None
        query = combine_q(data, stq_obj, iq_obj, sq_obj, pq_obj,
                                bq_obj, ipq_obj, cq_obj)
        terms = compute_order(data)
    except SearchError, se:
        raise ViewTerminationError, render_to_response(
          'gcd/search/advanced.html',
          {
              'form': form,
              'error_text': '%s' % se,
          },
          context_instance=RequestContext(request))
示例#3
0
文件: search.py 项目: jochengcd/gcd
def advanced_search(request):
    """Displays the advanced search page."""

    if ('target' not in request.GET):
        return render_to_response('gcd/search/advanced.html',
                                  {'form': AdvancedSearch(auto_id=True)},
                                  context_instance=RequestContext(request))
    else:
        search_values = request.GET.copy()
        search_values_as_list = dict(request.GET.lists())
        # convert a bit since MultipleChoiceField takes a list of IDs
        search_values['type'] = search_values.getlist('type')
        search_values['indexer'] = search_values.getlist('indexer')
        search_values['country'] = search_values.getlist('country')
        search_values['language'] = search_values.getlist('language')
        return render_to_response(
            'gcd/search/advanced.html',
            {'form': AdvancedSearch(initial=search_values)},
            context_instance=RequestContext(request))
示例#4
0
文件: search.py 项目: jochengcd/gcd
def advanced_search(request):
    """Displays the advanced search page."""

    if ('target' not in request.GET):
        return render_to_response('gcd/search/advanced.html',
          { 'form' : AdvancedSearch(auto_id=True), 'style' : 'default'},
          context_instance=RequestContext(request))

    if (request.GET["target"] == "stories"):
        return search_stories(request)
    else:
        return search_series(request)
示例#5
0
文件: search.py 项目: jochengcd/gcd
def do_advanced_search(request):
    """
    Runs advanced searches.
    """
    form = AdvancedSearch(request.GET)
    if not form.is_valid():
        raise ViewTerminationError(response=render_to_response(
            'gcd/search/advanced.html', {'form': form},
            context_instance=RequestContext(request)))

    data = form.cleaned_data
    op = str(data['method'] or 'iregex')

    try:
        stq_obj = search_stories(data, op)
        iq_obj = search_issues(data, op)
        sq_obj = search_series(data, op)
        ipq_obj = search_indicia_publishers(data, op)
        bq_obj = search_brands(data, op)
        pq_obj = search_publishers(data, op)

        # if there are sequence searches limit to type cover
        if data['target'] == 'cover' and stq_obj != None:
            cq_obj = Q(**{ 'issue__story__type': StoryType.objects\
                                                          .get(name='cover') })
        else:
            cq_obj = None
        query = combine_q(data, stq_obj, iq_obj, sq_obj, pq_obj, bq_obj,
                          ipq_obj, cq_obj)
        terms = compute_order(data)
    except SearchError, se:
        raise ViewTerminationError, render_to_response(
            'gcd/search/advanced.html', {
                'form': form,
                'error_text': '%s' % se,
            },
            context_instance=RequestContext(request))