Subversion Repositories SmartDukaan

Rev

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

Rev 3554 Rev 4189
Line 83... Line 83...
83
    return PromotionTracker.query.filter_by(coupon_code = coupon_code).count()
83
    return PromotionTracker.query.filter_by(coupon_code = coupon_code).count()
84
 
84
 
85
def get_rule_doc_string(rule_name):
85
def get_rule_doc_string(rule_name):
86
    imported_coupon_module = __import__("shop2020.model.v1.user.promotionrules", globals(), locals(), [rule_name])
86
    imported_coupon_module = __import__("shop2020.model.v1.user.promotionrules", globals(), locals(), [rule_name])
87
    rule = eval("imported_coupon_module." + rule_name)
87
    rule = eval("imported_coupon_module." + rule_name)
88
    print rule.__doc__
-
 
89
    return rule.__doc__
88
    return rule.__doc__
90
            
89
 
91
def close_session():
90
def close_session():
92
    if session.is_active:
91
    if session.is_active:
93
        session.close()
92
        session.close()
94
        
93
    
95
def is_alive():
94
def is_alive():
96
    try:
95
    try:
97
        session.query(Promotion.id).limit(1).one()
96
        session.query(Promotion.id).limit(1).one()
98
        return True
97
        return True
99
    except:
98
    except:
100
        return False
-
 
101
99
        return False
-
 
100
 
-
 
101
def get_item_discount_map(item_ids):
-
 
102
    
-
 
103
    discount_finder = ItemDiscountFinder()
-
 
104
    item_coupons_discounts = []
-
 
105
    
-
 
106
    catalog_client = CatalogClient().get_client()
-
 
107
    
-
 
108
    for item_id in item_ids:
-
 
109
        item = catalog_client.getItem(item_id)
-
 
110
 
-
 
111
        discounts = discount_finder.getCouponsAndDiscountsOnItem(item)
-
 
112
        
-
 
113
        for discount in discounts:
-
 
114
            item_coupons_discounts.append((item_id, discount[0], discount[1]))
-
 
115
            break
-
 
116
    
-
 
117
    return item_coupons_discounts
-
 
118
 
-
 
119
class ItemDiscountFinder:
-
 
120
    
-
 
121
    def __init__(self):
-
 
122
        self.coupon_modules = {}
-
 
123
        coupons = get_active_coupons()
-
 
124
        
-
 
125
        for coupon in coupons:
-
 
126
            if coupon.coupon_code not in ('4B@R10DER5', 'SAHOLIC4RS'):
-
 
127
                coupon_rule = coupon.promotion.rule_execution_src.strip()
-
 
128
                
-
 
129
                imported_coupon_module = __import__("shop2020.model.v1.user.promotionrules", globals(), locals(), [coupon_rule])
-
 
130
                self.coupon_modules[coupon.coupon_code] = eval("imported_coupon_module." + coupon_rule)
-
 
131
    
-
 
132
    def getCouponsAndDiscountsOnItem(self, item):
-
 
133
        discounts = []
-
 
134
        
-
 
135
        for coupon_code, coupon_rule_module in self.coupon_modules.iteritems():
-
 
136
            
-
 
137
            discount = coupon_rule_module.getDiscountOnItem(item)
-
 
138
            
-
 
139
            if discount is not None:
-
 
140
                discounts.append((coupon_code, discount))
-
 
141
            
-
 
142
        return discounts
-
 
143
102
144