def search_project(request_data): if request_data: project_data = json.loads(request_data) project_data = putil.validate_property_posting_data(project_data,"property_json/project_search.json") putil.isolate_city_from_location(project_data) search_query = putil.generate_project_search_query(project_data) try: es = ElasticSearchController() response_data, total_records = es.search_document(["project"], search_query, project_data.get("page_number",1), project_data.get("records_per_page",40)) request_id = store_request_in_elastic_search(project_data, search_query, "Project Search") response_data = putil.get_date_diff_from_posting(response_data) response_msg = "Project found for specfied criteria" if len(response_data) else "Project not found" from_record = (project_data.get("page_number",1) - 1) * cint(project_data.get("records_per_page",40)) + 1 no_of_pages = math.ceil(flt(total_records)/project_data.get("records_per_page",40)) return { "operation":"Search", "message":response_msg , "total_records":total_records, "request_id":request_id, "records_per_page":project_data.get("records_per_page",40), "from_record":from_record , "to_record":from_record + len(response_data) - 1 if response_data else from_record + project_data.get("records_per_page",40) - 1, "data":response_data, "user_id":project_data.get("user_id"), "no_of_pages":no_of_pages } except elasticsearch.RequestError,e: raise ElasticInvalidInputFormatError(e.error) except elasticsearch.ElasticsearchException,e: raise ElasticSearchException(e.error)
def search_project(request_data): if request_data: project_data = json.loads(request_data) project_data = putil.validate_property_posting_data(project_data,"property_json/project_search.json") putil.init_for_location_or_city_creation(project_data) search_query = putil.generate_project_search_query(project_data) try: project_fields = get_project_include_fields(project_data.get("request_source", "")) exclude_list = putil.get_exclude_list_for_search(project_data.get("request_source", "")) es = ElasticSearchController() response_data, total_records = es.search_document(["project"], search_query, project_data.get("page_number",1), project_data.get("records_per_page",40), exclude_list, project_fields) if not project_data.get("request_id"): request_id = store_request_in_elastic_search(project_data, search_query, "Project Search") response_data = putil.get_date_diff_and_count_from_posting(response_data) putil.show_amenities_with_yes_status(response_data) # property_subtype_option = project_data.get("property_subtype_option","") # get_valid_property_subtype_option(response_data, property_subtype_option) if property_subtype_option else "" response_msg = "Project found for specfied criteria" if len(response_data) else "Project not found" from_record = (project_data.get("page_number",1) - 1) * cint(project_data.get("records_per_page",40)) + 1 no_of_pages = math.ceil(flt(total_records)/project_data.get("records_per_page",40)) to_record = from_record + len(response_data) - 1 if response_data else from_record + project_data.get("records_per_page",40) - 1 return { "operation":"Search", "message":response_msg , "total_records":total_records, "request_id":project_data.get("request_id") if project_data.get("request_id") else request_id, "records_per_page":project_data.get("records_per_page",40), "from_record":from_record , "to_record":to_record, "data":response_data, "user_id":project_data.get("user_id"), "no_of_pages":no_of_pages } except elasticsearch.RequestError,e: raise ElasticInvalidInputFormatError(e.error) except elasticsearch.ElasticsearchException,e: raise ElasticSearchException(e.error)