def search(request, template_name="jobs/search.html"): query = request.GET.get('q', None) my_pending_jobs = request.GET.get('my_pending_jobs', False) filters = get_query_filters(request.user, 'jobs.view_job') jobs = Job.objects.filter(filters).distinct() if not request.user.is_anonymous: jobs = jobs.select_related() form = JobSearchForm(request.GET) if form.is_valid(): query = form.cleaned_data.get('q') cat = form.cleaned_data.get('cat') sub_cat = form.cleaned_data.get('sub_cat') location = form.cleaned_data.get('location') skills = form.cleaned_data.get('skills') if location: jobs = jobs.filter(location__icontains=location) if skills: jobs = jobs.filter(skills__icontains=skills) if cat: jobs = jobs.filter(cat=cat) if sub_cat: jobs = jobs.filter(sub_cat=sub_cat) if query: if 'tag:' in query: tag = query.strip('tag:') jobs = jobs.filter(tags__icontains=tag) else: jobs = jobs.filter( Q(title__icontains=query) | Q(description__icontains=query)) # filter out expired and not activated if not has_perm(request.user, 'jobs.change_job'): jobs = jobs.filter(activation_dt__lte=datetime.now(), expiration_dt__gt=datetime.now()) else: jobs = Job.objects.none() # filter for "my pending jobs" if my_pending_jobs and not request.user.is_anonymous: template_name = "jobs/my_pending_jobs.html" jobs = jobs.filter(creator_username=request.user.username, status_detail__contains='pending') jobs = jobs.order_by('list_type', '-post_dt', '-update_dt') EventLog.objects.log() return render_to_resp(request=request, template_name=template_name, context={ 'jobs': jobs, 'form': form })
def search(request, template_name="jobs/search.html"): query = request.GET.get('q', None) my_pending_jobs = request.GET.get('my_pending_jobs', False) category = None subcategory = None use_search_index = get_setting('site', 'global', 'searchindex') and query if use_search_index: jobs = Job.objects.search(query, user=request.user) else: filters = get_query_filters(request.user, 'jobs.view_job') jobs = Job.objects.filter(filters).distinct() if not request.user.is_anonymous(): jobs = jobs.select_related() form = JobSearchForm(request.GET) if form.is_valid(): query = form.cleaned_data.get('q') category = form.cleaned_data.get('categories') subcategory = form.cleaned_data.get('subcategories') if category: jobs = jobs.filter(categories__category=category) if subcategory: jobs = jobs.filter(categories__parent=subcategory) # filter for "my pending jobs" if my_pending_jobs and not request.user.is_anonymous(): template_name = "jobs/my_pending_jobs.html" jobs = jobs.filter( creator_username=request.user.username, status_detail__contains='pending' ) if use_search_index: # reversing is an all-or-nothing action in Whoosh, unfortunately jobs = jobs.order_by('-status_detail', '-list_type', '-post_dt') else: jobs = jobs.order_by('status_detail', 'list_type', '-post_dt') EventLog.objects.log() return render_to_response( template_name, {'jobs': jobs, 'form': form}, context_instance=RequestContext(request) )
def search(request, template_name="jobs/search.html"): query = request.GET.get('q', None) my_pending_jobs = request.GET.get('my_pending_jobs', False) filters = get_query_filters(request.user, 'jobs.view_job') jobs = Job.objects.filter(filters).distinct() if not request.user.is_anonymous(): jobs = jobs.select_related() form = JobSearchForm(request.GET) if form.is_valid(): query = form.cleaned_data.get('q') category = form.cleaned_data.get('categories') subcategory = form.cleaned_data.get('subcategories') if category: jobs = jobs.filter(categories__category=category) if subcategory: jobs = jobs.filter(categories__parent=subcategory) if query: if 'tag:' in query: tag = query.strip('tag:') jobs = jobs.filter(tags__icontains=tag) else: jobs = jobs.filter( Q(title__icontains=query) | Q(description__icontains=query)) # filter for "my pending jobs" if my_pending_jobs and not request.user.is_anonymous(): template_name = "jobs/my_pending_jobs.html" jobs = jobs.filter(creator_username=request.user.username, status_detail__contains='pending') jobs = jobs.order_by('list_type', '-post_dt', '-update_dt') EventLog.objects.log() return render_to_response(template_name, { 'jobs': jobs, 'form': form }, context_instance=RequestContext(request))
def search(request, template_name="jobs/search.html"): query = request.GET.get('q', None) my_pending_jobs = request.GET.get('my_pending_jobs', False) filters = get_query_filters(request.user, 'jobs.view_job') jobs = Job.objects.filter(filters).distinct() if not request.user.is_anonymous(): jobs = jobs.select_related() form = JobSearchForm(request.GET) if form.is_valid(): query = form.cleaned_data.get('q') category = form.cleaned_data.get('categories') subcategory = form.cleaned_data.get('subcategories') if category: jobs = jobs.filter(categories__category=category) if subcategory: jobs = jobs.filter(categories__parent=subcategory) if query: if 'tag:' in query: tag = query.strip('tag:') jobs = jobs.filter(tags__icontains=tag) else: jobs = jobs.filter(Q(title__icontains=query) | Q(description__icontains=query)) # filter for "my pending jobs" if my_pending_jobs and not request.user.is_anonymous(): template_name = "jobs/my_pending_jobs.html" jobs = jobs.filter( creator_username=request.user.username, status_detail__contains='pending' ) jobs = jobs.order_by('list_type', '-post_dt') EventLog.objects.log() return render_to_response( template_name, {'jobs': jobs, 'form': form}, context_instance=RequestContext(request) )