Subversion Repositories SmartDukaan

Rev

Rev 21603 | Rev 21776 | 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
21319 amit.gupta 9
from dtr.dao import AffiliateInfo, Order, SubOrder, FlipkartAffiliateInfo, obj
13690 amit.gupta 10
from dtr.main import getBrowserObject, getStore, ParseException, ungzipResponse, \
14398 amit.gupta 11
    Store as MStore, sourceMap, tprint
21246 amit.gupta 12
from dtr.storage.DataService import Clicks, Users, FlipkartOrders, OrdersRaw
16209 amit.gupta 13
from dtr.utils import utils
21310 amit.gupta 14
from dtr.utils.utils import fetchResponseUsingProxy, todict, getSkuData, \
21319 amit.gupta 15
    ORDER_PLACED, readSSh
15539 amit.gupta 16
from elixir import *
13690 amit.gupta 17
from pprint import pprint
18
from pymongo.mongo_client import MongoClient
21310 amit.gupta 19
from urlparse import urlparse
17238 amit.gupta 20
import StringIO
21
import csv
13690 amit.gupta 22
import hashlib
13658 manas 23
import importlib
13690 amit.gupta 24
import json
25
import mechanize
14412 amit.gupta 26
import pymongo
13658 manas 27
import re
21310 amit.gupta 28
import time
14338 amit.gupta 29
import traceback
13658 manas 30
import urllib
18156 amit.gupta 31
import urllib2
17238 amit.gupta 32
import zipfile
13658 manas 33
USERNAME='saholic1@gmail.com'
34
PASSWORD='spice@2020'
21264 amit.gupta 35
ORDER_TRACK_URL='https://www.flipkart.com/order_details?src=or&pr=1&type=physical&'
17238 amit.gupta 36
AFFILIATE_URL='https://affiliate.flipkart.com/'
37
AFFILIATE_LOGIN_URL='https://affiliate.flipkart.com/a_login'
38
AFF_REPORT_URL = "https://affiliate.flipkart.com/downloads/a_downloadRequest?type=OrdersReport&parameters=%s"
39
AFF_DOWNLOAD_URL="https://affiliate.flipkart.com/downloads/file?id=%s"
13690 amit.gupta 40
AFF_STATUS_CANCELLED='cancelled'
41
AFF_STATUS_APPROVED='approved'
42
AFF_STATUS_DISAPPROVED='disapproved'
43
AFF_STATUS_PENDING='pending'
17238 amit.gupta 44
statuses = [AFF_STATUS_CANCELLED, AFF_STATUS_APPROVED, AFF_STATUS_DISAPPROVED,AFF_STATUS_PENDING ]
15539 amit.gupta 45
categoryMap = {3:"Mobiles", 5:"Tablets"}
21269 amit.gupta 46
mobileAgent = 'Mozilla/5.0 (iPhone; CPU iPhone OS 8_0 like Mac OS X) AppleWebKit/600.1.3 (KHTML, like Gecko) Version/8.0 Mobile/12A4345d Safari/600.1.4'
13658 manas 47
 
21266 amit.gupta 48
headers = { 
21269 amit.gupta 49
            'User-Agent':'Mozilla/5.0 (iPhone; CPU iPhone OS 8_0 like Mac OS X) AppleWebKit/600.1.3 (KHTML, like Gecko) Version/8.0 Mobile/12A4345d Safari/600.1.4',
21266 amit.gupta 50
            'Accept' : 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',      
51
            'Accept-Language' : 'en-US,en;q=0.8',                     
52
            'Accept-Charset' : 'ISO-8859-1,utf-8;q=0.7,*;q=0.3',
53
            'Connection':'keep-alive',
54
            'Accept-Encoding' : 'gzip,deflate,sdch'
55
        }
56
 
21319 amit.gupta 57
TRACK_URLS = ['https://www.flipkart.com/api/1/self-serve/orders?pageNum=1&link=myAccounts', 'https://www.flipkart.com/api/1/self-serve/orders?pageNum=2&link=myAccounts', 'https://www.flipkart.com/api/1/self-serve/orders?pageNum=3&link=myAccounts']
21273 amit.gupta 58
TRACK_HEADERS = {
59
        "sn":"2.VIBAC8BD9D21024F649B0482FAC385814A.SIE6C5F25D78974A5EB850D89167D52009.VSE7C76F85C2EE463786F89407CA46CA31.1492756338",
60
        "Connection":"keep-alive",
61
        "Referer":"https://www.flipkart.com/rv/orders?link=myAccounts",
62
        "cache-control":"no-cache",
63
        "Accept":"/",
64
        "Accept-Language":"en-US,en;q=0.8",
65
        "content-type":"application/json",
66
        "User-Agent":"Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML:like Gecko) Chrome/48.0.2564.23 Mobile Safari/537.36",
67
        "flipkart_secure":"true",
68
        "sc":"",
69
        "Accept-Encoding":"gzip:deflate:sdch:br",
70
        "x-user-agent":"Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML:like Gecko) Chrome/48.0.2564.23 Mobile Safari/537.36 FKUA/msite/0.0.1/msite/Mobile,Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML:like Gecko) Chrome/48.0.2564.23 Mobile Safari/537.36 FKUA/msite/0.0.1/msite/Mobile",
71
        "pragma":"no-cache",
72
        "issecureresource":"true"
73
}
74
 
75
 
13781 amit.gupta 76
class Store(MStore):
13658 manas 77
    OrderStatusMap = {
21319 amit.gupta 78
                      main.Store.ORDER_PLACED : ['approval', 'processing', 'shipping', 'your order has been placed.'],
14679 amit.gupta 79
                      main.Store.ORDER_DELIVERED : ['your item has been delivered'],
21603 amit.gupta 80
                      main.Store.ORDER_SHIPPED : ['in transit', 'shipment yet to be delivered', "item has been shipped.", "your item is out for delivery"],
21775 amit.gupta 81
                      main.Store.ORDER_CANCELLED : ['shipment is returned', 'your item has been returned', 'your shipment has been cancelled', 'your shipment has been cancelled.', 'your item has been cancelled', 'your item has been returned']
13658 manas 82
 
83
                      }
84
    def __init__(self,store_id):
85
        client = MongoClient('mongodb://localhost:27017/')
86
        self.db = client.dtr
87
        super(Store, self).__init__(store_id)
88
 
13569 amit.gupta 89
    def getName(self):
90
        return "flipkart"
91
 
21310 amit.gupta 92
    def _parseJSON(self,merchantOrder, transaction):
21319 amit.gupta 93
        merchantOrder = obj(merchantOrder)
21310 amit.gupta 94
        update = False
21319 amit.gupta 95
        if not hasattr(merchantOrder, 'subOrders'):
21310 amit.gupta 96
            merchantOrder.placedOn = transaction['orderDate'] 
97
            merchantOrder.paidAmount = transaction['amount']
98
            subOrders = []
99
            merchantOrder.subOrders = subOrders
100
            for shipment in transaction['groupedItems']:
101
                for item in shipment:
21319 amit.gupta 102
                    productUrl = "https://www.flipkart.com" + item['itemMetadata']['url']
21322 amit.gupta 103
                    merchantsubOrder = SubOrder(" ".join(filter(None, (item['title'], item['itemMetadata']['color']))), productUrl, merchantOrder.placedOn, item['amount'],MStore.ORDER_PLACED, item['quantity'])
21310 amit.gupta 104
                    merchantsubOrder.merchantSubOrderId = item['orderItemId']
105
                    merchantsubOrder.imgUrl  = item['itemMetadata']['images']['1000x1000']
106
                    productCode=productUrl.split("pid=")[1]
107
                    merchantsubOrder.productCode = productCode
108
                    merchantsubOrder.merchantSubOrderId = item['orderItemId']
21319 amit.gupta 109
                    merchantsubOrder.amount = item['itemSellingPrice']*merchantsubOrder.quantity
110
                    merchantsubOrder.unitPrice = item['itemSellingPrice']
21310 amit.gupta 111
                    merchantsubOrder.detailedStatus = item['desktopSubStatus']
112
                    subOrders.append(merchantsubOrder)
113
        else:
114
            update = True
115
            for shipment in transaction['groupedItems']:
116
                for item in shipment:
21330 amit.gupta 117
                    subOrder = self._isSubOrderActive1(merchantOrder,  item['orderItemId'])
21310 amit.gupta 118
                    if subOrder:
119
                        subOrder.detailedStatus = item['desktopSubStatus']
120
 
121
        self.populateDerivedFields(merchantOrder, update)
21324 amit.gupta 122
        self._updateToOrder(todict(merchantOrder))
21310 amit.gupta 123
 
124
    def _getActiveOrders(self, searchMap={}, collectionMap={}):
125
        collection = self.db.merchantOrder
126
        searchMap = dict(searchMap.items()+ {"closed": False, "storeId" : self.store_id}.items()) 
127
        #collectionMap =  dict(collectionMap.items() + {"orderSuccessUrl":1, "orderId":1,"subOrders":1, "placedOn":1, "orderTracking"}.items())
128
        stores = collection.find(searchMap)
129
        return [store for store in stores]    
130
 
131
 
21273 amit.gupta 132
    def trackOrdersForUser(self, userId, url, rawHtml):
133
        rawHtml = re.sub(r'[^\x00-\x7F]+',' ', rawHtml)
21335 amit.gupta 134
        headers = dict(TRACK_HEADERS)
21273 amit.gupta 135
        if url not in TRACK_URLS:
21338 amit.gupta 136
            for lis in re.findall('SN"?:\s?"(.*?)"', rawHtml):
21335 amit.gupta 137
                headers['sn'] = lis
21273 amit.gupta 138
                break
21338 amit.gupta 139
            for lis in re.findall('fkUA"?:\s?"(.*?)"', rawHtml):
21334 amit.gupta 140
                headers['User-Agent'] = lis.split(" FKUA")[0]
141
                headers['x-user-agent'] = lis
21273 amit.gupta 142
                break
21334 amit.gupta 143
 
21336 amit.gupta 144
            if self._getActiveOrders({"userId": userId,"createdOnInt":{"$gt":int(time.mktime(datetime.now().timetuple()))- 30*86400}}):
21334 amit.gupta 145
                return {"headers":headers, "urls":TRACK_URLS}
21310 amit.gupta 146
            else:
21334 amit.gupta 147
                return {"headers":headers, "urls":[]}
21273 amit.gupta 148
        else:
21310 amit.gupta 149
            jsonObject = json.loads(rawHtml)
150
            #Get only orders less than one month old
21336 amit.gupta 151
            activeOrders = self._getActiveOrders({"userId": userId, "createdOnInt":{"$gt":int(time.mktime(datetime.now().timetuple())) - 30*86400}})
21310 amit.gupta 152
            for order in activeOrders:
153
                for transaction in jsonObject['RESPONSE']['orderGranularDetails']:
21319 amit.gupta 154
                    if transaction['orderId'][:-2] == order["merchantOrderId"]:
21310 amit.gupta 155
                        self._parseJSON(order, transaction)
156
                        break
157
 
158
 
159
 
21273 amit.gupta 160
            return 'PARSED_SUCCESS'
161
 
17238 amit.gupta 162
 
163
    def requestDownload(self):
164
    #"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"
165
        requestReportUrl = "https://affiliate.flipkart.com/downloads/a_downloadRequest?type=OrdersReport&parameters=%s"
166
        br = getBrowserObject()
167
        br.set_debug_responses(True)
168
        br.open(AFFILIATE_URL)
169
        response = br.response()  # copy
170
        #token =  re.findall('window.__FK = "(.*?)"', utils.ungzipResponse(response), re.IGNORECASE)[0]
171
        data = {
172
                    'j_username':'saholic1@gmail.com',
173
                    'j_password':'spice@2020'
174
            }
175
        print utils.ungzipResponse(br.open(AFFILIATE_LOGIN_URL, urllib.urlencode(data)))
176
        till = datetime.strftime(date.today(),"%Y-%m-%d")
177
        start = datetime.strftime(date.today() - timedelta(4), "%Y-%m-%d")
178
        #target = open("dowloadreportids", 'w')
179
        #target.truncate()
180
        for status in statuses:
181
            #try:
182
                data = {"till":till, "from":start, "filter":status}
183
                print json.dumps(data)
184
                request = requestReportUrl%(urllib.quote_plus(json.dumps(data).replace(" ", "")))
185
                print request
186
                response = utils.ungzipResponse(br.open(request))
187
                response = json.loads(response)
188
                print response
189
                if(response['status']=="OK"):
190
                    self.db.flipkartdownloadids.save(response)
191
                else:
192
                    utils.sendmail(['amit.gupta@shop2020.in'], '', "Could not get request data for Flipkart Affiliate downlaod")
193
                    #break 
194
            #except:
195
                utils.sendmail(['amit.gupta@shop2020.in'], '', "Could not get request data for Flipkart Affiliate downlaod due to Internal Server Error")
196
                #break 
197
 
198
 
13690 amit.gupta 199
    def scrapeStoreOrders(self,):
21311 amit.gupta 200
        pass
13690 amit.gupta 201
        orders = self._getActiveOrders()
13721 amit.gupta 202
        for order in orders:
14692 amit.gupta 203
            print "Order", self.store_name, order['orderId']
14398 amit.gupta 204
            try:
205
                closed = True
20421 amit.gupta 206
                url = ORDER_TRACK_URL + urlparse(order['orderSuccessUrl']).query    
21266 amit.gupta 207
                page = fetchResponseUsingProxy(url, headers)
14398 amit.gupta 208
                soup = BeautifulSoup(page,convertEntities=BeautifulSoup.HTML_ENTITIES)
209
 
210
                sections = soup.findAll("div", {"class":"ui-app-card-body"})
211
                sections.pop(1)
13721 amit.gupta 212
 
14398 amit.gupta 213
                mainOrder = soup.find("ul",{"class":"m-bottom p-cart"})
214
                fkSubOrders = mainOrder.findAll("li")
215
 
216
                #remove unwanted list
217
                fkSubOrders.pop(-1)
218
 
219
 
220
                bulk = self.db.merchantOrder.initialize_ordered_bulk_op()
221
                #fetching suborders details
222
                for subOrder in fkSubOrders:
223
                    updateMap = {}
14692 amit.gupta 224
                    ul = subOrder.find("ul")
225
                    if ul is None:
226
                        ul = subOrder.findAll("div", recursive=False)[0].div.div
227
                    orderItems = ul.findAll("div", recursive=False)
14398 amit.gupta 228
                    for orderItem in orderItems:
229
                        closedStatus = False
20422 amit.gupta 230
                        divs = orderItem.findAll('div', recursive=False)
231
                        orderTracking = divs[2]
232
                        merchantSubOrderId = divs[3].get('id')
14398 amit.gupta 233
                        subOrder =  self._isSubOrderActive(order, merchantSubOrderId)
234
                        if subOrder is None:
235
                            break
14460 amit.gupta 236
                        elif subOrder['closed']:
237
                            break
14398 amit.gupta 238
                        findMap = {"orderId": order['orderId'], "subOrders.merchantSubOrderId": merchantSubOrderId}
239
                        orderTrackingDetDiv = divs[3].find('div',{'class':'c-tabs-content m-top active'})
20422 amit.gupta 240
                        cashbackStatus = subOrder.get("cashBackStatus")
20420 amit.gupta 241
                        if orderTrackingDetDiv is not None:
242
                            orderTrackingDet = str(orderTrackingDetDiv.find("div", "tracking-remark").text)
243
                            updateMap["subOrders.$.detailedStatus"] = orderTrackingDet
244
                            tr = orderTracking.findAll("div",{"class":"tap-bullet-area c-tab-trigger"})
245
 
246
                            tr = orderTracking.findAll("div",{"class":"tap-bullet-area c-tab-trigger"})
247
 
248
                            if "approveDetails-ongoing" in str(tr) or "processingDetails-ongoing" in str(tr):
249
                                status=MStore.ORDER_PLACED
250
                            elif "shippingDetails-ongoing" in str(tr):
251
                                status = MStore.ORDER_SHIPPED
252
                            elif "delivery-complete" in str(tr):
253
                                status = MStore.ORDER_DELIVERED
20421 amit.gupta 254
                                if cashbackStatus != Store.CB_NA:
20420 amit.gupta 255
                                    cashbackStatus = Store.CB_APPROVED
256
                                closedStatus = True
257
                            if "dead" in str(tr) or "shippingDetails-returnOngoing" in str(tr) or "shippingDetails-return" in str(tr):
258
                                status = MStore.ORDER_CANCELLED
259
                                closedStatus = True
260
                                if cashbackStatus == Store.CB_PENDING:
261
                                    cashbackStatus = Store.CB_CANCELLED
262
                        else:
263
                            updateMap["subOrders.$.detailedStatus"] = "Refunded"
14398 amit.gupta 264
                            status = MStore.ORDER_CANCELLED
265
                            closedStatus = True
266
                            if cashbackStatus == Store.CB_PENDING:
267
                                cashbackStatus = Store.CB_CANCELLED
20417 amit.gupta 268
                        print "Sub Order Status " + str(status)
14398 amit.gupta 269
 
270
                        updateMap["subOrders.$.cashBackStatus"] = cashbackStatus
271
                        updateMap["subOrders.$.status"] = status
272
                        updateMap["subOrders.$.closed"] = closedStatus
273
                        if closed:
274
                            closed = closedStatus
275
                        bulk.find(findMap).update({'$set' : updateMap})
14692 amit.gupta 276
                bulk.find({'orderId': order['orderId']}).update({'$set':{'closed': closed, 'parseError':False}})
14398 amit.gupta 277
                bulk.execute()            
278
            except:
14692 amit.gupta 279
                self.db.merchantOrder.update({"orderId":order['orderId']}, {"$set":{"parseError":True}})
14847 amit.gupta 280
                tprint("Could not update " + str(order['orderId']) + ' for store ' + self.getName())
14398 amit.gupta 281
                traceback.print_exc()
17238 amit.gupta 282
 
283
    def scrapeAffiliate(self, deltaDays=0):
284
        if deltaDays is None:
285
            deltaDays=0
286
        endDate=date.today() - timedelta(days=1)
287
        startDate = endDate - timedelta(days=deltaDays)
15539 amit.gupta 288
 
17238 amit.gupta 289
        endDate = datetime.strftime(endDate, "%Y-%m-%d")
290
        startDate = datetime.strftime(startDate, "%Y-%m-%d")
17241 amit.gupta 291
        url  = "https://affiliate-api.flipkart.net/affiliate/report/orders/detail/json?startDate=%s&endDate=%s&status=%s&offset=0"
17238 amit.gupta 292
 
293
        for status in statuses:
17241 amit.gupta 294
            nextUrl = url%(startDate, endDate, status)
295
            while nextUrl:
17243 amit.gupta 296
                req = urllib2.Request(nextUrl)
17242 amit.gupta 297
                nextUrl=''
17238 amit.gupta 298
                req.add_header('Fk-Affiliate-Id', 'saholic1g')
299
                req.add_header('Fk-Affiliate-Token', 'a757444e260c46be8c4aeb20352246ac')
300
                resp = urllib2.urlopen(req)
301
                resString = json.loads(resp.read())
302
                orderList = resString["orderList"]
303
                if orderList:
304
                    for order in orderList:
305
                        order['sales'] = int(order['sales']['amount'])
306
                        order['tentativeCommission'] = int(order['tentativeCommission']['amount'])
307
                        subTagId = order.get("affExtParam1")
308
                        userId = None
309
                        email = None
310
                        if subTagId:
311
                            click = session.query(Clicks).filter_by(tag = subTagId).first()
312
                            if click is not None:
313
                                userId= click.user_id 
314
                                user = session.query(Users.email).filter_by(id = userId).first()
315
                                if user is not None:
316
                                    email = user.email
317
 
318
                        flipkartOrder = FlipkartOrders()
319
                        flipkartOrder.subtagId = subTagId
320
                        flipkartOrder.user_id = userId
321
                        flipkartOrder.identifier = order.get("identifier")
322
                        flipkartOrder.email = email
18465 amit.gupta 323
                        flipkartOrder.created = datetime.strptime(order.get("orderDate"), "%d-%m-%Y %H:%M:%S")
17238 amit.gupta 324
                        flipkartOrder.status = order.get("status")
325
                        flipkartOrder.title = order.get("title")
326
                        flipkartOrder.price = order.get("price")
327
                        flipkartOrder.quantity = order.get("quantity")
328
                        flipkartOrder.productCode = order.get("productId")
329
                        flipkartOrder.affiliateOrderItemId = order.get("affiliateOrderItemId")
330
                        flipkartOrder.payOut = order['tentativeCommission']
331
                        flipkartOrder.payOutPercentage = order['commissionRate']
332
                        skuData = getSkuData(2, order.get("productId"))
333
                        if skuData is not None:
334
                            flipkartOrder.catalogId = skuData.get("skuBundleId")
335
                            flipkartOrder.brand = skuData.get("brand")
336
                            flipkartOrder.model = skuData.get("model_name")
337
                            flipkartOrder.category = categoryMap.get(skuData.get("category_id"))
338
                            flipkartOrder.title =skuData.get("source_product_name")
339
 
340
                    session.commit()
17241 amit.gupta 341
                    nextUrl = resString['next']  
13721 amit.gupta 342
 
14412 amit.gupta 343
    def _saveToAffiliate(self, offers):
17238 amit.gupta 344
        collection = self.db.flipkartOrderAffiliateInfo1
345
        count=0
346
        for row in offers:
347
            if count==0:
348
                count += 1
349
                continue
350
            offer = self.covertToObj(row)
351
            collection.save(offer)
352
 
353
    def covertToObj(self,offer):
354
        affiliateorderitemid,title,productid,category,quantity,sales,price,commissionrate,tentativecommission,status,orderdate,saleschannel,customertype,affextparam1, affextparam2  = offer
355
        saleMap = {
356
               "affiliateorderitemid":affiliateorderitemid,
357
                "title":title,
358
                "productid":productid,
359
                "category":category,
360
                "quantity":quantity,
361
                "saleAmount":sales,
362
                "price":price,
363
                "commissionrate":commissionrate,
364
                "payOut":tentativecommission,
365
                "conversionStatus":status,
366
                "saleDate":orderdate,
367
                "saleschannel":saleschannel,
368
                "customertype":customertype,
369
                "affextparam1":affextparam1,
370
                "_id":affiliateorderitemid
371
        }
372
        return saleMap
14412 amit.gupta 373
 
374
 
21312 amit.gupta 375
    def parseOrderRawHtml(self, orderId, subTagId, userId, rawHtml, orderSuccessUrl):
376
        resp= {}
377
        try:
378
            url = ORDER_TRACK_URL + urlparse(orderSuccessUrl).query 
379
            merchantOrderId = re.findall('reference_id=(.*?)&', orderSuccessUrl,re.IGNORECASE)[0]
21310 amit.gupta 380
 
21312 amit.gupta 381
            merchantOrder = Order(orderId, userId, subTagId, self.store_id, orderSuccessUrl)
382
            merchantOrder.closed = False
383
            merchantOrder.merchantOrderId = merchantOrderId
384
            merchantOrder.orderTrackingUrl = url
385
            if self._saveToOrder(todict(merchantOrder)):
386
                resp['result'] = 'ORDER_CREATED'
387
            else:
388
                resp['result'] = 'ORDER_ALREADY_CREATED_IGNORED'
389
 
390
            return resp 
391
        except:
392
            traceback.print_exc()
393
            resp['result'] = 'ORDER_NOT_CREATED'
394
            return resp 
395
 
21310 amit.gupta 396
 
397
 
14617 amit.gupta 398
    def _getStatusFromDetailedStatus(self, detailedStatus):
399
        for key, value in Store.OrderStatusMap.iteritems():
14626 amit.gupta 400
            if detailedStatus.lower() in value:
14617 amit.gupta 401
                return key
14676 amit.gupta 402
        print "Detailed Status need to be mapped", detailedStatus, "Store:", self.store_name
20392 amit.gupta 403
        raise ParseException("_getStatusFromDetailedStatus", "Found new order status" + detailedStatus)           
13658 manas 404
 
405
def _saveToOrderFlipkart(self, order):
406
        collection = self.db.merchantOrder
407
        order = collection.insert(order)
408
 
13690 amit.gupta 409
 
410
 
411
def hex_md5(password):
412
    m = hashlib.md5()
413
    print(m.digest())
414
 
13658 manas 415
def main():
16210 amit.gupta 416
    store = getStore(2)
21319 amit.gupta 417
    store.trackOrdersForUser(30916, "https://www.flipkart.com/api/1/self-serve/orders?pageNum=1&link=myAccounts", readSSh("/home/amit/Downloads/htmldata"))
21246 amit.gupta 418
    #store.scrapeStoreOrders()
13679 manas 419
 
16209 amit.gupta 420
if __name__ == '__main__':
421
        main()
14145 amit.gupta 422