| Line 37... |
Line 37... |
| 37 |
main.Store.ORDER_CANCELLED : ['Closed For Vendor Reallocation']
|
37 |
main.Store.ORDER_CANCELLED : ['Closed For Vendor Reallocation']
|
| 38 |
|
38 |
|
| 39 |
}
|
39 |
}
|
| 40 |
def __init__(self,store_id):
|
40 |
def __init__(self,store_id):
|
| 41 |
client = MongoClient('mongodb://localhost:27017/')
|
41 |
client = MongoClient('mongodb://localhost:27017/')
|
| 42 |
self.db = client.dtr
|
42 |
self.db = client.Dtr
|
| 43 |
super(Store, self).__init__(store_id)
|
43 |
super(Store, self).__init__(store_id)
|
| 44 |
|
44 |
|
| 45 |
def getName(self):
|
45 |
def getName(self):
|
| 46 |
return "snapdeal"
|
46 |
return "snapdeal"
|
| 47 |
|
47 |
|
| Line 61... |
Line 61... |
| 61 |
allPyOffers = [self.covertToObj(offer).__dict__ for offer in allOffers]
|
61 |
allPyOffers = [self.covertToObj(offer).__dict__ for offer in allOffers]
|
| 62 |
self._saveToAffiliate(allPyOffers)
|
62 |
self._saveToAffiliate(allPyOffers)
|
| 63 |
|
63 |
|
| 64 |
|
64 |
|
| 65 |
def parseOrderRawHtml(self, orderId, subTagId, userId, rawHtml, orderSuccessUrl):
|
65 |
def parseOrderRawHtml(self, orderId, subTagId, userId, rawHtml, orderSuccessUrl):
|
| - |
|
66 |
try:
|
| 66 |
br = getBrowserObject()
|
67 |
br = getBrowserObject()
|
| 67 |
url = ORDER_TRACK_URL + re.findall('.*(\?.*?)$', orderSuccessUrl,re.IGNORECASE)[0]
|
68 |
url = ORDER_TRACK_URL + re.findall('.*(\?.*?)$', orderSuccessUrl,re.IGNORECASE)[0]
|
| 68 |
response = br.open(url)
|
69 |
response = br.open(url)
|
| 69 |
page = ungzipResponse(response, br)
|
70 |
page = ungzipResponse(response, br)
|
| 70 |
#page=page.decode("utf-8")
|
71 |
#page=page.decode("utf-8")
|
| 71 |
soup = BeautifulSoup(page,convertEntities=BeautifulSoup.HTML_ENTITIES)
|
72 |
soup = BeautifulSoup(page,convertEntities=BeautifulSoup.HTML_ENTITIES)
|
| 72 |
#orderHead = soup.find(name, attrs, recursive, text)
|
73 |
#orderHead = soup.find(name, attrs, recursive, text)
|
| 73 |
sections = soup.findAll("section")
|
74 |
sections = soup.findAll("section")
|
| 74 |
|
75 |
|
| 75 |
#print sections
|
76 |
#print sections
|
| 76 |
|
77 |
|
| 77 |
order = sections[1]
|
78 |
order = sections[1]
|
| 78 |
orderTrs = order.findAll("tr")
|
79 |
orderTrs = order.findAll("tr")
|
| 79 |
|
80 |
|
| 80 |
placedOn = str(orderTrs[0].findAll("td")[1].text)
|
81 |
placedOn = str(orderTrs[0].findAll("td")[1].text)
|
| 81 |
|
82 |
|
| 82 |
#Pop two section elements
|
83 |
#Pop two section elements
|
| 83 |
sections.pop(0)
|
84 |
sections.pop(0)
|
| 84 |
sections.pop(0)
|
85 |
sections.pop(0)
|
| 85 |
subOrders = sections
|
86 |
subOrders = sections
|
| 86 |
|
87 |
|
| 87 |
|
88 |
|
| 88 |
merchantSubOrders = []
|
89 |
merchantSubOrders = []
|
| 89 |
|
90 |
|
| 90 |
merchantOrder = Order(orderId, userId, subTagId, self.store_id, orderSuccessUrl)
|
91 |
merchantOrder = Order(orderId, userId, subTagId, self.store_id, orderSuccessUrl)
|
| 91 |
merchantOrder.merchantOderId = re.findall(r'\d+', str(soup.find("div", {"class":"deals_heading"})))[1]
|
92 |
merchantOrder.merchantOderId = re.findall(r'\d+', str(soup.find("div", {"class":"deals_heading"})))[1]
|
| 92 |
for orderTr in orderTrs:
|
93 |
for orderTr in orderTrs:
|
| 93 |
orderTrString = str(orderTr)
|
94 |
orderTrString = str(orderTr)
|
| 94 |
if "Total Amount" in orderTrString:
|
95 |
if "Total Amount" in orderTrString:
|
| 95 |
merchantOrder.totalAmount = re.findall(r'\d+', orderTrString)[0]
|
96 |
merchantOrder.totalAmount = re.findall(r'\d+', orderTrString)[0]
|
| 96 |
elif "Delivery Charges" in orderTrString:
|
97 |
elif "Delivery Charges" in orderTrString:
|
| 97 |
merchantOrder.deliveryCharges = re.findall(r'\d+', orderTrString)[0]
|
98 |
merchantOrder.deliveryCharges = re.findall(r'\d+', orderTrString)[0]
|
| 98 |
elif "Discount Applied" in orderTrString:
|
99 |
elif "Discount Applied" in orderTrString:
|
| 99 |
merchantOrder.discountApplied = re.findall(r'\d+', orderTrString)[0]
|
100 |
merchantOrder.discountApplied = re.findall(r'\d+', orderTrString)[0]
|
| 100 |
elif "Paid Amount" in orderTrString:
|
101 |
elif "Paid Amount" in orderTrString:
|
| 101 |
merchantOrder.paidAmount = re.findall(r'\d+', orderTrString)[0]
|
102 |
merchantOrder.paidAmount = re.findall(r'\d+', orderTrString)[0]
|
| 102 |
|
103 |
|
| 103 |
for subOrderElement in subOrders:
|
104 |
for subOrderElement in subOrders:
|
| 104 |
productUrl = str(subOrderElement.find("a")['href'])
|
105 |
productUrl = str(subOrderElement.find("a")['href'])
|
| 105 |
subTable = subOrderElement.find("table", {"class":"lrPad"})
|
106 |
subTable = subOrderElement.find("table", {"class":"lrPad"})
|
| 106 |
subTrs = subTable.findAll("tr")
|
107 |
subTrs = subTable.findAll("tr")
|
| 107 |
unitPrice=None
|
108 |
unitPrice=None
|
| 108 |
offerDiscount = None
|
109 |
offerDiscount = None
|
| 109 |
deliveryCharges = None
|
110 |
deliveryCharges = None
|
| 110 |
amountPaid = None
|
111 |
amountPaid = None
|
| 111 |
for subTr in subTrs:
|
112 |
for subTr in subTrs:
|
| 112 |
subTrString = str(subTr)
|
113 |
subTrString = str(subTr)
|
| 113 |
if "Unit Price" in subTrString:
|
114 |
if "Unit Price" in subTrString:
|
| 114 |
unitPrice = re.findall(r'\d+', subTrString)[0]
|
115 |
unitPrice = re.findall(r'\d+', subTrString)[0]
|
| 115 |
if "Quantity" in subTrString:
|
116 |
if "Quantity" in subTrString:
|
| 116 |
qty = re.findall(r'\d+', subTrString)[0]
|
117 |
qty = re.findall(r'\d+', subTrString)[0]
|
| 117 |
elif "Offer Discount" in subTrString:
|
118 |
elif "Offer Discount" in subTrString:
|
| 118 |
offerDiscount = re.findall(r'\d+', subTrString)[0]
|
119 |
offerDiscount = re.findall(r'\d+', subTrString)[0]
|
| 119 |
elif "Delivery Charges" in subTrString:
|
120 |
elif "Delivery Charges" in subTrString:
|
| 120 |
deliveryCharges = re.findall(r'\d+', subTrString)[0]
|
121 |
deliveryCharges = re.findall(r'\d+', subTrString)[0]
|
| 121 |
elif "Subtotal" in subTrString:
|
122 |
elif "Subtotal" in subTrString:
|
| 122 |
amountPaid = str(int(re.findall(r'\d+', subTrString)[0])/int(qty))
|
123 |
amountPaid = str(int(re.findall(r'\d+', subTrString)[0])/int(qty))
|
| 123 |
|
124 |
|
| 124 |
divs = subOrderElement.findAll("div", {"class": "blk lrPad subordrs"})
|
125 |
divs = subOrderElement.findAll("div", {"class": "blk lrPad subordrs"})
|
| 125 |
if len(divs)<=0:
|
126 |
if len(divs)<=0:
|
| 126 |
raise ParseException("subOrder", "Could not Parse suborders for Snapdeal")
|
127 |
raise ParseException("subOrder", "Could not Parse suborders for Snapdeal")
|
| 127 |
|
- |
|
| 128 |
for div in divs:
|
- |
|
| 129 |
productTitle = str(subOrderElement.find("a").text)
|
- |
|
| 130 |
productUrl = "http://m.snapdeal.com/" + productUrl
|
- |
|
| 131 |
subOrder = SubOrder(productTitle, productUrl, placedOn, amountPaid)
|
- |
|
| 132 |
|
- |
|
| 133 |
subOrder.amountPaid = amountPaid
|
- |
|
| 134 |
subOrder.deliveryCharges = deliveryCharges
|
- |
|
| 135 |
subOrder.offerDiscount = offerDiscount
|
- |
|
| 136 |
subOrder.unitPrice = unitPrice
|
- |
|
| 137 |
subOrder.productCode = re.findall(r'\d+$', productUrl)[0]
|
- |
|
| 138 |
|
- |
|
| 139 |
trackAnchor = div.find("a")
|
- |
|
| 140 |
if trackAnchor is not None:
|
- |
|
| 141 |
subOrder.tracingkUrl = str(trackAnchor['href'])
|
- |
|
| 142 |
|
- |
|
| 143 |
divStr = str(div)
|
- |
|
| 144 |
divStr = divStr.replace("\n","").replace("\t", "")
|
- |
|
| 145 |
|
128 |
|
| - |
|
129 |
for div in divs:
|
| - |
|
130 |
productTitle = str(subOrderElement.find("a").text)
|
| - |
|
131 |
productUrl = "http://m.snapdeal.com/" + productUrl
|
| - |
|
132 |
subOrder = SubOrder(productTitle, productUrl, placedOn, amountPaid)
|
| - |
|
133 |
|
| - |
|
134 |
subOrder.amountPaid = amountPaid
|
| - |
|
135 |
subOrder.deliveryCharges = deliveryCharges
|
| - |
|
136 |
subOrder.offerDiscount = offerDiscount
|
| - |
|
137 |
subOrder.unitPrice = unitPrice
|
| - |
|
138 |
subOrder.productCode = re.findall(r'\d+$', productUrl)[0]
|
| - |
|
139 |
|
| - |
|
140 |
trackAnchor = div.find("a")
|
| - |
|
141 |
if trackAnchor is not None:
|
| - |
|
142 |
subOrder.tracingkUrl = str(trackAnchor['href'])
|
| - |
|
143 |
|
| - |
|
144 |
divStr = str(div)
|
| - |
|
145 |
divStr = divStr.replace("\n","").replace("\t", "")
|
| - |
|
146 |
|
| 146 |
for line in divStr.split("<br />"):
|
147 |
for line in divStr.split("<br />"):
|
| 147 |
if "Suborder ID" in line:
|
148 |
if "Suborder ID" in line:
|
| 148 |
subOrder.merchantSubOrderId = re.findall(r'\d+', line)[0]
|
149 |
subOrder.merchantSubOrderId = re.findall(r'\d+', line)[0]
|
| 149 |
elif "Status" in line:
|
150 |
elif "Status" in line:
|
| 150 |
subOrder.detailedStatus = re.findall('>(.*?)</span>', line, re.IGNORECASE)[0]
|
151 |
subOrder.detailedStatus = re.findall('>(.*?)</span>', line, re.IGNORECASE)[0]
|
| 151 |
elif "Est. Shipping Date" in line:
|
152 |
elif "Est. Shipping Date" in line:
|
| 152 |
subOrder.estimatedShippingDate = line.split(":")[1].strip()
|
153 |
subOrder.estimatedShippingDate = line.split(":")[1].strip()
|
| 153 |
elif "Est. Delivery Date" in line:
|
154 |
elif "Est. Delivery Date" in line:
|
| 154 |
subOrder.estimatedDeliveryDate = line.split(":")[1].strip()
|
155 |
subOrder.estimatedDeliveryDate = line.split(":")[1].strip()
|
| 155 |
elif "Courier Name" in line:
|
156 |
elif "Courier Name" in line:
|
| 156 |
subOrder.courierName = line.split(":")[1].strip()
|
157 |
subOrder.courierName = line.split(":")[1].strip()
|
| 157 |
elif "Tracking No" in line:
|
158 |
elif "Tracking No" in line:
|
| 158 |
subOrder.trackingNumber = line.split(":")[1].strip()
|
159 |
subOrder.trackingNumber = line.split(":")[1].strip()
|
| 159 |
|
160 |
|
| 160 |
merchantSubOrders.append(subOrder)
|
161 |
merchantSubOrders.append(subOrder)
|
| 161 |
|
162 |
|
| 162 |
merchantOrder.subOrders = merchantSubOrders
|
163 |
merchantOrder.subOrders = merchantSubOrders
|
| 163 |
#print merchantOrder
|
164 |
#print merchantOrder
|
| 164 |
|
165 |
|
| 165 |
self._saveToOrder(todict(merchantOrder))
|
166 |
self._saveToOrder(todict(merchantOrder))
|
| - |
|
167 |
return True
|
| - |
|
168 |
except:
|
| - |
|
169 |
print "Error occurred"
|
| 166 |
|
170 |
|
| - |
|
171 |
return False
|
| 167 |
#soup = BeautifulSoup(rawHtml,convertEntities=BeautifulSoup.HTML_ENTITIES)
|
172 |
#soup = BeautifulSoup(rawHtml,convertEntities=BeautifulSoup.HTML_ENTITIES)
|
| 168 |
#soup.find(name, attrs, recursive, text)
|
173 |
#soup.find(name, attrs, recursive, text)
|
| 169 |
|
174 |
|
| 170 |
|
175 |
|
| 171 |
|
176 |
|