コード例 #1
0
ファイル: views.py プロジェクト: iniForum/tendenci
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
                          })
コード例 #2
0
ファイル: views.py プロジェクト: ediaz1/tendenci
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)
    )
コード例 #3
0
ファイル: views.py プロジェクト: alirizakeles/tendenci
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)
    )
コード例 #4
0
ファイル: views.py プロジェクト: pfreal/tendenci
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))
コード例 #5
0
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)
    )