Subversion Repositories SmartDukaan

Rev

Rev 21775 | 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']
21776 amit.gupta 120
                        subOrder.status = self._getStatusFromDetailedStatus(subOrder.detailedStatus)
21310 amit.gupta 121
 
122
        self.populateDerivedFields(merchantOrder, update)
21324 amit.gupta 123
        self._updateToOrder(todict(merchantOrder))
21310 amit.gupta 124
 
125
    def _getActiveOrders(self, searchMap={}, collectionMap={}):
126
        collection = self.db.merchantOrder
127
        searchMap = dict(searchMap.items()+ {"closed": False, "storeId" : self.store_id}.items()) 
128
        #collectionMap =  dict(collectionMap.items() + {"orderSuccessUrl":1, "orderId":1,"subOrders":1, "placedOn":1, "orderTracking"}.items())
129
        stores = collection.find(searchMap)
130
        return [store for store in stores]    
131
 
132
 
21273 amit.gupta 133
    def trackOrdersForUser(self, userId, url, rawHtml):
134
        rawHtml = re.sub(r'[^\x00-\x7F]+',' ', rawHtml)
21335 amit.gupta 135
        headers = dict(TRACK_HEADERS)
21273 amit.gupta 136
        if url not in TRACK_URLS:
21338 amit.gupta 137
            for lis in re.findall('SN"?:\s?"(.*?)"', rawHtml):
21335 amit.gupta 138
                headers['sn'] = lis
21273 amit.gupta 139
                break
21338 amit.gupta 140
            for lis in re.findall('fkUA"?:\s?"(.*?)"', rawHtml):
21334 amit.gupta 141
                headers['User-Agent'] = lis.split(" FKUA")[0]
142
                headers['x-user-agent'] = lis
21273 amit.gupta 143
                break
21334 amit.gupta 144
 
21336 amit.gupta 145
            if self._getActiveOrders({"userId": userId,"createdOnInt":{"$gt":int(time.mktime(datetime.now().timetuple()))- 30*86400}}):
21334 amit.gupta 146
                return {"headers":headers, "urls":TRACK_URLS}
21310 amit.gupta 147
            else:
21334 amit.gupta 148
                return {"headers":headers, "urls":[]}
21273 amit.gupta 149
        else:
21310 amit.gupta 150
            jsonObject = json.loads(rawHtml)
151
            #Get only orders less than one month old
21336 amit.gupta 152
            activeOrders = self._getActiveOrders({"userId": userId, "createdOnInt":{"$gt":int(time.mktime(datetime.now().timetuple())) - 30*86400}})
21310 amit.gupta 153
            for order in activeOrders:
154
                for transaction in jsonObject['RESPONSE']['orderGranularDetails']:
21319 amit.gupta 155
                    if transaction['orderId'][:-2] == order["merchantOrderId"]:
21310 amit.gupta 156
                        self._parseJSON(order, transaction)
157
                        break
158
 
159
 
160
 
21273 amit.gupta 161
            return 'PARSED_SUCCESS'
162
 
17238 amit.gupta 163
 
164
    def requestDownload(self):
165
    #"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"
166
        requestReportUrl = "https://affiliate.flipkart.com/downloads/a_downloadRequest?type=OrdersReport&parameters=%s"
167
        br = getBrowserObject()
168
        br.set_debug_responses(True)
169
        br.open(AFFILIATE_URL)
170
        response = br.response()  # copy
171
        #token =  re.findall('window.__FK = "(.*?)"', utils.ungzipResponse(response), re.IGNORECASE)[0]
172
        data = {
173
                    'j_username':'saholic1@gmail.com',
174
                    'j_password':'spice@2020'
175
            }
176
        print utils.ungzipResponse(br.open(AFFILIATE_LOGIN_URL, urllib.urlencode(data)))
177
        till = datetime.strftime(date.today(),"%Y-%m-%d")
178
        start = datetime.strftime(date.today() - timedelta(4), "%Y-%m-%d")
179
        #target = open("dowloadreportids", 'w')
180
        #target.truncate()
181
        for status in statuses:
182
            #try:
183
                data = {"till":till, "from":start, "filter":status}
184
                print json.dumps(data)
185
                request = requestReportUrl%(urllib.quote_plus(json.dumps(data).replace(" ", "")))
186
                print request
187
                response = utils.ungzipResponse(br.open(request))
188
                response = json.loads(response)
189
                print response
190
                if(response['status']=="OK"):
191
                    self.db.flipkartdownloadids.save(response)
192
                else:
193
                    utils.sendmail(['amit.gupta@shop2020.in'], '', "Could not get request data for Flipkart Affiliate downlaod")
194
                    #break 
195
            #except:
196
                utils.sendmail(['amit.gupta@shop2020.in'], '', "Could not get request data for Flipkart Affiliate downlaod due to Internal Server Error")
197
                #break 
198
 
199
 
13690 amit.gupta 200
    def scrapeStoreOrders(self,):
21311 amit.gupta 201
        pass
13690 amit.gupta 202
        orders = self._getActiveOrders()
13721 amit.gupta 203
        for order in orders:
14692 amit.gupta 204
            print "Order", self.store_name, order['orderId']
14398 amit.gupta 205
            try:
206
                closed = True
20421 amit.gupta 207
                url = ORDER_TRACK_URL + urlparse(order['orderSuccessUrl']).query    
21266 amit.gupta 208
                page = fetchResponseUsingProxy(url, headers)
14398 amit.gupta 209
                soup = BeautifulSoup(page,convertEntities=BeautifulSoup.HTML_ENTITIES)
210
 
211
                sections = soup.findAll("div", {"class":"ui-app-card-body"})
212
                sections.pop(1)
13721 amit.gupta 213
 
14398 amit.gupta 214
                mainOrder = soup.find("ul",{"class":"m-bottom p-cart"})
215
                fkSubOrders = mainOrder.findAll("li")
216
 
217
                #remove unwanted list
218
                fkSubOrders.pop(-1)
219
 
220
 
221
                bulk = self.db.merchantOrder.initialize_ordered_bulk_op()
222
                #fetching suborders details
223
                for subOrder in fkSubOrders:
224
                    updateMap = {}
14692 amit.gupta 225
                    ul = subOrder.find("ul")
226
                    if ul is None:
227
                        ul = subOrder.findAll("div", recursive=False)[0].div.div
228
                    orderItems = ul.findAll("div", recursive=False)
14398 amit.gupta 229
                    for orderItem in orderItems:
230
                        closedStatus = False
20422 amit.gupta 231
                        divs = orderItem.findAll('div', recursive=False)
232
                        orderTracking = divs[2]
233
                        merchantSubOrderId = divs[3].get('id')
14398 amit.gupta 234
                        subOrder =  self._isSubOrderActive(order, merchantSubOrderId)
235
                        if subOrder is None:
236
                            break
14460 amit.gupta 237
                        elif subOrder['closed']:
238
                            break
14398 amit.gupta 239
                        findMap = {"orderId": order['orderId'], "subOrders.merchantSubOrderId": merchantSubOrderId}
240
                        orderTrackingDetDiv = divs[3].find('div',{'class':'c-tabs-content m-top active'})
20422 amit.gupta 241
                        cashbackStatus = subOrder.get("cashBackStatus")
20420 amit.gupta 242
                        if orderTrackingDetDiv is not None:
243
                            orderTrackingDet = str(orderTrackingDetDiv.find("div", "tracking-remark").text)
244
                            updateMap["subOrders.$.detailedStatus"] = orderTrackingDet
245
                            tr = orderTracking.findAll("div",{"class":"tap-bullet-area c-tab-trigger"})
246
 
247
                            tr = orderTracking.findAll("div",{"class":"tap-bullet-area c-tab-trigger"})
248
 
249
                            if "approveDetails-ongoing" in str(tr) or "processingDetails-ongoing" in str(tr):
250
                                status=MStore.ORDER_PLACED
251
                            elif "shippingDetails-ongoing" in str(tr):
252
                                status = MStore.ORDER_SHIPPED
253
                            elif "delivery-complete" in str(tr):
254
                                status = MStore.ORDER_DELIVERED
20421 amit.gupta 255
                                if cashbackStatus != Store.CB_NA:
20420 amit.gupta 256
                                    cashbackStatus = Store.CB_APPROVED
257
                                closedStatus = True
258
                            if "dead" in str(tr) or "shippingDetails-returnOngoing" in str(tr) or "shippingDetails-return" in str(tr):
259
                                status = MStore.ORDER_CANCELLED
260
                                closedStatus = True
261
                                if cashbackStatus == Store.CB_PENDING:
262
                                    cashbackStatus = Store.CB_CANCELLED
263
                        else:
264
                            updateMap["subOrders.$.detailedStatus"] = "Refunded"
14398 amit.gupta 265
                            status = MStore.ORDER_CANCELLED
266
                            closedStatus = True
267
                            if cashbackStatus == Store.CB_PENDING:
268
                                cashbackStatus = Store.CB_CANCELLED
20417 amit.gupta 269
                        print "Sub Order Status " + str(status)
14398 amit.gupta 270
 
271
                        updateMap["subOrders.$.cashBackStatus"] = cashbackStatus
272
                        updateMap["subOrders.$.status"] = status
273
                        updateMap["subOrders.$.closed"] = closedStatus
274
                        if closed:
275
                            closed = closedStatus
276
                        bulk.find(findMap).update({'$set' : updateMap})
14692 amit.gupta 277
                bulk.find({'orderId': order['orderId']}).update({'$set':{'closed': closed, 'parseError':False}})
14398 amit.gupta 278
                bulk.execute()            
279
            except:
14692 amit.gupta 280
                self.db.merchantOrder.update({"orderId":order['orderId']}, {"$set":{"parseError":True}})
14847 amit.gupta 281
                tprint("Could not update " + str(order['orderId']) + ' for store ' + self.getName())
14398 amit.gupta 282
                traceback.print_exc()
17238 amit.gupta 283
 
284
    def scrapeAffiliate(self, deltaDays=0):
285
        if deltaDays is None:
286
            deltaDays=0
287
        endDate=date.today() - timedelta(days=1)
288
        startDate = endDate - timedelta(days=deltaDays)
15539 amit.gupta 289
 
17238 amit.gupta 290
        endDate = datetime.strftime(endDate, "%Y-%m-%d")
291
        startDate = datetime.strftime(startDate, "%Y-%m-%d")
17241 amit.gupta 292
        url  = "https://affiliate-api.flipkart.net/affiliate/report/orders/detail/json?startDate=%s&endDate=%s&status=%s&offset=0"
17238 amit.gupta 293
 
294
        for status in statuses:
17241 amit.gupta 295
            nextUrl = url%(startDate, endDate, status)
296
            while nextUrl:
17243 amit.gupta 297
                req = urllib2.Request(nextUrl)
17242 amit.gupta 298
                nextUrl=''
17238 amit.gupta 299
                req.add_header('Fk-Affiliate-Id', 'saholic1g')
300
                req.add_header('Fk-Affiliate-Token', 'a757444e260c46be8c4aeb20352246ac')
301
                resp = urllib2.urlopen(req)
302
                resString = json.loads(resp.read())
303
                orderList = resString["orderList"]
304
                if orderList:
305
                    for order in orderList:
306
                        order['sales'] = int(order['sales']['amount'])
307
                        order['tentativeCommission'] = int(order['tentativeCommission']['amount'])
308
                        subTagId = order.get("affExtParam1")
309
                        userId = None
310
                        email = None
311
                        if subTagId:
312
                            click = session.query(Clicks).filter_by(tag = subTagId).first()
313
                            if click is not None:
314
                                userId= click.user_id 
315
                                user = session.query(Users.email).filter_by(id = userId).first()
316
                                if user is not None:
317
                                    email = user.email
318
 
319
                        flipkartOrder = FlipkartOrders()
320
                        flipkartOrder.subtagId = subTagId
321
                        flipkartOrder.user_id = userId
322
                        flipkartOrder.identifier = order.get("identifier")
323
                        flipkartOrder.email = email
18465 amit.gupta 324
                        flipkartOrder.created = datetime.strptime(order.get("orderDate"), "%d-%m-%Y %H:%M:%S")
17238 amit.gupta 325
                        flipkartOrder.status = order.get("status")
326
                        flipkartOrder.title = order.get("title")
327
                        flipkartOrder.price = order.get("price")
328
                        flipkartOrder.quantity = order.get("quantity")
329
                        flipkartOrder.productCode = order.get("productId")
330
                        flipkartOrder.affiliateOrderItemId = order.get("affiliateOrderItemId")
331
                        flipkartOrder.payOut = order['tentativeCommission']
332
                        flipkartOrder.payOutPercentage = order['commissionRate']
333
                        skuData = getSkuData(2, order.get("productId"))
334
                        if skuData is not None:
335
                            flipkartOrder.catalogId = skuData.get("skuBundleId")
336
                            flipkartOrder.brand = skuData.get("brand")
337
                            flipkartOrder.model = skuData.get("model_name")
338
                            flipkartOrder.category = categoryMap.get(skuData.get("category_id"))
339
                            flipkartOrder.title =skuData.get("source_product_name")
340
 
341
                    session.commit()
17241 amit.gupta 342
                    nextUrl = resString['next']  
13721 amit.gupta 343
 
14412 amit.gupta 344
    def _saveToAffiliate(self, offers):
17238 amit.gupta 345
        collection = self.db.flipkartOrderAffiliateInfo1
346
        count=0
347
        for row in offers:
348
            if count==0:
349
                count += 1
350
                continue
351
            offer = self.covertToObj(row)
352
            collection.save(offer)
353
 
354
    def covertToObj(self,offer):
355
        affiliateorderitemid,title,productid,category,quantity,sales,price,commissionrate,tentativecommission,status,orderdate,saleschannel,customertype,affextparam1, affextparam2  = offer
356
        saleMap = {
357
               "affiliateorderitemid":affiliateorderitemid,
358
                "title":title,
359
                "productid":productid,
360
                "category":category,
361
                "quantity":quantity,
362
                "saleAmount":sales,
363
                "price":price,
364
                "commissionrate":commissionrate,
365
                "payOut":tentativecommission,
366
                "conversionStatus":status,
367
                "saleDate":orderdate,
368
                "saleschannel":saleschannel,
369
                "customertype":customertype,
370
                "affextparam1":affextparam1,
371
                "_id":affiliateorderitemid
372
        }
373
        return saleMap
14412 amit.gupta 374
 
375
 
21312 amit.gupta 376
    def parseOrderRawHtml(self, orderId, subTagId, userId, rawHtml, orderSuccessUrl):
377
        resp= {}
378
        try:
379
            url = ORDER_TRACK_URL + urlparse(orderSuccessUrl).query 
380
            merchantOrderId = re.findall('reference_id=(.*?)&', orderSuccessUrl,re.IGNORECASE)[0]
21310 amit.gupta 381
 
21312 amit.gupta 382
            merchantOrder = Order(orderId, userId, subTagId, self.store_id, orderSuccessUrl)
383
            merchantOrder.closed = False
384
            merchantOrder.merchantOrderId = merchantOrderId
385
            merchantOrder.orderTrackingUrl = url
386
            if self._saveToOrder(todict(merchantOrder)):
387
                resp['result'] = 'ORDER_CREATED'
388
            else:
389
                resp['result'] = 'ORDER_ALREADY_CREATED_IGNORED'
390
 
391
            return resp 
392
        except:
393
            traceback.print_exc()
394
            resp['result'] = 'ORDER_NOT_CREATED'
395
            return resp 
396
 
21310 amit.gupta 397
 
398
 
14617 amit.gupta 399
    def _getStatusFromDetailedStatus(self, detailedStatus):
400
        for key, value in Store.OrderStatusMap.iteritems():
14626 amit.gupta 401
            if detailedStatus.lower() in value:
14617 amit.gupta 402
                return key
14676 amit.gupta 403
        print "Detailed Status need to be mapped", detailedStatus, "Store:", self.store_name
20392 amit.gupta 404
        raise ParseException("_getStatusFromDetailedStatus", "Found new order status" + detailedStatus)           
13658 manas 405
 
406
def _saveToOrderFlipkart(self, order):
407
        collection = self.db.merchantOrder
408
        order = collection.insert(order)
409
 
13690 amit.gupta 410
 
411
 
412
def hex_md5(password):
413
    m = hashlib.md5()
414
    print(m.digest())
415
 
13658 manas 416
def main():
16210 amit.gupta 417
    store = getStore(2)
21319 amit.gupta 418
    store.trackOrdersForUser(30916, "https://www.flipkart.com/api/1/self-serve/orders?pageNum=1&link=myAccounts", readSSh("/home/amit/Downloads/htmldata"))
21246 amit.gupta 419
    #store.scrapeStoreOrders()
13679 manas 420
 
16209 amit.gupta 421
if __name__ == '__main__':
422
        main()
14145 amit.gupta 423