def search_details_analytics(request, search_data_domain=2): if len(request.GET) > 0: domain = request.GET.get('domain', '2') form = get_form_for_domain(int(domain))(request.GET, user=request.user) if form.is_valid(): sqs = form.get_query() sqs = sqs.facet('sector_id').facet('loc_state') buyer_seller_results = sqs.facet('buyer_relevance_profile').facet('seller_relevance_profile') if int(search_data_domain) == 3: buyer_table, buyer_table_avg = get_fomrated_table(buyer_seller_results.facet_counts()['fields']['buyer_relevance_profile']) seller_table, seller_table_avg = get_fomrated_table(buyer_seller_results.facet_counts()['fields']['seller_relevance_profile']) else: buyer_table = [] buyer_table_avg = [] seller_table = [] seller_table_avg = [] # Create a control based on the params control = create_control_query(request.GET) control_form = get_form_for_domain(search_data_domain)(control, user=request.user, page_type='results') if control_form.is_valid(): control_sqs = control_form.get_query() response_dict = get_query_analytics(sqs, control_sqs, search_data_domain=int(search_data_domain)) response_dict['search_data_domain'] = int(domain) response_dict['buyer_table'] = buyer_table response_dict['seller_table'] = seller_table response_dict['buyer_table_avg'] = buyer_table_avg response_dict['seller_table_avg'] = seller_table_avg return response_dict return {}
def search_ajax(request, search_data_domain, data_url): show_analytics = False chart = None paginator = [] paginate = False # Search Request qp = QueryParser() q = request.GET.get('q') params = qp.convert_to_query(request.GET.copy(), q) search_form = get_form_for_domain(search_data_domain)(params, user=request.user) # Return the Search results with pagination if search_form.is_valid(): sqs = search_form.get_query() # Create a control based on the params control = create_control_query(params) control_form = get_form_for_domain(search_data_domain)(control, user=request.user) if control_form.is_valid(): control_sqs = control_form.get_query() # Paginate Results paginate = is_paginate(search_form) rpp = calculate_results_per_page(search_form) paginator = get_paginated_results(sqs, request, rpp) if show_analytics: chart = get_analytics_for_domain(sqs, control_sqs, search_data_domain) else: paginator = get_fake_paginator(0, 0, 1) paginate = False show_analytics = False response = { 'results_paginator': paginator, 'max_score': sqs.max_score(), 'paginate': paginate, 'chart': chart, 'show_analytics': show_analytics } # Redirect to the right page based on the data_url return response, data_url
def save_search_query(request): user = request.user search_form_data = request.GET.copy() save_search_id = search_form_data.get('adv-save_search_id', None) save_search_name = '' url = '' domain = search_form_data.get('domain', SEARCH_DATA_DOMAIN_RECORD) existing = False # Update/Create an entry on the govini_saved_search # Update if save_search_id: update_params(search_form_data) search_form = get_form_for_domain(int(domain))(search_form_data, user=request.user, prefix='adv', page_type='advance') if search_form.is_valid(): save_search = GoviniSavedSearch.objects.get(id=save_search_id) save_search.search_form_data = search_form.cleaned_data save_search.save() save_search_id = save_search.id save_search_name = save_search.name url = save_search.get_absolute_url() ds = 'domain=' index = url.find('domain') + ds.__len__() if url[index] == '&': save_search.content_type = domain save_search.save() # TODO: Return Errors #Create else: save_search_name = search_form_data.get('save_search_name') update_params(search_form_data) search_form = get_form_for_domain(int(domain))(search_form_data, user=request.user) if search_form.is_valid(): save_search = GoviniSavedSearch.objects.create(name = save_search_name, user = user, search_form_data = search_form.cleaned_data, content_type = int(domain)) save_search_id = save_search.id save_search_name = save_search.name url = save_search.get_absolute_url() return { 'save_search_id': save_search_id, 'save_search_name' : save_search_name, 'url' : url, 'existing': existing, }
def search_element_analytics_candle(request): if len(request.GET) > 0: domain = request.GET.get('domain', '2') form = get_form_for_domain(int(domain))(request.GET, user=request.user) if form.is_valid(): sqs = form.get_query() pp = False if form['show_element_cycle_analytics_bool'].value() == 'false' else True return get_query_element_chart(sqs, request, show_cycle_time=pp) return {}
def domain_facet(request): domain = request.GET.get('domain', '1') qp = QueryParser() q = request.GET.get('q') params = qp.convert_to_query(request.GET.copy(), q) search_form = get_form_for_domain(int(domain))(params, user=request.user) domain_facet = get_domain_facet(search_form, request.user, domain) return { 'domain': "%s" % domain, 'domain_facet': domain_facet }
def search_element_analytics(request): if len(request.GET) > 0: domain = request.GET.get('domain', '2') form = get_form_for_domain(int(domain))(request.GET, user=request.user) if form.is_valid(): sqs = form.get_query() sqs = sqs.facet('sector_id').facet('loc_state') pp = True if form['show_element_industry_analytics_bool'].value() == 'true' else False industry_list = str(form['industries'].value()).split(',') status_list = form.cleaned_data['element_status'] return get_query_element_analytics(sqs, show_industry=pp, industry_list=industry_list, status_list=status_list) return {}
def adv_search(request, search_data_domain, data_url, redirect_url, popup_url): fields_to_hide = ('place_of_performance') # For Silver Users and above if request.user.govini_profile.get().is_paid_subscriber(): # Save Search / Search Popup if len(request.GET) > 0: #Prepare to reload params=request.GET.copy() # TODO: Fix hacks for state and industry state_abbrv = params.get('state_abbrv', None) if state_abbrv: params['state'] = state_abbrv try: no_amount = params['no_amount'] except: no_amount = None if not no_amount or no_amount == 'True': params['no_amount'] = True elif no_amount == 'False': params['no_amount'] = False try: current_status_only = params['current_status_only'] except: current_status_only = None if not current_status_only or current_status_only == 'False': params['current_status_only'] = False elif current_status_only == 'True': params['current_status_only'] = True sector=params.getlist('sector') element_status = params.getlist('element_status') procurement_status = get_procurement_from_element(element_status) grant_status = get_grant_from_element(element_status) industry = params.getlist('industry') set_autocomplete(params) try: if procurement_status: del params['procurement_status'] except: pass try: if grant_status: del params['grant_status'] except: pass if element_status: del params['element_status'] if sector: del params['sector'] if industry: del params['industry'] else: params = extract_industry_from_industries(params) search_form = get_form_for_domain(search_data_domain)(initial=params, fields_to_hide=fields_to_hide, user=request.user, page_type='advance', prefix='adv', sector=sector, procurement_status = procurement_status, grant_status=grant_status, element_status=element_status, industry=industry) #Validate Advance Search elif len(request.POST) > 0: params = request.POST.copy() update_params(params) search_form = get_form_for_domain(search_data_domain)(params, user=request.user, fields_to_hide=fields_to_hide, page_type='advance', prefix='adv') #Redirect to Search if search_form.is_valid(): url_params = search_form.data.urlencode() url_params = convert_to_url(search_form.cleaned_data) _log.debug('Cleaned Data URL Encoding = %s' %url_params) # Cache Form data for IE browser = request.META['HTTP_USER_AGENT'] if browser.find('MSIE') > 0: request.session['search_form_type'] = SEARCH_DATA_DOMAIN_PEOPLE request.session['search_form_data'] = url_params search_url = '%s?%s' %(redirect_url, url_params) return redirect(search_url) #Return the form with errors else: _log.error('Advance Search: Form is not valid. Error = %s' %search_form.errors) # New Form else: # IE Back Button Workaround browser = request.META['HTTP_USER_AGENT'] if browser.find('MSIE') > 0: # Retrieve form Variables from session params = retrieve_params_from_session(request, SEARCH_DATA_DOMAIN_PEOPLE) if params: search_form = get_form_for_domain(search_data_domain)(params, fields_to_hide=fields_to_hide, user=request.user, page_type='advance', prefix='adv') else: # Create a new form search_form = get_form_for_domain(search_data_domain)(fields_to_hide=fields_to_hide, user=request.user, page_type='advance', prefix='adv') # Create a new form else: search_form = get_form_for_domain(search_data_domain)(fields_to_hide=fields_to_hide, user=request.user, page_type='advance', prefix='adv') #Return to original form response = { 'adv_search_form': search_form, } # Ajax Request if request.is_ajax(): return render_to_response(popup_url, response, context_instance=RequestContext(request)) else: return render_to_response(data_url, response, context_instance=RequestContext(request)) #Redirect to Home Page else: return redirect(default_view)
def search(request, search_data_domain, data_url, ajax_url): # For filtering, we will need to hide the following fields from the form fields_to_hide = ('q', 'state', 'state_abbrv', 'naics_code', 'fsc_code', 'nigp_code', 'cfda_code', 'start_amount', 'end_amount', 'city', 'county', 'industries', 'start_date', 'end_date', 'industry', 'place_of_performance', 'sector', 'last_name', 'first_name', 'none_of_these_words', 'exact_phrase', 'element_status', 'procurement_status', 'grant_status', 'no_amount', 'any_of_these_words', 'county_names', 'wo_elements', 'current_status_only', 'org_id', 'person_id') domain_facet = {} charts = {} entity_id = None quarters = [] if len(request.GET) > 0: # Retrieve the Form based on the domain # Quick Search qp = QueryParser() q = request.GET.get('q') params = qp.convert_to_query(request.GET.copy(), q) #TODO: Hack. Fix Later if 'no_amount' not in params: params['no_amount'] = True search_form = get_form_for_domain(search_data_domain)(params, fields_to_hide=fields_to_hide, user=request.user, page_type='results') _log.debug('Search Form Data = %s' % search_form.data) # For Overview and Advance Search, we will need to run the query and return the results and facets if search_form.is_valid(): sqs = search_form.get_query() quarters = quarters_range(search_form._default_query_fields.get('maxDate'), search_form._default_query_fields.get('minDate')) # Create a control based on the params control = create_control_query(params) control_form = get_form_for_domain(search_data_domain)(control, fields_to_hide=fields_to_hide, user=request.user, page_type='results') if control_form.is_valid(): control_sqs = control_form.get_query() buyer_seller_results = sqs.facet('buyer_relevance_profile').facet('seller_relevance_profile') if search_data_domain == 3: buyer_table, buyer_table_avg = get_fomrated_table(buyer_seller_results.facet_counts()['fields']['buyer_relevance_profile']) seller_table, seller_table_avg = get_fomrated_table(buyer_seller_results.facet_counts()['fields']['seller_relevance_profile']) else: buyer_table = [] buyer_table_avg = [] seller_table = [] seller_table_avg = [] # log query tasks.log_query.delay(q, request.user, search_data_domain) # Results Per Page paginate = is_paginate(search_form) rpp = calculate_results_per_page(search_form) # Facets sqs = sqs.facet('sector_id').facet('loc_state') domain = request.GET.get('domain', '1') qp = QueryParser() q = request.GET.get('q') params = qp.convert_to_query(request.GET.copy(), q) new_search_form = get_form_for_domain_facet()(params, user=request.user) domain_facet = get_domain_facet(new_search_form, request.user, search_data_domain) paginator = get_paginated_results(sqs, request, rpp) charts = get_query_analytics(sqs, control_sqs, search_data_domain) else: # For errors, no results will be displayed with empty charts _log.error('Search: Form is not valid. Error = %s' % search_form.errors) paginator = get_fake_paginator(0, 0, 1) paginate = False charts = { 'sector_chart': get_sector_analytics([]), 'sector_chart_bar': get_sector_analytics_bar([]), 'state_chart': get_state_bar_graph([]) } try: max_score = sqs.max_score() except: max_score = 1 response = { 'search_form': search_form, 'max_score': max_score, 'results_paginator': paginator, 'paginate': paginate, 'search_data_domain': search_data_domain, 'ajax_url': ajax_url, 'quarters': quarters, 'domain_facet': domain_facet, 'domain': "%s" % search_data_domain, } # Append the charts to the response response.update(charts) return response, data_url else: # Redirect back to the Home Page return redirect(default_view)