Subversion Repositories SmartDukaan

Rev

Rev 19280 | Rev 19292 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 19280 Rev 19288
Line 1... Line 1...
1
from bson.objectid import ObjectId
1
from bson.objectid import ObjectId
2
from datetime import datetime, timedelta
2
from datetime import datetime, timedelta
3
from dtr.config import PythonPropertyReader
3
from dtr.config import PythonPropertyReader
4
from dtr.dao import FeaturedDeals, AppTransactions, AppOfferObj
4
from dtr.dao import FeaturedDeals, AppTransactions, AppOfferObj, Promotion
5
from dtr.storage import DataService
5
from dtr.storage import DataService
6
from dtr.storage.DataService import price_preferences, brand_preferences, \
6
from dtr.storage.DataService import price_preferences, brand_preferences, \
7
    user_actions, Brands, app_offers, approved_app_transactions, user_app_cashbacks, \
7
    user_actions, Brands, app_offers, approved_app_transactions, user_app_cashbacks, \
8
    user_app_installs, appmasters, notification_campaigns
8
    user_app_installs, appmasters, notification_campaigns
9
from dtr.storage.MemCache import MemCache
9
from dtr.storage.MemCache import MemCache
Line 620... Line 620...
620
            
620
            
621
    for rank in blockedRanksAccessories:
621
    for rank in blockedRanksAccessories:
622
        if blockedInfoAccessories.get((featuredDealsAccessories.get(rank+1)).get('skuBundleId')) is not None:
622
        if blockedInfoAccessories.get((featuredDealsAccessories.get(rank+1)).get('skuBundleId')) is not None:
623
            rankMapAccessories[rank] = blockedInfoAccessories.get((featuredDealsAccessories.get(rank+1)).get('skuBundleId'))
623
            rankMapAccessories[rank] = blockedInfoAccessories.get((featuredDealsAccessories.get(rank+1)).get('skuBundleId'))
624
    
624
    
-
 
625
    specialOffer = None
-
 
626
    promoOffer = get_mongo_connection().Catalog.PromoOffer.find_one({'user_id':userId})
-
 
627
    try:
-
 
628
        if promoOffer is not None:
-
 
629
            offer = get_mongo_connection().Catalog.Promotions.find_one({'_id':promoOffer.get('offer_id')})
-
 
630
            if offer is None:
-
 
631
                raise
-
 
632
            promo = Promotion(offer.get('offer_id'),offer.get('offer_name'),offer.get('offer_description') , offer.get('categories_applicable'), offer.get('sub_categories_not_applicable'),
-
 
633
                     offer.get('startDate'), offer.get('endDate'), promoOffer.get('target1'), promoOffer.get('target1_cash_back_percetage'), promoOffer.get('target2'), promoOffer.get('target2_cash_back_percetage'), promoOffer.get('maxCashBack'),offer.get('url'))
-
 
634
    
-
 
635
            specialOffer = promo
-
 
636
    except:
-
 
637
        pass
-
 
638
    
625
    
639
    
626
    mem_cache_val = {3:mobile_deals, 5:tablet_deals, 6: accessories_deals,"3_rankMap": rankMapMobiles,"5_rankMap": rankMapTablets,"6_rankMap": rankMapAccessories }
640
    mem_cache_val = {3:mobile_deals, 5:tablet_deals, 6: accessories_deals,"3_rankMap": rankMapMobiles,"5_rankMap": rankMapTablets,"6_rankMap": rankMapAccessories, "specialOffer":specialOffer }
627
    mc.set(str(userId), mem_cache_val)
641
    mc.set(str(userId), mem_cache_val)
628
    
642
    
629
 
643
 
630
def __populateFeaturedDeals():
644
def __populateFeaturedDeals():
631
    print "Populating featured deals....."
645
    print "Populating featured deals....."
Line 667... Line 681...
667
        d_object = list(get_mongo_connection().Catalog.DealObject.find({'_id':dealObject['_id']}))
681
        d_object = list(get_mongo_connection().Catalog.DealObject.find({'_id':dealObject['_id']}))
668
        if len(d_object) == 0:
682
        if len(d_object) == 0:
669
            continue
683
            continue
670
        for category_id, rank  in dealObject['otherInfo'].iteritems():
684
        for category_id, rank  in dealObject['otherInfo'].iteritems():
671
            d_object[0]['dealObject'] = 1
685
            d_object[0]['dealObject'] = 1
672
            f_deal = {'rank':rank,'category_id':int(category_id),'object':d_object[0]}
686
            f_deal = {'rank':rank,'category_id':int(category_id),'object':d_object[0],'offer_id':dealObject.get('offer_id')}
673
            if f_deal['category_id'] == 3:
687
            if f_deal['category_id'] == 3:
674
                featuredDealObjectMobiles[rank] = f_deal
688
                featuredDealObjectMobiles[rank] = f_deal
675
            elif f_deal['category_id']==5:
689
            elif f_deal['category_id']==5:
676
                featuredDealObjectTablets[rank] = f_deal
690
                featuredDealObjectTablets[rank] = f_deal
677
            elif f_deal['category_id']==6:
691
            elif f_deal['category_id']==6:
Line 761... Line 775...
761
                fd_dealObject = mc.get("featured_deals_deal_object")
775
                fd_dealObject = mc.get("featured_deals_deal_object")
762
        
776
        
763
    else:
777
    else:
764
        rankMap = {}
778
        rankMap = {}
765
    
779
    
-
 
780
    
-
 
781
    specialOffer = user_specific_deals.get('specialOffer')
-
 
782
    
766
    for dealList in [rankMap.get(k, []) for k in range(offset, offset+limit)]:
783
    for dealList in [rankMap.get(k, []) for k in range(offset, offset+limit)]:
767
        if filterData is None:
784
        if filterData is None:
768
            while(True):
785
            while(True):
769
                
786
                
770
                rankCounter = rankCounter+1
787
                rankCounter = rankCounter+1
771
                if (fd_dealObject.get(category_id).get(rankCounter)) is not None:
788
                if (fd_dealObject.get(category_id).get(rankCounter)) is not None:
-
 
789
                    if (fd_dealObject.get(category_id).get(rankCounter).get('offer_id') !=0):
-
 
790
                        #Check whether user can see offer
-
 
791
                        if specialOffer is None:
-
 
792
                            continue
772
                    deal_object_temp = []
793
                    deal_object_temp = []
773
                    deal_object_temp.append(fd_dealObject.get(category_id).get(rankCounter).get('object'))
794
                    deal_object_temp.append(fd_dealObject.get(category_id).get(rankCounter).get('object'))
774
                    dealsListMap.append(deal_object_temp)
795
                    dealsListMap.append(deal_object_temp)
775
                else:
796
                else:
776
                    break
797
                    break
Line 904... Line 925...
904
                elif item[0]['cash_back_type'] ==2:
925
                elif item[0]['cash_back_type'] ==2:
905
                    item[0]['netPriceAfterCashBack'] = item[0]['available_price'] -  math.floor(item[0]['cash_back'])
926
                    item[0]['netPriceAfterCashBack'] = item[0]['available_price'] -  math.floor(item[0]['cash_back'])
906
                else:
927
                else:
907
                    item[0]['netPriceAfterCashBack'] = item[0]['available_price']
928
                    item[0]['netPriceAfterCashBack'] = item[0]['available_price']
908
            
929
            
-
 
930
            if specialOffer is not None:
-
 
931
                if item[0]['category_id'] in specialOffer.categories_applicable and item[0]['subCategoryId'] not in specialOffer.sub_categories_not_applicable:
-
 
932
                    item[0]['specialOffer'] = specialOffer.__dict__
-
 
933
            else:
-
 
934
                item[0]['specialOffer'] = {}
-
 
935
            
909
            temp.append(item[0])
936
            temp.append(item[0])
910
        if len(temp) > 1:
937
        if len(temp) > 1:
911
            temp = sorted(temp, key = lambda x: (x['available_price']),reverse=False)
938
            temp = sorted(temp, key = lambda x: (x['available_price']),reverse=False)
912
        dealsListMap.append(temp)
939
        dealsListMap.append(temp)
913
    return dealsListMap
940
    return dealsListMap
Line 2669... Line 2696...
2669
        else:
2696
        else:
2670
            item[0]['netPriceAfterCashBack'] = item[0]['available_price']
2697
            item[0]['netPriceAfterCashBack'] = item[0]['available_price']
2671
        
2698
        
2672
    return item[0]
2699
    return item[0]
2673
 
2700
 
-
 
2701
def getOfferForUser(userId):
-
 
2702
    specialOffer = {}
-
 
2703
    promoOffer = get_mongo_connection().Catalog.PromoOffer.find_one({'user_id':userId})
-
 
2704
    try:
-
 
2705
        if promoOffer is not None:
-
 
2706
            offer = get_mongo_connection().Catalog.Promotions.find_one({'_id':promoOffer.get('offer_id')})
-
 
2707
            if offer is None:
-
 
2708
                raise
-
 
2709
            promo = Promotion(offer.get('offer_id'),offer.get('offer_name'),offer.get('offer_description') , offer.get('categories_applicable'), offer.get('sub_categories_not_applicable'),
-
 
2710
                     offer.get('startDate'), offer.get('endDate'), promoOffer.get('target1'), promoOffer.get('target1_cash_back_percetage'), promoOffer.get('target2'), promoOffer.get('target2_cash_back_percetage'), promoOffer.get('maxCashBack'), offer.get('url'))
-
 
2711
    
-
 
2712
            specialOffer = promo.__dict__
-
 
2713
    except:
-
 
2714
        pass
-
 
2715
    return specialOffer
-
 
2716
 
2674
            
2717
            
2675
def main():
2718
def main():
2676
    getDealsForSearchText("20", 'Samsung', 0, 10)
2719
    getDealsForSearchText("20", 'Samsung', 0, 10)
2677
    
2720
    
2678
if __name__=='__main__':
2721
if __name__=='__main__':