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
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))
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))
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