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!")
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
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!")
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()
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 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)
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()
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