예제 #1
0
def search(request):
    
    if ('q' in request.GET) and request.GET['q'].strip():
        
        query_string = request.GET['q']
        
        entry_query = get_query(query_string, ['name', 'description',])
        project_part_list = ProjectPart.objects.select_related().filter(entry_query)
        
        entry_query = get_query(query_string, ['title', 'description',])
        question_list = Question.objects.select_related().filter(entry_query)
        
        entry_query = get_query(query_string, ['name', 'description',])
        participant_list = Participant.objects.select_related().filter(entry_query)
        
        entry_query = get_query(query_string, ['title', 'description',])
        event_list = Event.objects.select_related().filter(entry_query)
        
        document_list = search_for_documents(query_string)
        
        context = RequestContext(request, {
            'site_config': SiteConfig.objects.get_site_config(request),
            'query': query_string,
            'project_part_list': project_part_list,
            'question_list': question_list,
            'participant_list': participant_list,
            'event_list': event_list,
            'document_list': document_list,
            'q': query_string,
        })
        
        return render_to_response('search.html', context)
    else:
        return HttpResponse("An Error occured!")
예제 #2
0
def xhr_universal_search(request):
    if request.method == 'GET' and 'query' in request.GET:
        query_string = request.GET['query']
        query_string = unicode(query_string).encode('utf-8')
        
        if len(query_string) >= 4:
            entry_query = get_query(query_string, ['name',])
            p_list = list(Participant.objects.select_related().filter(entry_query)[0:10])
            
            entry_query = get_query(query_string, ['name',])
            pp_list = list(ProjectPart.objects.select_related().filter(entry_query)[0:10])
            
            entry_query = get_query(query_string, ['title',])
            q_list = list(Question.objects.select_related().filter(entry_query)[0:10])
            
            entry_query = get_query(query_string, ['title',])
            e_list = list(Event.objects.select_related().filter(entry_query)[0:10])
            
            entry_query = get_query(query_string, ['title',])
            d_list = list(Document.objects.select_related().filter(entry_query)[0:10])
            
            object_list = p_list + pp_list + q_list + e_list + d_list
        else:
            object_list = []
        
        res = {
            'values': {},
            'options': [],
        }
        print query_string
        if 'with_query_search' in request.GET:
            if len(query_string) < 4:
                option = query_string
            else:
                option = '<i class="icon-search"></i> ' + query_string
            res['values'][option] = {
                'content_type': 'query_search',
                'id': 0,
                'absolute_url': '/' + _('search_url') + '?q=' + urllib.quote_plus(query_string),
            }
            res['options'].append(option)
        
        for object in object_list:
            content_type = object.__class__.__name__.lower()
            id = object.id
            
            if not 'ommit_content_type' in request.GET or not (content_type == request.GET['ommit_content_type'] and str(id) == request.GET['ommit_id']):
                option = '<i class="' + object.get_icon_class() + '"></i> ' + unicode(object)
                res['values'][option] = {
                    'content_type': content_type,
                    'id': id,
                    'absolute_url': object.get_absolute_url(),
                }
                res['options'].append(option)
        
        mimetype = 'application/javascript'
        return HttpResponse(json.dumps(res), mimetype)
    else:
        raise Http404
예제 #3
0
def search(request):

    if ('q' in request.GET) and request.GET['q'].strip():

        query_string = request.GET['q']

        entry_query = get_query(query_string, [
            'name',
            'description',
        ])
        project_part_list = ProjectPart.objects.select_related().filter(
            entry_query)

        entry_query = get_query(query_string, [
            'title',
            'description',
        ])
        question_list = Question.objects.select_related().filter(entry_query)

        entry_query = get_query(query_string, [
            'name',
            'description',
        ])
        participant_list = Participant.objects.select_related().filter(
            entry_query)

        entry_query = get_query(query_string, [
            'title',
            'description',
        ])
        event_list = Event.objects.select_related().filter(entry_query)

        document_list = search_for_documents(query_string)

        context = RequestContext(
            request, {
                'site_config': SiteConfig.objects.get_site_config(request),
                'query': query_string,
                'project_part_list': project_part_list,
                'question_list': question_list,
                'participant_list': participant_list,
                'event_list': event_list,
                'document_list': document_list,
                'q': query_string,
            })

        return render_to_response('search.html', context)
    else:
        return HttpResponse("An Error occured!")
예제 #4
0
def document(request, document_id):
    document = get_object_or_404(Document, pk=document_id)
    comment_form_status = validate_comment_form(request)
    
    query_string = ''
    found_pages = []
    if ('q' in request.GET) and request.GET['q'].strip():
        query_string = request.GET['q']
        entry_query = get_query(query_string, ['document__title', 'content',])
        found_pages = Page.objects.select_related().filter(document=document).filter(entry_query).order_by('number')
    
    content_type = ContentType.objects.get(app_label="public_project", model="document")
    tmp_comment_list = Comment.objects.filter(commentrelation__content_type=content_type).filter(commentrelation__object_id=document.id).filter(published=True).distinct()
    print len(tmp_comment_list)
    comment_list = []
    for comment in tmp_comment_list:
        print type(comment)
        cr = comment.commentrelation_set.filter(content_type=content_type, object_id=document.id)[0]
        comment.page = cr.page
        comment_list.append(comment)
    comment_list.sort(key=lambda x:x.page)
    
    context = RequestContext(request, {
        'site_config': SiteConfig.objects.get_site_config(request),
        'site_category': SiteCategory.objects.get_or_create(category='documents')[0],
        'user_comment': get_user_comment(request),
        'document': document,
        'found_pages': found_pages,
        'comment_form_status': comment_form_status,
        'comment_list': comment_list,
        'num_total_comments': len(comment_list),
        'query_string': query_string,
    })
    return render_to_response('document.html', context)
def create_cache_entry(tag, document):
    entry_query = get_query(tag.name, ['document__title', 'content',])
    num_results = Page.objects.select_related().filter(document=document).filter(entry_query).count()
    
    if num_results > 0:
        ce = SearchTagCacheEntry()
        ce.tag = tag
        ce.document = document
        ce.num_results = num_results
        ce.save()
예제 #6
0
def document(request, document_id):
    document = get_object_or_404(Document, pk=document_id)
    comment_form_status = validate_comment_form(request)

    query_string = ''
    found_pages = []
    if ('q' in request.GET) and request.GET['q'].strip():
        query_string = request.GET['q']
        entry_query = get_query(query_string, [
            'document__title',
            'content',
        ])
        found_pages = Page.objects.select_related().filter(
            document=document).filter(entry_query).order_by('number')

    content_type = ContentType.objects.get(app_label="public_project",
                                           model="document")
    tmp_comment_list = Comment.objects.filter(
        commentrelation__content_type=content_type).filter(
            commentrelation__object_id=document.id).filter(
                published=True).distinct()
    print len(tmp_comment_list)
    comment_list = []
    for comment in tmp_comment_list:
        print type(comment)
        cr = comment.commentrelation_set.filter(content_type=content_type,
                                                object_id=document.id)[0]
        comment.page = cr.page
        comment_list.append(comment)
    comment_list.sort(key=lambda x: x.page)

    context = RequestContext(
        request, {
            'site_config':
            SiteConfig.objects.get_site_config(request),
            'site_category':
            SiteCategory.objects.get_or_create(category='documents')[0],
            'user_comment':
            get_user_comment(request),
            'document':
            document,
            'found_pages':
            found_pages,
            'comment_form_status':
            comment_form_status,
            'comment_list':
            comment_list,
            'num_total_comments':
            len(comment_list),
            'query_string':
            query_string,
        })
    return render_to_response('document.html', context)
예제 #7
0
def xhr_universal_search(request):
    if request.method == 'GET' and 'query' in request.GET:
        query_string = request.GET['query']
        
        entry_query = get_query(query_string, ['name',])
        pp_list = list(ProjectPart.objects.select_related().filter(entry_query)[0:10])
        
        entry_query = get_query(query_string, ['title',])
        q_list = list(Question.objects.select_related().filter(entry_query)[0:10])
        
        entry_query = get_query(query_string, ['name',])
        p_list = list(Participant.objects.select_related().filter(entry_query)[0:10])
        
        entry_query = get_query(query_string, ['title',])
        e_list = list(Event.objects.select_related().filter(entry_query)[0:10])
        
        entry_query = get_query(query_string, ['title',])
        d_list = list(Document.objects.select_related().filter(entry_query)[0:10])
        
        object_list = pp_list + q_list + p_list + e_list + d_list
        
        res = {
            'values': {},
            'options': [],
        }
        
        for object in object_list:
            content_type = object.__class__.__name__.lower()
            id = object.id
            
            if not (content_type == request.GET['ommit_content_type'] and str(id) == request.GET['ommit_id']):
                option = '<i class="' + object.get_icon_class() + '"></i> ' + unicode(object)
                res['values'][option] = {
                    'content_type': content_type,
                    'id': id,
                }
                res['options'].append(option)
        
        mimetype = 'application/javascript'
        return HttpResponse(json.dumps(res), mimetype)
예제 #8
0
def create_cache_entry(tag, document):
    entry_query = get_query(tag.name, [
        'document__title',
        'content',
    ])
    num_results = Page.objects.select_related().filter(
        document=document).filter(entry_query).count()

    if num_results > 0:
        ce = SearchTagCacheEntry()
        if SearchTagCacheEntry.objects.filter(document=document).filter(tag__name=tag.name).count() == 0 and \
           SearchTagCacheEntry.objects.filter(document=document).filter(tag__name=tag.name.title()).count() == 0 and \
           SearchTagCacheEntry.objects.filter(document=document).filter(tag__name=tag.name.upper()).count() == 0:
            ce.tag = tag
            ce.document = document
            ce.num_results = num_results
            ce.save()
예제 #9
0
def xhr_universal_search(request):
    if request.method == 'GET' and 'query' in request.GET:
        query_string = request.GET['query']
        query_string = unicode(query_string).encode('utf-8')

        if len(query_string) >= 4:
            entry_query = get_query(query_string, [
                'name',
            ])
            p_list = list(
                Participant.objects.select_related().filter(entry_query)[0:10])

            entry_query = get_query(query_string, [
                'name',
            ])
            pp_list = list(
                ProjectPart.objects.select_related().filter(entry_query)[0:10])

            entry_query = get_query(query_string, [
                'title',
            ])
            q_list = list(
                Question.objects.select_related().filter(entry_query)[0:10])

            entry_query = get_query(query_string, [
                'title',
            ])
            e_list = list(
                Event.objects.select_related().filter(entry_query)[0:10])

            entry_query = get_query(query_string, [
                'title',
            ])
            d_list = list(
                Document.objects.select_related().filter(entry_query)[0:10])

            object_list = p_list + pp_list + q_list + e_list + d_list
        else:
            object_list = []

        res = {
            'values': {},
            'options': [],
        }
        print query_string
        if 'with_query_search' in request.GET:
            if len(query_string) < 4:
                option = query_string
            else:
                option = '<i class="icon-search"></i> ' + query_string
            res['values'][option] = {
                'content_type':
                'query_search',
                'id':
                0,
                'absolute_url':
                '/' + _('search_url') + '?q=' +
                urllib.quote_plus(query_string),
            }
            res['options'].append(option)

        for object in object_list:
            content_type = object.__class__.__name__.lower()
            id = object.id

            if not 'ommit_content_type' in request.GET or not (
                    content_type == request.GET['ommit_content_type']
                    and str(id) == request.GET['ommit_id']):
                option = '<i class="' + object.get_icon_class(
                ) + '"></i> ' + unicode(object)
                res['values'][option] = {
                    'content_type': content_type,
                    'id': id,
                    'absolute_url': object.get_absolute_url(),
                }
                res['options'].append(option)

        mimetype = 'application/javascript'
        return HttpResponse(json.dumps(res), mimetype)
    else:
        raise Http404