| Line 28... |
Line 28... |
| 28 |
AFF_STATUS_APPROVED='approved'
|
28 |
AFF_STATUS_APPROVED='approved'
|
| 29 |
AFF_STATUS_DISAPPROVED='disapproved'
|
29 |
AFF_STATUS_DISAPPROVED='disapproved'
|
| 30 |
AFF_STATUS_PENDING='pending'
|
30 |
AFF_STATUS_PENDING='pending'
|
| 31 |
|
31 |
|
| 32 |
|
32 |
|
| 33 |
class Store(main.Store):
|
33 |
class Store(MStore):
|
| 34 |
OrderStatusMap = {
|
34 |
OrderStatusMap = {
|
| 35 |
main.Store.ORDER_PLACED : ['Approval', 'Processing'],
|
35 |
main.Store.ORDER_PLACED : ['Approval', 'Processing'],
|
| 36 |
main.Store.ORDER_DELIVERED : ['Shipping'],
|
36 |
main.Store.ORDER_DELIVERED : ['Shipping'],
|
| 37 |
main.Store.ORDER_SHIPPED : ['In Transit'],
|
37 |
main.Store.ORDER_SHIPPED : ['In Transit'],
|
| 38 |
main.Store.ORDER_CANCELLED : ['']
|
38 |
main.Store.ORDER_CANCELLED : ['']
|
| Line 171... |
Line 171... |
| 171 |
updateMap['subOrders.$.cashBackAmount'], updateMap['subOrders.$.cashBacPercentage'] = self.getCashbackAmount(productCode, price)
|
171 |
updateMap['subOrders.$.cashBackAmount'], updateMap['subOrders.$.cashBacPercentage'] = self.getCashbackAmount(productCode, price)
|
| 172 |
self._updateOrdersPayBackStatus({'subTagId':subTagId, 'subOrders.productCode':productCode}, updateMap)
|
172 |
self._updateOrdersPayBackStatus({'subTagId':subTagId, 'subOrders.productCode':productCode}, updateMap)
|
| 173 |
|
173 |
|
| 174 |
|
174 |
|
| 175 |
def parseOrderRawHtml(self, orderId, subTagId, userId, rawHtml, orderSuccessUrl):
|
175 |
def parseOrderRawHtml(self, orderId, subTagId, userId, rawHtml, orderSuccessUrl):
|
| 176 |
br = getBrowserObject()
|
176 |
response= {}
|
| 177 |
url = ORDER_TRACK_URL + re.findall('.*(\?.*?)$', orderSuccessUrl,re.IGNORECASE)[0]
|
177 |
try:
|
| 178 |
|
178 |
br = getBrowserObject()
|
| 179 |
response = br.open(url)
|
179 |
url = ORDER_TRACK_URL + re.findall('.*(\?.*?)$', orderSuccessUrl,re.IGNORECASE)[0]
|
| 180 |
page = ungzipResponse(response)
|
180 |
|
| 181 |
|
181 |
response = br.open(url)
|
| 182 |
merchantOrderId = re.findall('reference_id=(.*?)&', orderSuccessUrl,re.IGNORECASE)[0]
|
182 |
page = ungzipResponse(response)
|
| 183 |
print merchantOrderId
|
183 |
|
| 184 |
|
184 |
merchantOrderId = re.findall('reference_id=(.*?)&', orderSuccessUrl,re.IGNORECASE)[0]
|
| 185 |
soup = BeautifulSoup(page,convertEntities=BeautifulSoup.HTML_ENTITIES)
|
185 |
print merchantOrderId
|
| 186 |
|
186 |
|
| 187 |
sections = soup.findAll("div", {"class":"ui-app-card-body"})
|
187 |
soup = BeautifulSoup(page,convertEntities=BeautifulSoup.HTML_ENTITIES)
|
| 188 |
sections.pop(1)
|
188 |
|
| 189 |
|
189 |
sections = soup.findAll("div", {"class":"ui-app-card-body"})
|
| 190 |
merchantOrder = Order(orderId, userId, subTagId, self.store_id, orderSuccessUrl)
|
190 |
sections.pop(1)
|
| 191 |
for data in sections:
|
191 |
|
| 192 |
name = data.findAll("span")
|
192 |
merchantOrder = Order(orderId, userId, subTagId, self.store_id, orderSuccessUrl)
|
| 193 |
i=0
|
193 |
for data in sections:
|
| 194 |
while i< len(name):
|
194 |
name = data.findAll("span")
|
| 195 |
if "key" in str(name[i]):
|
195 |
i=0
|
| 196 |
if "Grand Total" in str(name[i]):
|
196 |
while i< len(name):
|
| 197 |
#Total Amount
|
197 |
if "key" in str(name[i]):
|
| 198 |
merchantOrder.paidAmount = int(re.findall(r'\d+', name[i+1].text)[0])
|
198 |
if "Grand Total" in str(name[i]):
|
| 199 |
elif "Order Date" in str(name[i]):
|
199 |
#Total Amount
|
| 200 |
merchantOrder.placedOn = name[i+1].text
|
200 |
merchantOrder.paidAmount = int(re.findall(r'\d+', name[i+1].text)[0])
|
| 201 |
i=i+1
|
201 |
elif "Order Date" in str(name[i]):
|
| 202 |
|
202 |
merchantOrder.placedOn = name[i+1].text
|
| 203 |
merchantOrder.merchantOrderId = merchantOrderId
|
203 |
i=i+1
|
| 204 |
|
204 |
|
| 205 |
mainOrder = soup.find("ul",{"class":"m-bottom p-cart"})
|
205 |
merchantOrder.merchantOrderId = merchantOrderId
|
| 206 |
fkSubOrders = mainOrder.findAll("li")
|
206 |
|
| 207 |
#remove unwanted list
|
207 |
mainOrder = soup.find("ul",{"class":"m-bottom p-cart"})
|
| 208 |
fkSubOrders.pop(-1)
|
208 |
fkSubOrders = mainOrder.findAll("li")
|
| 209 |
subOrders = []
|
209 |
#remove unwanted list
|
| 210 |
merchantOrder.subOrders = subOrders
|
210 |
fkSubOrders.pop(-1)
|
| 211 |
|
211 |
subOrders = []
|
| 212 |
#fetching suborders details
|
212 |
merchantOrder.subOrders = subOrders
|
| 213 |
for subOrder in fkSubOrders:
|
213 |
|
| 214 |
y = subOrder.find("header").findAll("span")
|
214 |
#fetching suborders details
|
| 215 |
for suborderId in y:
|
215 |
for subOrder in fkSubOrders:
|
| 216 |
if "value emp" in str(suborderId):
|
216 |
y = subOrder.find("header").findAll("span")
|
| 217 |
merchantSubOrderId = suborderId.text
|
217 |
for suborderId in y:
|
| 218 |
break
|
218 |
if "value emp" in str(suborderId):
|
| 219 |
orderItems = subOrder.find("ul").findAll("div", recursive=False)
|
219 |
merchantSubOrderId = suborderId.text
|
| 220 |
i=0
|
220 |
break
|
| 221 |
for orderItem in orderItems:
|
221 |
orderItems = subOrder.find("ul").findAll("div", recursive=False)
|
| 222 |
merchantOrder.placedOn
|
222 |
i=0
|
| 223 |
merchantSubOrderId = merchantSubOrderId + str(i)
|
223 |
for orderItem in orderItems:
|
| 224 |
divs = orderItem.findAll('div', recursive=False)
|
224 |
merchantOrder.placedOn
|
| 225 |
content = divs[0]
|
225 |
merchantSubOrderId = merchantSubOrderId + str(i)
|
| 226 |
orderTracking = divs[2]
|
226 |
divs = orderItem.findAll('div', recursive=False)
|
| 227 |
orderTrackingDet = divs[3]
|
227 |
content = divs[0]
|
| 228 |
|
228 |
orderTracking = divs[2]
|
| 229 |
|
229 |
orderTrackingDet = divs[3]
|
| 230 |
imgUrl = content.find('img')['src']
|
230 |
|
| 231 |
lineDet = content.find("div",{"class":"product-info"})
|
231 |
|
| 232 |
productTitle = lineDet.find("a",{"class":"product-title"}).text
|
232 |
imgUrl = content.find('img')['src']
|
| 233 |
productUrl = str(lineDet.find("a")['href'])
|
233 |
lineDet = content.find("div",{"class":"product-info"})
|
| 234 |
|
234 |
productTitle = lineDet.find("a",{"class":"product-title"}).text
|
| 235 |
start='pid='
|
235 |
productUrl = str(lineDet.find("a")['href'])
|
| 236 |
s=str(lineDet.find("a")['href'])
|
236 |
|
| 237 |
productCode = re.findall(re.escape(start)+"(.*)",s)[0]
|
237 |
start='pid='
|
| 238 |
mname = lineDet.findAll("span")
|
238 |
s=str(lineDet.find("a")['href'])
|
| 239 |
k=0
|
239 |
productCode = re.findall(re.escape(start)+"(.*)",s)[0]
|
| 240 |
while k<len(mname):
|
240 |
mname = lineDet.findAll("span")
|
| 241 |
if "note" in str(mname[k]):
|
241 |
k=0
|
| 242 |
if "Color:" in str(mname[k]):
|
242 |
while k<len(mname):
|
| 243 |
productTitle = productTitle + " " + mname[k+1].text
|
243 |
if "note" in str(mname[k]):
|
| 244 |
|
244 |
if "Color:" in str(mname[k]):
|
| 245 |
elif "Qty:" in str(mname[k]):
|
245 |
productTitle = productTitle + " " + mname[k+1].text
|
| 246 |
quantity = int(mname[k+1].text)
|
246 |
|
| 247 |
elif "Subtotal:" in str(mname[k]):
|
247 |
elif "Qty:" in str(mname[k]):
|
| 248 |
amountPaid = re.findall(r'\d+', mname[k+1].text)[0]
|
248 |
quantity = int(mname[k+1].text)
|
| 249 |
elif "Delivery:" in str(mname[k]):
|
249 |
elif "Subtotal:" in str(mname[k]):
|
| 250 |
#Delivery Date for sub order
|
250 |
amountPaid = re.findall(r'\d+', mname[k+1].text)[0]
|
| 251 |
print "Delivery Date " +mname[k+1].text
|
251 |
elif "Delivery:" in str(mname[k]):
|
| 252 |
k=k+1
|
252 |
#Delivery Date for sub order
|
| 253 |
merchantsubOrder = SubOrder(productTitle, productUrl, merchantOrder.placedOn, amountPaid,MStore.ORDER_PLACED, quantity)
|
253 |
print "Delivery Date " +mname[k+1].text
|
| 254 |
merchantsubOrder.imgUrl = imgUrl
|
254 |
k=k+1
|
| 255 |
merchantsubOrder.productCode = productCode
|
255 |
merchantsubOrder = SubOrder(productTitle, productUrl, merchantOrder.placedOn, amountPaid,MStore.ORDER_PLACED, quantity)
|
| 256 |
merchantsubOrder.merchantSubOrderId = merchantSubOrderId
|
256 |
merchantsubOrder.imgUrl = imgUrl
|
| 257 |
cashbackAmount, cashbackPercent = self.getCashbackAmount(subOrder.productCode, amountPaid)
|
257 |
merchantsubOrder.productCode = productCode
|
| 258 |
cashbackStatus = Store.CB_INIT
|
258 |
merchantsubOrder.merchantSubOrderId = merchantSubOrderId
|
| 259 |
if cashbackAmount <= 0:
|
259 |
cashbackAmount, cashbackPercent = self.getCashbackAmount(subOrder.productCode, amountPaid)
|
| 260 |
cashbackStatus = Store.CB_NA
|
260 |
cashbackStatus = Store.CB_PENDING
|
| 261 |
merchantsubOrder.cashBackAmount = cashbackAmount
|
261 |
if cashbackAmount <= 0:
|
| 262 |
merchantsubOrder.cashBackStatus = cashbackStatus
|
262 |
cashbackStatus = Store.CB_NA
|
| 263 |
merchantsubOrder.cashBackPercentage = cashbackPercent
|
263 |
merchantsubOrder.cashBackAmount = cashbackAmount
|
| 264 |
|
264 |
merchantsubOrder.cashBackStatus = cashbackStatus
|
| 265 |
subOrders.append(merchantsubOrder)
|
265 |
merchantsubOrder.cashBackPercentage = cashbackPercent
|
| 266 |
#To track shipping details
|
266 |
|
| 267 |
status=-1
|
267 |
subOrders.append(merchantsubOrder)
|
| 268 |
tr = orderTracking.findAll("div",{"class":"tap-bullet-area c-tab-trigger"})
|
268 |
#To track shipping details
|
| 269 |
if "approveDetails-complete" in str(tr):
|
269 |
status=-1
|
| 270 |
if "processingDetails-complete" in str(tr):
|
270 |
tr = orderTracking.findAll("div",{"class":"tap-bullet-area c-tab-trigger"})
|
| 271 |
if "shippingDetails-complete" in str(tr):
|
271 |
if "approveDetails-complete" in str(tr):
|
| 272 |
if "delivery-complete" in str(tr):
|
272 |
if "processingDetails-complete" in str(tr):
|
| 273 |
status = MStore.ORDER_DELIVERED
|
273 |
if "shippingDetails-complete" in str(tr):
|
| 274 |
else:
|
274 |
if "delivery-complete" in str(tr):
|
| 275 |
status = MStore.ORDER_SHIPPED
|
275 |
status = MStore.ORDER_DELIVERED
|
| 276 |
orderTracking.find('div', {'class':'tracking-remark active'})
|
276 |
else:
|
| 277 |
else:
|
277 |
status = MStore.ORDER_SHIPPED
|
| - |
|
278 |
orderTracking.find('div', {'class':'tracking-remark active'})
|
| - |
|
279 |
else:
|
| - |
|
280 |
status = MStore.ORDER_PLACED
|
| - |
|
281 |
else:
|
| 278 |
status = MStore.ORDER_PLACED
|
282 |
status = MStore.ORDER_PLACED
|
| 279 |
else:
|
- |
|
| 280 |
status = MStore.ORDER_PLACED
|
- |
|
| 281 |
elif str(tr) in ["approveDetails-ongoing"]:
|
283 |
elif str(tr) in ["approveDetails-ongoing"]:
|
| 282 |
status=MStore.ORDER_PLACED
|
284 |
status=MStore.ORDER_PLACED
|
| 283 |
if "dead" in str(tr):
|
285 |
if "dead" in str(tr):
|
| 284 |
status = MStore.ORDER_CANCELLED
|
286 |
status = MStore.ORDER_CANCELLED
|
| 285 |
print "Sub Order Status " + str(status)
|
287 |
print "Sub Order Status " + str(status)
|
| 286 |
|
288 |
|
| 287 |
trackingDetailsActive = orderTrackingDet.find("div",{"class":"c-tabs-content m-top active"})
|
289 |
trackingDetailsActive = orderTrackingDet.find("div",{"class":"c-tabs-content m-top active"})
|
| 288 |
print "Sub order tracking description " + trackingDetailsActive.text
|
290 |
print "Sub order tracking description " + trackingDetailsActive.text
|
| 289 |
self._saveToOrder(todict(merchantOrder))
|
291 |
self._saveToOrder(todict(merchantOrder))
|
| - |
|
292 |
response['result'] = 'ORDER_CREATED'
|
| - |
|
293 |
return response
|
| - |
|
294 |
except:
|
| - |
|
295 |
response['result'] = 'PARSE_ERROR'
|
| - |
|
296 |
return response
|
| - |
|
297 |
|
| 290 |
|
298 |
|
| 291 |
def flipkartOrderTracking(self, orderId, subTagId, userId, rawHtml, orderSuccessUrl):
|
299 |
def flipkartOrderTracking(self, orderId, subTagId, userId, rawHtml, orderSuccessUrl):
|
| 292 |
br = getBrowserObject()
|
300 |
br = getBrowserObject()
|
| 293 |
url = ORDER_TRACK_URL + re.findall('.*(\?.*?)$', orderSuccessUrl,re.IGNORECASE)[0]
|
301 |
url = ORDER_TRACK_URL + re.findall('.*(\?.*?)$', orderSuccessUrl,re.IGNORECASE)[0]
|
| 294 |
|
302 |
|