Subversion Repositories SmartDukaan

Rev

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

Rev 15793 Rev 16371
Line 15... Line 15...
15
import mechanize
15
import mechanize
16
import time
16
import time
17
import traceback
17
import traceback
18
import urllib
18
import urllib
19
import urllib2
19
import urllib2
20
sourceMap = {1:"amazon", 2:"flipkart", 3:"snapdeal", 4:"spice", 5:"shopclues"}
20
sourceMap = {1:"amazon", 2:"flipkart", 3:"snapdeal", 4:"spice", 5:"shopclues", 6:"paytm"}
21
headers = { 
21
headers = { 
22
           'User-agent':'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/535.11 (KHTML, like Gecko) Chrome/17.0.963.56 Safari/535.11',
22
           'User-agent':'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/535.11 (KHTML, like Gecko) Chrome/17.0.963.56 Safari/535.11',
23
            'Accept' : 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',      
23
            'Accept' : 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',      
24
            'Accept-Language' : 'en-US,en;q=0.8',                     
24
            'Accept-Language' : 'en-US,en;q=0.8',                     
25
            'Accept-Charset' : 'ISO-8859-1,utf-8;q=0.7,*;q=0.3'
25
            'Accept-Charset' : 'ISO-8859-1,utf-8;q=0.7,*;q=0.3'
Line 102... Line 102...
102
        raise NotImplementedError
102
        raise NotImplementedError
103
    
103
    
104
    def saveToAffiliate(self, offers):
104
    def saveToAffiliate(self, offers):
105
        raise NotImplementedError
105
        raise NotImplementedError
106
    
106
    
107
    def getUpdateMap(self, subOrder):
107
    def getUpdateMap(self, subOrder, cashBackStatus):
108
        updateMap = {}
108
        updateMap = {}
109
        closed = False
109
        closed = False
110
        for (key,value) in subOrder.iteritems():
110
        for (key,value) in subOrder.iteritems():
111
            if key=="status":
111
            if key=="status":
112
                if value==Store.ORDER_CANCELLED:
112
                if value==Store.ORDER_CANCELLED:
113
                    closed = True
113
                    closed = True
114
                    updateMap['subOrders.$.closed'] = True
114
                    updateMap['subOrders.$.closed'] = True
115
                    if subOrder['cashBackStatus'] == Store.CB_PENDING:
115
                    if cashBackStatus == Store.CB_PENDING:
116
                        updateMap['subOrders.$.cashBackStatus'] = Store.CB_CANCELLED
116
                        updateMap['subOrders.$.cashBackStatus'] = Store.CB_CANCELLED
117
                if value==Store.ORDER_DELIVERED:
117
                if value==Store.ORDER_DELIVERED:
118
                    closed = True
118
                    closed = True
119
                    updateMap['subOrders.$.closed'] = True
119
                    updateMap['subOrders.$.closed'] = True
120
                    if subOrder['cashBackStatus'] == Store.CB_PENDING:
120
                    if cashBackStatus == Store.CB_PENDING:
121
                        updateMap['subOrders.$.cashBackStatus'] = Store.CB_APPROVED
121
                        updateMap['subOrders.$.cashBackStatus'] = Store.CB_APPROVED
122
            if key=='cashBackStatus':
-
 
123
                continue
-
 
124
            updateMap['subOrders.$.' + key] = value
122
            updateMap['subOrders.$.' + key] = value
125
        subOrder['closed'] = closed
123
        subOrder['closed'] = closed
126
        return updateMap
124
        return updateMap
127
    
125
    
128
    def saveOrder(self, merchantOrder):
126
    def saveOrder(self, merchantOrder):
Line 219... Line 217...
219
        for subOrder in subOrders:
217
        for subOrder in subOrders:
220
            if merchantSubOrderId == subOrder.get("merchantSubOrderId"):
218
            if merchantSubOrderId == subOrder.get("merchantSubOrderId"):
221
                return subOrder
219
                return subOrder
222
        return None
220
        return None
223
    
221
    
-
 
222
    def populateDerivedFields(self, order):
-
 
223
        closed=True
-
 
224
        for subOrder in order.subOrders:
-
 
225
            if subOrder.closed:
-
 
226
                continue
-
 
227
            cashbackAmount, cashbackPercent = self.getCashbackAmount(subOrder.productCode, subOrder.amountPaid)
-
 
228
            cashbackStatus = Store.CB_PENDING
-
 
229
            if cashbackAmount <= 0:
-
 
230
                cashbackStatus = Store.CB_NA
-
 
231
            subOrder.cashBackAmount = cashbackAmount
-
 
232
            subOrder.cashBackPercentage = cashbackPercent
-
 
233
            subOrder.cashBackStatus = cashbackStatus      
-
 
234
            subOrder.closed = subOrder.status in [self.ORDER_CANCELLED, self.ORDER_DELIVERED]
-
 
235
            closed = closed and subOrder.closed
-
 
236
        order.closed = closed
-
 
237
    
224
def settlePayBack(runtype='dry'):
238
def settlePayBack(runtype='dry'):
225
    userAmountMap = {}
239
    userAmountMap = {}
226
    searchMapList = []
240
    searchMapList = []
227
    for mo in client.Dtr.merchantOrder.find({"subOrders.cashBackStatus":Store.CB_APPROVED}):
241
    for mo in client.Dtr.merchantOrder.find({"subOrders.cashBackStatus":Store.CB_APPROVED}):
228
        userId = mo.get("userId")
242
        userId = mo.get("userId")
Line 349... Line 363...
349
                     ('Accept', 'text/html,application/xhtml+xml,application/json,application/xml;q=0.9,*/*;q=0.8'),
363
                     ('Accept', 'text/html,application/xhtml+xml,application/json,application/xml;q=0.9,*/*;q=0.8'),
350
                     ('Accept-Encoding', 'gzip,deflate,sdch'),                  
364
                     ('Accept-Encoding', 'gzip,deflate,sdch'),                  
351
                     ('Accept-Language', 'en-US,en;q=0.8'),                     
365
                     ('Accept-Language', 'en-US,en;q=0.8'),                     
352
                     ('Accept-Charset', 'ISO-8859-1,utf-8;q=0.7,*;q=0.3')]
366
                     ('Accept-Charset', 'ISO-8859-1,utf-8;q=0.7,*;q=0.3')]
353
    return br
367
    return br
-
 
368
def todict(obj, classkey=None):
-
 
369
    if isinstance(obj, dict):
-
 
370
        data = {}
-
 
371
        for (k, v) in obj.items():
-
 
372
            data[k] = todict(v, classkey)
-
 
373
        return data
-
 
374
    elif hasattr(obj, "_ast"):
-
 
375
        return todict(obj._ast())
-
 
376
    elif hasattr(obj, "__iter__"):
-
 
377
        return [todict(v, classkey) for v in obj]
-
 
378
    elif hasattr(obj, "__dict__"):
-
 
379
        data = dict([(key, todict(value, classkey)) 
-
 
380
            for key, value in obj.__dict__.iteritems() 
-
 
381
            if not callable(value) and not key.startswith('_')])
-
 
382
        if classkey is not None and hasattr(obj, "__class__"):
-
 
383
            data[classkey] = obj.__class__.__name__
-
 
384
        return data
-
 
385
    else:
-
 
386
        return obj
354
 
387
 
355
def ungzipResponse(r):
388
def ungzipResponse(r):
356
    headers = r.info()
389
    headers = r.info()
357
    if headers['Content-Encoding']=='gzip':
390
    if headers['Content-Encoding']=='gzip':
358
        import gzip
391
        import gzip