def view(request): q = request.GET.get('q') if q is not None: q = split_tags(q) error = [] tags = list(get_available_tags(q or []).values_list('name', flat=True)) if q is not None: if not q: error.append('Navedite barem jednu oznaku!') elif len(tags) != len(q): diff = set([x.lower() for x in q]) - set([x.lower() for x in tags]) error.append(u'Nepostojeć%s: %s!' % ( u'a oznaka' if len(diff) == 1 else 'e oznake', u', '.join(diff), )) kwargs = dict( show_hidden = 'show_hidden' in request.GET, quality_min = request.GET.get('quality_min'), quality_max = request.GET.get('quality_max'), difficulty_min = request.GET.get('difficulty_min'), difficulty_max = request.GET.get('difficulty_max'), ) groups_error = False if request.user.has_perm('advanced_search'): if request.GET.get('q') is not None: advanced_form = AdvancedSearchForm(request.GET, user=request.user) if advanced_form.is_valid(): kwargs['groups'] = advanced_form.cleaned_data['groups'] else: groups_error = True else: advanced_form = AdvancedSearchForm(user=request.user) else: advanced_form = None if not error: tasks = search_tasks(tags, user=request.user, **kwargs) if hasattr(tasks, 'select_related'): tasks = tasks.select_related('author', 'content') else: tasks = Task.objects.none() return render_to_response('search.html', { 'advanced_form': advanced_form, 'any': bool(request.GET), 'errors': '<br>'.join(error), 'form': SearchForm(request.GET), 'groups_error': groups_error, 'search_solved_count': bool(kwargs.get('groups')), 'tasks': tasks, 'tags': tags, }, context_instance=RequestContext(request))
def show_news(context, div_class=None, title=None): news = search_tasks(['news'], user=context['user'], no_hidden_check=True) news = news.order_by('-id') return { 'news': news, 'div_class': div_class, 'title': title, 'user': context['user'], }
def assertSearchTask(self, query, results): self.assertEqual(set(search_tasks(query)), set(results))