Exemplo n.º 1
0
def search(request, template_name="articles/search.html"):
    
    filters = get_query_filters(request.user, 'articles.view_article')
    articles = Article.objects.filter(filters).distinct()
    cat = None

    if not request.user.is_anonymous():
        articles = articles.select_related()

    query = request.GET.get('q', None)
    # Handle legacy tag links
    if query and "tag:" in query:
        return HttpResponseRedirect("%s?q=%s&search_category=tags__icontains" %(reverse('articles'), query.replace('tag:', '')))

    tag = request.GET.get('tag', None)
    form = ArticleSearchForm(request.GET, is_superuser=request.user.is_superuser)

    if tag:
        articles = articles.filter(tags__icontains=tag)

    if form.is_valid():
        cat = form.cleaned_data['search_category']
        filter_date = form.cleaned_data['filter_date']
        date = form.cleaned_data['date']

        if cat in ('featured', 'syndicate'):
            articles = articles.filter(**{cat : True } )
        elif query and cat:
            articles = articles.filter( **{cat : query} )

        if filter_date and date:
            articles = articles.filter( release_dt__month=date.month, release_dt__day=date.day, release_dt__year=date.year )

    if not has_perm(request.user, 'articles.view_article'):
        if request.user.is_anonymous():
            articles = articles.filter(release_dt__lte=datetime.now())
        else:
            articles = articles.filter(Q(release_dt__lte=datetime.now()) | Q(owner=request.user) | Q(creator=request.user))

    # Query list of category and subcategory for dropdown filters
    category = request.GET.get('category')
    sub_cat = request.GET.get('sub_category')
    try:
        category = int(category)
    except:
        category = 0
    categories, sub_categories = Article.objects.get_categories(category=category)

    if category > 0:
        cat_article_ids = CategoryItem.objects.filter(content_type_id=ContentType.objects.get_for_model(Article), category_id=category, parent_id__isnull=True).values('object_id')
        articles = articles.filter(id__in=[c['object_id'] for c in cat_article_ids])

    if sub_cat:
        try:
            sub_cat = int(sub_cat)
            subcat_article_ids = CategoryItem.objects.filter(content_type_id=ContentType.objects.get_for_model(Article), parent_id=sub_cat, category_id__isnull=True).values('object_id')
            articles = articles.filter(id__in=[c['object_id'] for c in subcat_article_ids])
        except Exception, e:
            pass
Exemplo n.º 2
0
def search(request, template_name="articles/search.html"):

    filters = get_query_filters(request.user, 'articles.view_article')
    articles = Article.objects.filter(filters).distinct()
    cat = None

    if not request.user.is_anonymous():
        articles = articles.select_related()

    query = request.GET.get('q', None)
    tag = request.GET.get('tag', None)
    form = ArticleSearchForm(request.GET,
                             is_superuser=request.user.is_superuser)

    if tag:
        articles = articles.filter(tags__icontains=tag)

    if form.is_valid():
        cat = form.cleaned_data['search_category']
        filter_date = form.cleaned_data['filter_date']
        date = form.cleaned_data['date']

        if cat in ('featured', 'syndicate'):
            articles = articles.filter(**{cat: True})
        elif query and cat:
            articles = articles.filter(**{cat: query})

        if filter_date and date:
            articles = articles.filter(release_dt__month=date.month,
                                       release_dt__day=date.day,
                                       release_dt__year=date.year)

    if not has_perm(request.user, 'articles.view_article'):
        articles = articles.filter(release_dt__lte=datetime.now())

    # don't use order_by with "whoosh"
    if not query or settings.HAYSTACK_SEARCH_ENGINE.lower() != "whoosh":
        articles = articles.order_by('-release_dt')
    else:
        articles = articles.order_by('-create_dt')

    EventLog.objects.log()

    # Query list of category and subcategory for dropdown filters
    category = request.GET.get('category')
    try:
        category = int(category)
    except:
        category = 0
    categories, sub_categories = Article.objects.get_categories(
        category=category)

    return render_to_response(template_name, {
        'articles': articles,
        'categories': categories,
        'form': form,
        'sub_categories': sub_categories
    },
                              context_instance=RequestContext(request))
Exemplo n.º 3
0
def search(request, template_name="articles/search.html"):
    
    filters = get_query_filters(request.user, 'articles.view_article')
    articles = Article.objects.filter(filters).distinct()
    cat = None

    if not request.user.is_anonymous():
        articles = articles.select_related()

    query = request.GET.get('q', None)
    # Handle legacy tag links
    if query and "tag:" in query:
        return HttpResponseRedirect("%s?q=%s&search_category=tags__icontains" %(reverse('articles'), query.replace('tag:', '')))

    tag = request.GET.get('tag', None)
    form = ArticleSearchForm(request.GET, is_superuser=request.user.is_superuser)

    if tag:
        articles = articles.filter(tags__icontains=tag)

    if form.is_valid():
        cat = form.cleaned_data['search_category']
        filter_date = form.cleaned_data['filter_date']
        date = form.cleaned_data['date']

        if cat in ('featured', 'syndicate'):
            articles = articles.filter(**{cat : True } )
        elif query and cat:
            articles = articles.filter( **{cat : query} )

        if filter_date and date:
            articles = articles.filter( release_dt__month=date.month, release_dt__day=date.day, release_dt__year=date.year )

    if not has_perm(request.user, 'articles.view_article'):
        if request.user.is_anonymous():
            articles = articles.filter(release_dt__lte=datetime.now())
        else:
            articles = articles.filter(Q(release_dt__lte=datetime.now()) | Q(owner=request.user) | Q(creator=request.user))

    # don't use order_by with "whoosh"
    if not query or settings.HAYSTACK_SEARCH_ENGINE.lower() != "whoosh":
        articles = articles.order_by('-release_dt')
    else:
        articles = articles.order_by('-create_dt')

    EventLog.objects.log()

    # Query list of category and subcategory for dropdown filters
    category = request.GET.get('category')
    try:
        category = int(category)
    except:
        category = 0
    categories, sub_categories = Article.objects.get_categories(category=category)

    return render_to_response(template_name, {'articles': articles,
        'categories': categories, 'form' : form, 'sub_categories': sub_categories},
        context_instance=RequestContext(request))
Exemplo n.º 4
0
def search(request, template_name="articles/search.html"):

    filters = get_query_filters(request.user, 'articles.view_article')
    articles = Article.objects.filter(filters).distinct()
    cat = None

    if not request.user.is_anonymous():
        articles = articles.select_related()

    query = request.GET.get('q', None)
    if query:
        # Handle legacy tag links
        if "tag:" in query:
            return HttpResponseRedirect(
                "%s?q=%s&search_category=tags__icontains" %
                (reverse('articles'), query.replace('tag:', '')))

        # Handle legacy category links
        if "category:" in query or "sub_category:" in query:
            key, name = query.split(':')
            category = Category.objects.filter(name__iexact=name)
            if category.exists():
                return HttpResponseRedirect(
                    "%s?%s=%s" % (reverse('articles'), key, category[0].pk))
            else:
                return HttpResponseRedirect(reverse('articles'))

    tag = request.GET.get('tag', None)
    form = ArticleSearchForm(request.GET,
                             is_superuser=request.user.is_superuser)

    if tag:
        articles = articles.filter(tags__icontains=tag)

    if form.is_valid():
        cat = form.cleaned_data['search_category']
        filter_date = form.cleaned_data['filter_date']
        date = form.cleaned_data['date']

        if cat in ('featured', 'syndicate'):
            articles = articles.filter(**{cat: True})
        elif query and cat:
            articles = articles.filter(**{cat: query})

        if filter_date and date:
            articles = articles.filter(release_dt__month=date.month,
                                       release_dt__day=date.day,
                                       release_dt__year=date.year)

    if not has_perm(request.user, 'articles.view_article'):
        if request.user.is_anonymous():
            articles = articles.filter(release_dt_local__lte=datetime.now())
        else:
            articles = articles.filter(
                Q(release_dt_local__lte=datetime.now()) | Q(owner=request.user)
                | Q(creator=request.user))

    # Query list of category and subcategory for dropdown filters
    category = request.GET.get('category')
    sub_cat = request.GET.get('sub_category')
    try:
        category = int(category)
    except:
        category = 0
    categories, sub_categories = Article.objects.get_categories(
        category=category)

    if category > 0:
        cat_article_ids = CategoryItem.objects.filter(
            content_type_id=ContentType.objects.get_for_model(Article),
            category_id=category,
            parent_id__isnull=True).values('object_id')
        articles = articles.filter(
            id__in=[c['object_id'] for c in cat_article_ids])

    if sub_cat:
        try:
            sub_cat = int(sub_cat)
            subcat_article_ids = CategoryItem.objects.filter(
                content_type_id=ContentType.objects.get_for_model(Article),
                parent_id=sub_cat,
                category_id__isnull=True).values('object_id')
            articles = articles.filter(
                id__in=[c['object_id'] for c in subcat_article_ids])
        except Exception, e:
            pass