Subversion Repositories SmartDukaan

Rev

Rev 20090 | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
20080 kshitij.so 1
from walrus import *
2
from dtr.utils.utils import get_mongo_connection, REVERSE_SOURCE_MAP, CATEGORY_MAP, SUB_CATEGORY_MAP
3
import random
4
 
5
xstr = lambda s: s or ""
6
database = Database()
7
ac = database.autocomplete()
8
 
9
class Suggestion():
20090 kshitij.so 10
    def __init__(self, category_id, subCategoryId, suggestion, category_name):
20080 kshitij.so 11
        self.category_id = category_id
12
        self.subCategoryId = subCategoryId
13
        self.suggestion = suggestion
20090 kshitij.so 14
        self.category_name = category_name
20080 kshitij.so 15
 
16
 
17
def filterSuggestions(categorySuggestion):
18
    returnObj = []
19
    for cat in ('Mobiles','Tablets'):
20
        v = categorySuggestion.get(CATEGORY_MAP.get(cat))
21
        if v is not None:
22
            returnObj.append(v[0].__dict__)
20090 kshitij.so 23
            select_range = 5 if len(v[1:]) > 5 else len(v[1:]) 
20080 kshitij.so 24
            random_list = random.sample(set(v[1:]), select_range)
25
            for random_suggestion in random_list:
26
                returnObj.append(random_suggestion.__dict__)
27
            categorySuggestion.pop(CATEGORY_MAP.get(cat))
28
    for v in categorySuggestion.itervalues():
29
        returnObj.append(v[0].__dict__)
20090 kshitij.so 30
        select_range = 3 if len(v[1:]) > 3 else len(v[1:]) 
20080 kshitij.so 31
        random_list = random.sample(set(v[1:]), select_range)
32
        for random_suggestion in random_list:
33
            returnObj.append(random_suggestion.__dict__)
34
    return returnObj
35
 
36
def getSuggestions(search_text):
37
    categorySuggestion = {}
38
    results = list(ac.search(search_text))
20085 kshitij.so 39
    returnObj = []
20080 kshitij.so 40
    if len(results) > 10:
41
        """Lets group data"""
42
        for i in results:
43
            if i.get('subCategoryId'):
44
                if not categorySuggestion.has_key(i.get('subCategoryId')):
20090 kshitij.so 45
                    suggestion_obj_primary = Suggestion(i.get('category_id'),i.get('subCategoryId'),search_text,SUB_CATEGORY_MAP.get(i.get('subCategoryId')))
46
                    suggestion_obj = Suggestion(i.get('category_id'),i.get('subCategoryId'), i.get('title'),None)
20080 kshitij.so 47
                    categorySuggestion[i.get('subCategoryId')] = [suggestion_obj_primary,suggestion_obj]
48
                else:
20090 kshitij.so 49
                    suggestion_obj = Suggestion(i.get('category_id'),i.get('subCategoryId'),i.get('title'), None)
20080 kshitij.so 50
                    categorySuggestion.get(i.get('subCategoryId')).append(suggestion_obj)
51
            else:
52
                if not categorySuggestion.has_key(i.get('category_id')):
20090 kshitij.so 53
                    suggestion_obj_primary = Suggestion(i.get('category_id'),i.get('subCategoryId'),search_text, CATEGORY_MAP.get(i.get('category_id')))
54
                    suggestion_obj = Suggestion(i.get('category_id'),i.get('subCategoryId'),i.get('title'), None)
20080 kshitij.so 55
                    categorySuggestion[i.get('category_id')] = [suggestion_obj_primary, suggestion_obj]
56
                else:
20090 kshitij.so 57
                    suggestion_obj = Suggestion(i.get('category_id'),i.get('subCategoryId'),i.get('title'), None)
20080 kshitij.so 58
                    categorySuggestion.get(i.get('category_id')).append(suggestion_obj)
59
 
60
        returnObj = filterSuggestions(categorySuggestion)    
61
 
62
    else:
63
        for i in results:
20171 kshitij.so 64
            category_name = None
65
            if i.get('category_id') == 6:
66
                category_name = SUB_CATEGORY_MAP.get(i.get('subCategoryId'))
67
            elif i.get('category_id') in (3,5):
68
                category_name = CATEGORY_MAP.get(i.get('category_id'))
69
            else:
70
                pass
71
            returnObj.append({'suggestion':i.get('title'),'category_id':i.get('category_id'),'subCategoryId':i.get('subCategoryId'),'category_name':category_name})
20080 kshitij.so 72
 
73
    return returnObj
74
 
75
 
76
def main():
20171 kshitij.so 77
    print datetime.datetime.now()
78
    print getSuggestions("iph")
79
    print datetime.datetime.now()
20080 kshitij.so 80
 
81
if __name__ == "__main__":
82
    main()
83