Subversion Repositories SmartDukaan

Rev

Rev 16706 | Rev 17240 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
13569 amit.gupta 1
'''
2
Created on Jan 15, 2015
3
 
4
@author: amit
5
'''
13690 amit.gupta 6
from BeautifulSoup import BeautifulSoup
13721 amit.gupta 7
from datetime import datetime, date, timedelta
13569 amit.gupta 8
from dtr import main
14412 amit.gupta 9
from dtr.dao import AffiliateInfo, Order, SubOrder, FlipkartAffiliateInfo
13690 amit.gupta 10
from dtr.main import getBrowserObject, getStore, ParseException, ungzipResponse, \
14398 amit.gupta 11
    Store as MStore, sourceMap, tprint
15539 amit.gupta 12
from dtr.reports.affiliatereco import getSkuData
13
from dtr.storage.DataService import Clicks, Users, FlipkartOrders
16209 amit.gupta 14
from dtr.utils import utils
15539 amit.gupta 15
from dtr.utils.utils import fetchResponseUsingProxy
16
from elixir import *
13690 amit.gupta 17
from pprint import pprint
18
from pymongo.mongo_client import MongoClient
17238 amit.gupta 19
import StringIO
20
import csv
13690 amit.gupta 21
import hashlib
13658 manas 22
import importlib
13690 amit.gupta 23
import json
24
import mechanize
14412 amit.gupta 25
import pymongo
13658 manas 26
import re
14338 amit.gupta 27
import traceback
13658 manas 28
import urllib
17238 amit.gupta 29
import zipfile
30
import urllib2
13658 manas 31
USERNAME='saholic1@gmail.com'
32
PASSWORD='spice@2020'
33
ORDER_TRACK_URL='https://m.flipkart.com/order_details'
17238 amit.gupta 34
AFFILIATE_URL='https://affiliate.flipkart.com/'
35
AFFILIATE_LOGIN_URL='https://affiliate.flipkart.com/a_login'
36
AFF_REPORT_URL = "https://affiliate.flipkart.com/downloads/a_downloadRequest?type=OrdersReport&parameters=%s"
37
AFF_DOWNLOAD_URL="https://affiliate.flipkart.com/downloads/file?id=%s"
13690 amit.gupta 38
AFF_STATUS_CANCELLED='cancelled'
39
AFF_STATUS_APPROVED='approved'
40
AFF_STATUS_DISAPPROVED='disapproved'
41
AFF_STATUS_PENDING='pending'
17238 amit.gupta 42
statuses = [AFF_STATUS_CANCELLED, AFF_STATUS_APPROVED, AFF_STATUS_DISAPPROVED,AFF_STATUS_PENDING ]
15539 amit.gupta 43
categoryMap = {3:"Mobiles", 5:"Tablets"}
13658 manas 44
 
13679 manas 45
 
13781 amit.gupta 46
class Store(MStore):
13658 manas 47
    OrderStatusMap = {
14679 amit.gupta 48
                      main.Store.ORDER_PLACED : ['approval', 'processing', 'shipping'],
49
                      main.Store.ORDER_DELIVERED : ['your item has been delivered'],
14680 amit.gupta 50
                      main.Store.ORDER_SHIPPED : ['in transit', 'shipment yet to be delivered'],
51
                      main.Store.ORDER_CANCELLED : ['shipment is returned', 'your item has been returned', 'your shipment has been cancelled', 'your shipment has been cancelled.']
13658 manas 52
 
53
                      }
54
    def __init__(self,store_id):
55
        client = MongoClient('mongodb://localhost:27017/')
56
        self.db = client.dtr
57
        super(Store, self).__init__(store_id)
58
 
13569 amit.gupta 59
    def getName(self):
60
        return "flipkart"
61
 
17238 amit.gupta 62
 
63
    def requestDownload(self):
64
    #"https://affiliate.flipkart.com/downloads/a_downloadRequest?type=OrdersReport&parameters=%7B%22filter%22%3A%22approved%22%2C%22till%22%3A%222015-10-03%22%2C%22from%22%3A%222015-04-03%22%7D"
65
        requestReportUrl = "https://affiliate.flipkart.com/downloads/a_downloadRequest?type=OrdersReport&parameters=%s"
66
        br = getBrowserObject()
67
        br.set_debug_responses(True)
68
        br.open(AFFILIATE_URL)
69
        response = br.response()  # copy
70
        #token =  re.findall('window.__FK = "(.*?)"', utils.ungzipResponse(response), re.IGNORECASE)[0]
71
        data = {
72
                    'j_username':'saholic1@gmail.com',
73
                    'j_password':'spice@2020'
74
            }
75
        print utils.ungzipResponse(br.open(AFFILIATE_LOGIN_URL, urllib.urlencode(data)))
76
        till = datetime.strftime(date.today(),"%Y-%m-%d")
77
        start = datetime.strftime(date.today() - timedelta(4), "%Y-%m-%d")
78
        #target = open("dowloadreportids", 'w')
79
        #target.truncate()
80
        for status in statuses:
81
            #try:
82
                data = {"till":till, "from":start, "filter":status}
83
                print json.dumps(data)
84
                request = requestReportUrl%(urllib.quote_plus(json.dumps(data).replace(" ", "")))
85
                print request
86
                response = utils.ungzipResponse(br.open(request))
87
                response = json.loads(response)
88
                print response
89
                if(response['status']=="OK"):
90
                    self.db.flipkartdownloadids.save(response)
91
                else:
92
                    utils.sendmail(['amit.gupta@shop2020.in'], '', "Could not get request data for Flipkart Affiliate downlaod")
93
                    #break 
94
            #except:
95
                utils.sendmail(['amit.gupta@shop2020.in'], '', "Could not get request data for Flipkart Affiliate downlaod due to Internal Server Error")
96
                #break 
97
 
98
 
13690 amit.gupta 99
    def scrapeStoreOrders(self,):
100
        orders = self._getActiveOrders()
13721 amit.gupta 101
        for order in orders:
14692 amit.gupta 102
            print "Order", self.store_name, order['orderId']
14398 amit.gupta 103
            try:
104
                closed = True
105
                url = ORDER_TRACK_URL + re.findall('.*(\?.*?)$', order['orderSuccessUrl'],re.IGNORECASE)[0]
14757 amit.gupta 106
                page = fetchResponseUsingProxy(url)
14398 amit.gupta 107
                soup = BeautifulSoup(page,convertEntities=BeautifulSoup.HTML_ENTITIES)
108
 
109
                sections = soup.findAll("div", {"class":"ui-app-card-body"})
110
                sections.pop(1)
13721 amit.gupta 111
 
14398 amit.gupta 112
                mainOrder = soup.find("ul",{"class":"m-bottom p-cart"})
113
                fkSubOrders = mainOrder.findAll("li")
114
 
115
                #remove unwanted list
116
                fkSubOrders.pop(-1)
117
 
118
 
119
                bulk = self.db.merchantOrder.initialize_ordered_bulk_op()
120
                #fetching suborders details
121
                for subOrder in fkSubOrders:
122
                    updateMap = {}
123
                    y = subOrder.find("header").findAll("span")
124
                    for suborderId in y:
125
                        if "value emp" in str(suborderId):
126
                            merchantSubOrderId = suborderId.text
127
                            break
14692 amit.gupta 128
                    ul = subOrder.find("ul")
129
                    if ul is None:
130
                        ul = subOrder.findAll("div", recursive=False)[0].div.div
131
                    orderItems = ul.findAll("div", recursive=False)
14398 amit.gupta 132
                    i=0
133
                    for orderItem in orderItems:
134
                        closedStatus = False
135
                        merchantSubOrderId = merchantSubOrderId + str(i)
136
                        subOrder =  self._isSubOrderActive(order, merchantSubOrderId)
137
                        if subOrder is None:
138
                            break
14460 amit.gupta 139
                        elif subOrder['closed']:
140
                            break
14398 amit.gupta 141
                        findMap = {"orderId": order['orderId'], "subOrders.merchantSubOrderId": merchantSubOrderId}
142
                        divs = orderItem.findAll('div', recursive=False)
143
                        orderTracking = divs[2]
144
                        orderTrackingDetDiv = divs[3].find('div',{'class':'c-tabs-content m-top active'})
145
                        orderTrackingDet = orderTrackingDetDiv.find('div',{'class':re.compile('tracking-remark')}).text
146
                        updateMap["subOrders.$.detailedStatus"] = orderTrackingDet
14617 amit.gupta 147
                        status = self._getStatusFromDetailedStatus(orderTrackingDet)
14398 amit.gupta 148
                        tr = orderTracking.findAll("div",{"class":"tap-bullet-area c-tab-trigger"})
149
 
150
                        cashbackStatus = subOrder.get("cashBackStatus") 
151
                        if "approveDetails-complete" in str(tr):
152
                            if "processingDetails-complete" in str(tr):
153
                                if "shippingDetails-complete" in str(tr):
154
                                    if "delivery-complete" in str(tr):
155
                                        status = MStore.ORDER_DELIVERED
156
                                        if cashbackStatus == Store.CB_PENDING:
157
                                            cashbackStatus = Store.CB_APPROVED
158
                                        closedStatus = True
159
                                    else:     
160
                                        status = MStore.ORDER_SHIPPED
161
                                        courierTrackAnchor = orderTrackingDetDiv.find('a')
162
                                        trackingUrl = courierTrackAnchor("href")
163
                                        trackingText = courierTrackAnchor.text
164
                                        courierArr = trackingText.split(' : ')
165
                                        updateMap["subOrders.$.trackingUrl"] = trackingUrl
166
                                        updateMap["subOrders.$.trackingNumber"] = courierArr[1]
167
                                        updateMap["subOrders.$.courierName"] = courierArr[0]
168
                                else:
14692 amit.gupta 169
                                    status = MStore.ORDER_CANCELLED
170
                                    closedStatus = True
171
                                    if cashbackStatus == Store.CB_PENDING:
172
                                        cashbackStatus = Store.CB_CANCELLED
14398 amit.gupta 173
                            else: 
13721 amit.gupta 174
                                status = MStore.ORDER_PLACED
14398 amit.gupta 175
                        elif str(tr) in ["approveDetails-ongoing"]:
176
                            status=MStore.ORDER_PLACED             
14617 amit.gupta 177
                        if "dead" in str(tr) or status==MStore.ORDER_CANCELLED:
14398 amit.gupta 178
                            status = MStore.ORDER_CANCELLED
179
                            closedStatus = True
180
                            if cashbackStatus == Store.CB_PENDING:
181
                                cashbackStatus = Store.CB_CANCELLED
182
 
183
                        updateMap["subOrders.$.cashBackStatus"] = cashbackStatus
184
                        updateMap["subOrders.$.status"] = status
185
                        updateMap["subOrders.$.closed"] = closedStatus
186
                        if closed:
187
                            closed = closedStatus
188
                        bulk.find(findMap).update({'$set' : updateMap})
14692 amit.gupta 189
                bulk.find({'orderId': order['orderId']}).update({'$set':{'closed': closed, 'parseError':False}})
14398 amit.gupta 190
                bulk.execute()            
191
            except:
14692 amit.gupta 192
                self.db.merchantOrder.update({"orderId":order['orderId']}, {"$set":{"parseError":True}})
14847 amit.gupta 193
                tprint("Could not update " + str(order['orderId']) + ' for store ' + self.getName())
14398 amit.gupta 194
                traceback.print_exc()
17238 amit.gupta 195
 
196
    def scrapeAffiliate(self, deltaDays=0):
197
        if deltaDays is None:
198
            deltaDays=0
199
        endDate=date.today() - timedelta(days=1)
200
        startDate = endDate - timedelta(days=deltaDays)
15539 amit.gupta 201
 
17238 amit.gupta 202
        endDate = datetime.strftime(endDate, "%Y-%m-%d")
203
        startDate = datetime.strftime(startDate, "%Y-%m-%d")
204
        url  = "https://affiliate-api.flipkart.net/affiliate/report/orders/detail/json?startDate=%s&endDate=%s&status=%s&offset=%s"
205
 
206
        sum = 0
207
        for status in statuses:
208
            offset=-1
209
            while True:
210
                offset += 1
211
                reqUlrl = url%(startDate, endDate, status, offset) 
212
                req = urllib2.Request(reqUlrl)
213
                req.add_header('Fk-Affiliate-Id', 'saholic1g')
214
                req.add_header('Fk-Affiliate-Token', 'a757444e260c46be8c4aeb20352246ac')
215
                resp = urllib2.urlopen(req)
216
                resString = json.loads(resp.read())
217
                orderList = resString["orderList"]
218
                if orderList:
219
                    for order in orderList:
220
                        print order
221
                        order['sales'] = int(order['sales']['amount'])
222
                        order['tentativeCommission'] = int(order['tentativeCommission']['amount'])
223
                        if order['status']!='failed':
224
                             sum += order['tentativeCommission']
225
                        self.db.flipkartOrderAffiliateInfo1.save(order)
226
                        skuData = getSkuData(2, order.get("productCode"))
227
                        if skuData is not None:
228
                            order['catalogId'] = skuData.get("skuBundleId")
229
                            order['brand'] = skuData.get("brand")
230
                            order['model'] = skuData.get("model_name")
231
                            order['category'] = categoryMap.get(skuData.get("category_id"))
232
 
233
 
234
                        subTagId = order.get("affExtParam1")
235
                        userId = None
236
                        email = None
237
                        if subTagId:
238
                            click = session.query(Clicks).filter_by(tag = subTagId).first()
239
                            if click is not None:
240
                                userId= click.user_id 
241
                                user = session.query(Users.email).filter_by(id = userId).first()
242
                                if user is not None:
243
                                    email = user.email
244
 
245
                        flipkartOrder = FlipkartOrders()
246
                        flipkartOrder.subtagId = subTagId
247
                        flipkartOrder.user_id = userId
248
                        flipkartOrder.identifier = order.get("identifier")
249
                        flipkartOrder.email = email
250
                        flipkartOrder.created = datetime.strptime(order.get("orderDate"), "%m-%d-%Y")
251
                        flipkartOrder.status = order.get("status")
252
                        flipkartOrder.title = order.get("title")
253
                        flipkartOrder.price = order.get("price")
254
                        flipkartOrder.quantity = order.get("quantity")
255
                        flipkartOrder.productCode = order.get("productId")
256
                        flipkartOrder.affiliateOrderItemId = order.get("affiliateOrderItemId")
257
                        flipkartOrder.payOut = order['tentativeCommission']
258
                        flipkartOrder.payOutPercentage = order['commissionRate']
259
                        skuData = getSkuData(2, order.get("productId"))
260
                        if skuData is not None:
261
                            flipkartOrder.catalogId = skuData.get("skuBundleId")
262
                            flipkartOrder.brand = skuData.get("brand")
263
                            flipkartOrder.model = skuData.get("model_name")
264
                            flipkartOrder.category = categoryMap.get(skuData.get("category_id"))
265
                            flipkartOrder.title =skuData.get("source_product_name")
266
 
267
                    session.commit()
268
                else:
269
                    break
13721 amit.gupta 270
 
14412 amit.gupta 271
    def _saveToAffiliate(self, offers):
17238 amit.gupta 272
        collection = self.db.flipkartOrderAffiliateInfo1
273
        count=0
274
        for row in offers:
275
            if count==0:
276
                count += 1
277
                continue
278
            offer = self.covertToObj(row)
279
            collection.save(offer)
280
 
281
    def covertToObj(self,offer):
282
        affiliateorderitemid,title,productid,category,quantity,sales,price,commissionrate,tentativecommission,status,orderdate,saleschannel,customertype,affextparam1, affextparam2  = offer
283
        saleMap = {
284
               "affiliateorderitemid":affiliateorderitemid,
285
                "title":title,
286
                "productid":productid,
287
                "category":category,
288
                "quantity":quantity,
289
                "saleAmount":sales,
290
                "price":price,
291
                "commissionrate":commissionrate,
292
                "payOut":tentativecommission,
293
                "conversionStatus":status,
294
                "saleDate":orderdate,
295
                "saleschannel":saleschannel,
296
                "customertype":customertype,
297
                "affextparam1":affextparam1,
298
                "_id":affiliateorderitemid
299
        }
300
        return saleMap
14412 amit.gupta 301
 
302
 
13658 manas 303
    def parseOrderRawHtml(self, orderId, subTagId, userId, rawHtml, orderSuccessUrl):
13796 amit.gupta 304
        resp= {}
13781 amit.gupta 305
        try:
306
            br = getBrowserObject()
307
            url = ORDER_TRACK_URL + re.findall('.*(\?.*?)$', orderSuccessUrl,re.IGNORECASE)[0]
308
 
309
            response = br.open(url)
310
            page = ungzipResponse(response)
311
 
312
            merchantOrderId = re.findall('reference_id=(.*?)&', orderSuccessUrl,re.IGNORECASE)[0]
313
            print merchantOrderId
314
 
315
            soup = BeautifulSoup(page,convertEntities=BeautifulSoup.HTML_ENTITIES)
316
 
317
            sections = soup.findAll("div", {"class":"ui-app-card-body"})
318
            sections.pop(1)
319
 
320
            merchantOrder = Order(orderId, userId, subTagId, self.store_id, orderSuccessUrl)
14145 amit.gupta 321
            merchantOrder.orderTrackingUrl = url
13781 amit.gupta 322
            for data in sections:
323
                name = data.findAll("span")
324
                i=0
325
                while i< len(name):
326
                    if "key" in str(name[i]):
327
                        if "Grand Total" in str(name[i]):
328
                            #Total Amount
329
                            merchantOrder.paidAmount = int(re.findall(r'\d+', name[i+1].text)[0])
330
                        elif "Order Date" in str(name[i]):
331
                            merchantOrder.placedOn = name[i+1].text 
332
                    i=i+1    
333
 
334
            merchantOrder.merchantOrderId = merchantOrderId
335
 
336
            mainOrder = soup.find("ul",{"class":"m-bottom p-cart"})
337
            fkSubOrders = mainOrder.findAll("li")
338
            #remove unwanted list
339
            fkSubOrders.pop(-1)
340
            subOrders = []
341
            merchantOrder.subOrders = subOrders
342
 
343
            #fetching suborders details
344
            for subOrder in fkSubOrders:
345
                y = subOrder.find("header").findAll("span")
346
                for suborderId in y:
347
                    if "value emp" in str(suborderId):
348
                        merchantSubOrderId = suborderId.text
349
                        break
350
                orderItems = subOrder.find("ul").findAll("div", recursive=False)
351
                i=0
352
                for orderItem in orderItems:
353
                    merchantOrder.placedOn
354
                    merchantSubOrderId = merchantSubOrderId + str(i)
355
                    divs = orderItem.findAll('div', recursive=False)
356
                    content = divs[0]
357
                    orderTracking = divs[2]
358
                    orderTrackingDet = divs[3]
359
 
360
 
361
                    imgUrl = content.find('img')['src']
362
                    lineDet = content.find("div",{"class":"product-info"})
363
                    productTitle = lineDet.find("a",{"class":"product-title"}).text
364
                    productUrl =  str(lineDet.find("a")['href'])
365
 
366
                    start='pid='
367
                    s=str(lineDet.find("a")['href'])
14339 amit.gupta 368
                    productCode = re.findall(re.escape(start)+"(.*)",s)[0].strip()
13781 amit.gupta 369
                    mname = lineDet.findAll("span")
370
                    k=0
371
                    while k<len(mname):
372
                        if "note" in str(mname[k]):
373
                            if "Color:" in str(mname[k]):
374
                                productTitle = productTitle + " " + mname[k+1].text
375
 
376
                            elif "Qty:" in str(mname[k]):
377
                                quantity = int(mname[k+1].text)
378
                            elif "Subtotal:" in str(mname[k]):
14343 amit.gupta 379
                                amountPaid = int(re.findall(r'\d+', mname[k+1].text)[0])
13781 amit.gupta 380
                            elif "Delivery:" in str(mname[k]):
381
                                #Delivery Date for sub order
382
                                print "Delivery Date " +mname[k+1].text
383
                        k=k+1
14343 amit.gupta 384
                    merchantsubOrder = SubOrder(productTitle, productUrl, merchantOrder.placedOn, amountPaid,MStore.ORDER_PLACED, quantity)
13781 amit.gupta 385
                    merchantsubOrder.imgUrl  = imgUrl
386
                    merchantsubOrder.productCode = productCode
387
                    merchantsubOrder.merchantSubOrderId = merchantSubOrderId
14337 amit.gupta 388
                    print "productCode", productCode
14340 amit.gupta 389
                    print "amountPaid", amountPaid
14336 amit.gupta 390
                    cashbackAmount, cashbackPercent = self.getCashbackAmount(productCode, amountPaid)
13781 amit.gupta 391
                    cashbackStatus = Store.CB_PENDING
392
                    if cashbackAmount <= 0:
393
                        cashbackStatus = Store.CB_NA
394
                    merchantsubOrder.cashBackAmount = cashbackAmount
395
                    merchantsubOrder.cashBackStatus = cashbackStatus      
396
                    merchantsubOrder.cashBackPercentage = cashbackPercent      
397
 
398
                    subOrders.append(merchantsubOrder)
399
                    #To track shipping details         
400
                    status=-1    
401
                    tr = orderTracking.findAll("div",{"class":"tap-bullet-area c-tab-trigger"})
402
                    if "approveDetails-complete" in str(tr):
403
                        if "processingDetails-complete" in str(tr):
404
                            if "shippingDetails-complete" in str(tr):
405
                                if "delivery-complete" in str(tr):
406
                                    status = MStore.ORDER_DELIVERED
407
                                else:     
408
                                    status = MStore.ORDER_SHIPPED
409
                                    orderTracking.find('div', {'class':'tracking-remark active'})
410
                            else:
411
                                status = MStore.ORDER_PLACED
412
                        else: 
13690 amit.gupta 413
                            status = MStore.ORDER_PLACED
13781 amit.gupta 414
                    elif str(tr) in ["approveDetails-ongoing"]:
415
                        status=MStore.ORDER_PLACED             
14692 amit.gupta 416
                    if "dead" in str(tr) or "shippingDetails-returnOngoing" in str(tr) or "shippingDetails-return" in str(tr):
13781 amit.gupta 417
                        status = MStore.ORDER_CANCELLED    
418
                    print "Sub Order Status " + str(status)                      
419
 
420
                    trackingDetailsActive = orderTrackingDet.find("div",{"class":"c-tabs-content m-top active"})
421
                    print "Sub order tracking description " + trackingDetailsActive.text
14312 amit.gupta 422
            if self._saveToOrder(todict(merchantOrder)):
423
                resp['result'] = 'ORDER_CREATED'
424
            else:
425
                resp['result'] = 'ORDER_ALREADY_CREATED_IGNORED'
426
 
13796 amit.gupta 427
            return resp 
13781 amit.gupta 428
        except:
14338 amit.gupta 429
            traceback.print_exc()
14312 amit.gupta 430
            resp['result'] = 'ORDER_NOT_CREATED'
13796 amit.gupta 431
            return resp 
13781 amit.gupta 432
 
14617 amit.gupta 433
    def _getStatusFromDetailedStatus(self, detailedStatus):
434
        for key, value in Store.OrderStatusMap.iteritems():
14626 amit.gupta 435
            if detailedStatus.lower() in value:
14617 amit.gupta 436
                return key
14676 amit.gupta 437
        print "Detailed Status need to be mapped", detailedStatus, "Store:", self.store_name
14617 amit.gupta 438
        raise ParseException("_getStatusFromDetailedStatus", "Found new order status" + detailedStatus)
13658 manas 439
 
440
    def flipkartOrderTracking(self, orderId, subTagId, userId, rawHtml, orderSuccessUrl):
441
        br = getBrowserObject()
442
        url = ORDER_TRACK_URL + re.findall('.*(\?.*?)$', orderSuccessUrl,re.IGNORECASE)[0]
443
 
444
        response = br.open(url)
445
        page = ungzipResponse(response, br)
446
 
447
 
448
        soup = BeautifulSoup(page,convertEntities=BeautifulSoup.HTML_ENTITIES)
449
 
450
 
451
        mainOrder = soup.findAll("ul",{"class":"m-bottom p-cart"})
452
        #fetching suborders details
453
        for subOrder in mainOrder:
454
            subOrd = subOrder.findAll("li")
455
 
456
            subOrd.pop(len(subOrd)-1)
457
            for productInfo in subOrd:
458
                status=-1    
459
                #To track shipping details         
460
                n = productInfo.findAll("div",{"class":"tracking-progress grid-row cf"})
461
                for trackingStatus in n:
462
                    tr = trackingStatus.findAll("div",{"class":"tap-bullet-area c-tab-trigger"})
463
                    if "approveDetails-complete" in str(tr):
13679 manas 464
                        print "Here"
13658 manas 465
                        if "processingDetails-complete" in str(tr):
13679 manas 466
                            print "There"
13658 manas 467
                            if "shippingDetails-complete" in str(tr):
13679 manas 468
                                print "Share"
13658 manas 469
                                if "delivery-complete" in str(tr):
13679 manas 470
                                    print "Last"
13658 manas 471
                                    status = 3
472
                                else:     
473
                                    status = 2
474
                            else:
475
                                status = 1 
476
                        else: 
477
                            status = 0     
478
                    if "dead" in str(tr):
479
                        status = 4    
480
                print status                      
481
 
482
 
483
def _saveToOrderFlipkart(self, order):
484
        collection = self.db.merchantOrder
485
        order = collection.insert(order)
486
 
13690 amit.gupta 487
 
488
 
489
def hex_md5(password):
490
    m = hashlib.md5()
491
    print(m.digest())
492
 
13658 manas 493
def main():
16210 amit.gupta 494
    store = getStore(2)
17238 amit.gupta 495
    store.scrapeAffiliate(200)
13679 manas 496
 
13690 amit.gupta 497
 
13658 manas 498
 
13690 amit.gupta 499
 
16209 amit.gupta 500
 
13658 manas 501
def todict(obj, classkey=None):
502
    if isinstance(obj, dict):
503
        data = {}
504
        for (k, v) in obj.items():
505
            data[k] = todict(v, classkey)
506
        return data
507
    elif hasattr(obj, "_ast"):
508
        return todict(obj._ast())
509
    elif hasattr(obj, "__iter__"):
510
        return [todict(v, classkey) for v in obj]
511
    elif hasattr(obj, "__dict__"):
512
        data = dict([(key, todict(value, classkey)) 
513
            for key, value in obj.__dict__.iteritems() 
514
            if not callable(value) and not key.startswith('_')])
515
        if classkey is not None and hasattr(obj, "__class__"):
516
            data[classkey] = obj.__class__.__name__
517
        return data
518
    else:
13690 amit.gupta 519
        return obj
520
 
16209 amit.gupta 521
if __name__ == '__main__':
522
        main()
14145 amit.gupta 523