Rev 20090 | Blame | Compare with Previous | Last modification | View Log | RSS feed
from walrus import *from dtr.utils.utils import get_mongo_connection, REVERSE_SOURCE_MAP, CATEGORY_MAP, SUB_CATEGORY_MAPimport randomxstr = lambda s: s or ""database = Database()ac = database.autocomplete()class Suggestion():def __init__(self, category_id, subCategoryId, suggestion, category_name):self.category_id = category_idself.subCategoryId = subCategoryIdself.suggestion = suggestionself.category_name = category_namedef filterSuggestions(categorySuggestion):returnObj = []for cat in ('Mobiles','Tablets'):v = categorySuggestion.get(CATEGORY_MAP.get(cat))if v is not None:returnObj.append(v[0].__dict__)select_range = 5 if len(v[1:]) > 5 else len(v[1:])random_list = random.sample(set(v[1:]), select_range)for random_suggestion in random_list:returnObj.append(random_suggestion.__dict__)categorySuggestion.pop(CATEGORY_MAP.get(cat))for v in categorySuggestion.itervalues():returnObj.append(v[0].__dict__)select_range = 3 if len(v[1:]) > 3 else len(v[1:])random_list = random.sample(set(v[1:]), select_range)for random_suggestion in random_list:returnObj.append(random_suggestion.__dict__)return returnObjdef getSuggestions(search_text):categorySuggestion = {}results = list(ac.search(search_text))returnObj = []if len(results) > 10:"""Lets group data"""for i in results:if i.get('subCategoryId'):if not categorySuggestion.has_key(i.get('subCategoryId')):suggestion_obj_primary = Suggestion(i.get('category_id'),i.get('subCategoryId'),search_text,SUB_CATEGORY_MAP.get(i.get('subCategoryId')))suggestion_obj = Suggestion(i.get('category_id'),i.get('subCategoryId'), i.get('title'),None)categorySuggestion[i.get('subCategoryId')] = [suggestion_obj_primary,suggestion_obj]else:suggestion_obj = Suggestion(i.get('category_id'),i.get('subCategoryId'),i.get('title'), None)categorySuggestion.get(i.get('subCategoryId')).append(suggestion_obj)else:if not categorySuggestion.has_key(i.get('category_id')):suggestion_obj_primary = Suggestion(i.get('category_id'),i.get('subCategoryId'),search_text, CATEGORY_MAP.get(i.get('category_id')))suggestion_obj = Suggestion(i.get('category_id'),i.get('subCategoryId'),i.get('title'), None)categorySuggestion[i.get('category_id')] = [suggestion_obj_primary, suggestion_obj]else:suggestion_obj = Suggestion(i.get('category_id'),i.get('subCategoryId'),i.get('title'), None)categorySuggestion.get(i.get('category_id')).append(suggestion_obj)returnObj = filterSuggestions(categorySuggestion)else:for i in results:category_name = Noneif i.get('category_id') == 6:category_name = SUB_CATEGORY_MAP.get(i.get('subCategoryId'))elif i.get('category_id') in (3,5):category_name = CATEGORY_MAP.get(i.get('category_id'))else:passreturnObj.append({'suggestion':i.get('title'),'category_id':i.get('category_id'),'subCategoryId':i.get('subCategoryId'),'category_name':category_name})return returnObjdef main():print datetime.datetime.now()print getSuggestions("iph")print datetime.datetime.now()if __name__ == "__main__":main()