| Line 282... |
Line 282... |
| 282 |
|
282 |
|
| 283 |
|
283 |
|
| 284 |
def parseOrderRawHtml(self, orderId, subTagId, userId, rawHtml, orderSuccessUrl):
|
284 |
def parseOrderRawHtml(self, orderId, subTagId, userId, rawHtml, orderSuccessUrl):
|
| 285 |
resp= {}
|
285 |
resp= {}
|
| 286 |
try:
|
286 |
try:
|
| 287 |
br = getBrowserObject(mobileAgent)
|
- |
|
| 288 |
url = ORDER_TRACK_URL + urlparse(orderSuccessUrl).query
|
- |
|
| 289 |
|
- |
|
| 290 |
response = br.open(url)
|
- |
|
| 291 |
page = ungzipResponse(response)
|
- |
|
| 292 |
|
- |
|
| 293 |
merchantOrderId = re.findall('reference_id=(.*?)&', orderSuccessUrl,re.IGNORECASE)[0]
|
287 |
merchantOrderId = re.findall('reference_id=(.*?)&', orderSuccessUrl,re.IGNORECASE)[0]
|
| - |
|
288 |
if len(self.db.merchantOrder.find({"merchantOrderId":merchantOrderId})) == 0:
|
| - |
|
289 |
br = getBrowserObject(mobileAgent)
|
| - |
|
290 |
url = ORDER_TRACK_URL + urlparse(orderSuccessUrl).query
|
| - |
|
291 |
|
| - |
|
292 |
response = br.open(url)
|
| - |
|
293 |
page = ungzipResponse(response)
|
| - |
|
294 |
|
| 294 |
print merchantOrderId
|
295 |
print merchantOrderId
|
| 295 |
|
296 |
|
| 296 |
soup = BeautifulSoup(page,convertEntities=BeautifulSoup.HTML_ENTITIES)
|
297 |
soup = BeautifulSoup(page,convertEntities=BeautifulSoup.HTML_ENTITIES)
|
| 297 |
|
298 |
|
| 298 |
sections = soup.findAll("div", {"class":"ui-app-card-body"})
|
299 |
sections = soup.findAll("div", {"class":"ui-app-card-body"})
|
| 299 |
sections.pop(1)
|
300 |
sections.pop(1)
|
| 300 |
|
301 |
|
| 301 |
merchantOrder = Order(orderId, userId, subTagId, self.store_id, orderSuccessUrl)
|
302 |
merchantOrder = Order(orderId, userId, subTagId, self.store_id, orderSuccessUrl)
|
| 302 |
merchantOrder.closed = True
|
303 |
merchantOrder.closed = True
|
| 303 |
merchantOrder.orderTrackingUrl = url
|
304 |
merchantOrder.orderTrackingUrl = url
|
| 304 |
for data in sections:
|
305 |
for data in sections:
|
| 305 |
name = data.findAll("span")
|
306 |
name = data.findAll("span")
|
| 306 |
i=0
|
307 |
i=0
|
| 307 |
while i< len(name):
|
308 |
while i< len(name):
|
| 308 |
if "key" in str(name[i]):
|
309 |
if "key" in str(name[i]):
|
| 309 |
if "Grand Total" in str(name[i]):
|
310 |
if "Grand Total" in str(name[i]):
|
| 310 |
#Total Amount
|
311 |
#Total Amount
|
| 311 |
merchantOrder.paidAmount = int(re.findall(r'\d+', name[i+1].text)[0])
|
312 |
merchantOrder.paidAmount = int(re.findall(r'\d+', name[i+1].text)[0])
|
| 312 |
elif "Order Date" in str(name[i]):
|
313 |
elif "Order Date" in str(name[i]):
|
| 313 |
merchantOrder.placedOn = name[i+1].text
|
314 |
merchantOrder.placedOn = name[i+1].text
|
| 314 |
i=i+1
|
315 |
i=i+1
|
| 315 |
|
316 |
|
| 316 |
merchantOrder.merchantOrderId = merchantOrderId
|
317 |
merchantOrder.merchantOrderId = merchantOrderId
|
| 317 |
|
318 |
|
| 318 |
mainOrder = soup.find("ul",{"class":"m-bottom p-cart"})
|
319 |
mainOrder = soup.find("ul",{"class":"m-bottom p-cart"})
|
| 319 |
fkSubOrders = mainOrder.findAll("li")
|
320 |
fkSubOrders = mainOrder.findAll("li")
|
| 320 |
#remove unwanted list
|
321 |
#remove unwanted list
|
| 321 |
fkSubOrders.pop(-1)
|
322 |
fkSubOrders.pop(-1)
|
| 322 |
subOrders = []
|
323 |
subOrders = []
|
| 323 |
merchantOrder.subOrders = subOrders
|
324 |
merchantOrder.subOrders = subOrders
|
| 324 |
|
325 |
|
| 325 |
for subOrder in fkSubOrders:
|
326 |
for subOrder in fkSubOrders:
|
| 326 |
orderItems = subOrder.findAll("div", "product-list-item", recursive=True)
|
327 |
orderItems = subOrder.findAll("div", "product-list-item", recursive=True)
|
| 327 |
for orderItem in orderItems:
|
328 |
for orderItem in orderItems:
|
| 328 |
if not orderItem.has_key("id"):
|
329 |
if not orderItem.has_key("id"):
|
| 329 |
continue
|
330 |
continue
|
| 330 |
divs = orderItem.findAll('div', recursive=False)
|
331 |
divs = orderItem.findAll('div', recursive=False)
|
| 331 |
content = divs[0]
|
332 |
content = divs[0]
|
| 332 |
orderTracking = divs[2]
|
333 |
orderTracking = divs[2]
|
| 333 |
merchantSubOrderId = divs[3].get('id')
|
334 |
merchantSubOrderId = divs[3].get('id')
|
| 334 |
imgUrl = content.find('img')['src']
|
335 |
imgUrl = content.find('img')['src']
|
| 335 |
lineDet = content.find("div",{"class":"product-info"})
|
336 |
lineDet = content.find("div",{"class":"product-info"})
|
| 336 |
productTitle = lineDet.find("a",{"class":"product-title"}).text
|
337 |
productTitle = lineDet.find("a",{"class":"product-title"}).text
|
| 337 |
productUrl = str(lineDet.find("a")['href'])
|
338 |
productUrl = str(lineDet.find("a")['href'])
|
| - |
|
339 |
|
| - |
|
340 |
start='pid='
|
| - |
|
341 |
s=str(lineDet.find("a")['href'])
|
| - |
|
342 |
productCode = re.findall(re.escape(start)+"(.*)",s)[0].strip()
|
| - |
|
343 |
mname = lineDet.findAll("span")
|
| - |
|
344 |
k=0
|
| - |
|
345 |
while k<len(mname):
|
| - |
|
346 |
if "note" in str(mname[k]):
|
| - |
|
347 |
if "Color:" in str(mname[k]):
|
| - |
|
348 |
productTitle = productTitle + " " + mname[k+1].text
|
| - |
|
349 |
|
| - |
|
350 |
elif "Qty:" in str(mname[k]):
|
| - |
|
351 |
quantity = int(mname[k+1].text)
|
| - |
|
352 |
elif "Subtotal:" in str(mname[k]):
|
| - |
|
353 |
amountPaid = int(re.findall(r'\d+', mname[k+1].text)[0])
|
| - |
|
354 |
elif "Delivery:" in str(mname[k]):
|
| - |
|
355 |
#Delivery Date for sub order
|
| - |
|
356 |
print "Delivery Date " +mname[k+1].text
|
| - |
|
357 |
k=k+1
|
| - |
|
358 |
merchantsubOrder = SubOrder(productTitle, productUrl, merchantOrder.placedOn, amountPaid,MStore.ORDER_PLACED, quantity)
|
| - |
|
359 |
merchantsubOrder.imgUrl = imgUrl
|
| - |
|
360 |
merchantsubOrder.productCode = productCode
|
| - |
|
361 |
merchantsubOrder.merchantSubOrderId = merchantSubOrderId
|
| - |
|
362 |
print "productCode", productCode
|
| - |
|
363 |
print "amountPaid", amountPaid
|
| - |
|
364 |
cashbackAmount, cashbackPercent = self.getCashbackAmount(productCode, amountPaid)
|
| - |
|
365 |
cashbackStatus = Store.CB_PENDING
|
| - |
|
366 |
if cashbackAmount <= 0:
|
| - |
|
367 |
cashbackStatus = Store.CB_NA
|
| - |
|
368 |
merchantsubOrder.cashBackAmount = cashbackAmount
|
| - |
|
369 |
merchantsubOrder.cashBackStatus = cashbackStatus
|
| - |
|
370 |
merchantsubOrder.cashBackPercentage = cashbackPercent
|
| - |
|
371 |
activePart = orderItem.find("div", "c-tabs-content m-top active")
|
| - |
|
372 |
if activePart is not None:
|
| - |
|
373 |
merchantsubOrder.detailedStatus = str(activePart.find("div", "tracking-remark").text)
|
| - |
|
374 |
|
| - |
|
375 |
#To track shipping details
|
| - |
|
376 |
status=ORDER_PLACED
|
| - |
|
377 |
tr = orderTracking.findAll("div",{"class":"tap-bullet-area c-tab-trigger"})
|
| - |
|
378 |
if "approveDetails-ongoing" in str(tr) or "processingDetails-ongoing" in str(tr):
|
| - |
|
379 |
pass
|
| - |
|
380 |
elif "shippingDetails-ongoing" in str(tr):
|
| - |
|
381 |
status = MStore.ORDER_SHIPPED
|
| - |
|
382 |
elif "delivery-complete" in str(tr):
|
| - |
|
383 |
status = MStore.ORDER_DELIVERED
|
| - |
|
384 |
if cashbackStatus!=MStore.CB_NA:
|
| - |
|
385 |
merchantsubOrder.cashBackStatus = MStore.CB_APPROVED
|
| - |
|
386 |
merchantsubOrder.closed = True
|
| - |
|
387 |
if "dead" in str(tr) or "shippingDetails-returnOngoing" in str(tr) or "shippingDetails-return" in str(tr):
|
| - |
|
388 |
status = MStore.ORDER_CANCELLED
|
| - |
|
389 |
if merchantsubOrder.cashBackStatus != MStore.CB_NA:
|
| - |
|
390 |
merchantsubOrder.cashBackStatus = MStore.CB_CANCELLED
|
| - |
|
391 |
merchantsubOrder.closed = True
|
| - |
|
392 |
print "Sub Order Status " + str(status)
|
| - |
|
393 |
merchantsubOrder.status=status
|
| - |
|
394 |
if merchantOrder.closed:
|
| - |
|
395 |
merchantOrder.closed = merchantsubOrder.closed
|
| - |
|
396 |
subOrders.append(merchantsubOrder)
|
| 338 |
|
397 |
|
| 339 |
start='pid='
|
- |
|
| 340 |
s=str(lineDet.find("a")['href'])
|
- |
|
| 341 |
productCode = re.findall(re.escape(start)+"(.*)",s)[0].strip()
|
- |
|
| 342 |
mname = lineDet.findAll("span")
|
- |
|
| 343 |
k=0
|
- |
|
| 344 |
while k<len(mname):
|
- |
|
| 345 |
if "note" in str(mname[k]):
|
- |
|
| 346 |
if "Color:" in str(mname[k]):
|
- |
|
| 347 |
productTitle = productTitle + " " + mname[k+1].text
|
- |
|
| 348 |
|
- |
|
| 349 |
elif "Qty:" in str(mname[k]):
|
- |
|
| 350 |
quantity = int(mname[k+1].text)
|
- |
|
| 351 |
elif "Subtotal:" in str(mname[k]):
|
- |
|
| 352 |
amountPaid = int(re.findall(r'\d+', mname[k+1].text)[0])
|
- |
|
| 353 |
elif "Delivery:" in str(mname[k]):
|
- |
|
| 354 |
#Delivery Date for sub order
|
- |
|
| 355 |
print "Delivery Date " +mname[k+1].text
|
- |
|
| 356 |
k=k+1
|
- |
|
| 357 |
merchantsubOrder = SubOrder(productTitle, productUrl, merchantOrder.placedOn, amountPaid,MStore.ORDER_PLACED, quantity)
|
- |
|
| 358 |
merchantsubOrder.imgUrl = imgUrl
|
- |
|
| 359 |
merchantsubOrder.productCode = productCode
|
398 |
if self._saveToOrder(todict(merchantOrder)):
|
| 360 |
merchantsubOrder.merchantSubOrderId = merchantSubOrderId
|
- |
|
| 361 |
print "productCode", productCode
|
- |
|
| 362 |
print "amountPaid", amountPaid
|
- |
|
| 363 |
cashbackAmount, cashbackPercent = self.getCashbackAmount(productCode, amountPaid)
|
- |
|
| 364 |
cashbackStatus = Store.CB_PENDING
|
399 |
resp['result'] = 'ORDER_CREATED'
|
| 365 |
if cashbackAmount <= 0:
|
- |
|
| 366 |
cashbackStatus = Store.CB_NA
|
- |
|
| 367 |
merchantsubOrder.cashBackAmount = cashbackAmount
|
- |
|
| 368 |
merchantsubOrder.cashBackStatus = cashbackStatus
|
- |
|
| 369 |
merchantsubOrder.cashBackPercentage = cashbackPercent
|
- |
|
| 370 |
activePart = orderItem.find("div", "c-tabs-content m-top active")
|
- |
|
| 371 |
if activePart is not None:
|
- |
|
| 372 |
merchantsubOrder.detailedStatus = str(activePart.find("div", "tracking-remark").text)
|
- |
|
| 373 |
|
400 |
else:
|
| 374 |
#To track shipping details
|
- |
|
| 375 |
status=ORDER_PLACED
|
- |
|
| 376 |
tr = orderTracking.findAll("div",{"class":"tap-bullet-area c-tab-trigger"})
|
- |
|
| 377 |
if "approveDetails-ongoing" in str(tr) or "processingDetails-ongoing" in str(tr):
|
- |
|
| 378 |
pass
|
- |
|
| 379 |
elif "shippingDetails-ongoing" in str(tr):
|
- |
|
| 380 |
status = MStore.ORDER_SHIPPED
|
- |
|
| 381 |
elif "delivery-complete" in str(tr):
|
- |
|
| 382 |
status = MStore.ORDER_DELIVERED
|
- |
|
| 383 |
if cashbackStatus!=MStore.CB_NA:
|
- |
|
| 384 |
merchantsubOrder.cashBackStatus = MStore.CB_APPROVED
|
- |
|
| 385 |
merchantsubOrder.closed = True
|
- |
|
| 386 |
if "dead" in str(tr) or "shippingDetails-returnOngoing" in str(tr) or "shippingDetails-return" in str(tr):
|
- |
|
| 387 |
status = MStore.ORDER_CANCELLED
|
- |
|
| 388 |
if merchantsubOrder.cashBackStatus != MStore.CB_NA:
|
- |
|
| 389 |
merchantsubOrder.cashBackStatus = MStore.CB_CANCELLED
|
- |
|
| 390 |
merchantsubOrder.closed = True
|
- |
|
| 391 |
print "Sub Order Status " + str(status)
|
- |
|
| 392 |
merchantsubOrder.status=status
|
- |
|
| 393 |
if merchantOrder.closed:
|
- |
|
| 394 |
merchantOrder.closed = merchantsubOrder.closed
|
- |
|
| 395 |
subOrders.append(merchantsubOrder)
|
- |
|
| 396 |
|
- |
|
| 397 |
if self._saveToOrder(todict(merchantOrder)):
|
- |
|
| 398 |
resp['result'] = 'ORDER_CREATED'
|
401 |
resp['result'] = 'ORDER_ALREADY_CREATED_IGNORED'
|
| 399 |
else:
|
402 |
else:
|
| 400 |
resp['result'] = 'ORDER_ALREADY_CREATED_IGNORED'
|
403 |
resp['result'] = 'ORDER_ALREADY_CREATED_IGNORED'
|
| 401 |
|
404 |
|
| 402 |
return resp
|
405 |
return resp
|
| 403 |
except:
|
406 |
except:
|