| 12935 |
kshitij.so |
1 |
from elixir import *
|
|
|
2 |
from shop2020.config.client.ConfigClient import ConfigClient
|
|
|
3 |
from shop2020.model.v1.order.impl import DataService
|
|
|
4 |
from shop2020.model.v1.order.impl.DataService import MobileActivationRecord, Order, LineItem
|
| 13487 |
kshitij.so |
5 |
from shop2020.thriftpy.model.v1.order.ttypes import OrderStatus, OrderSource, OrderType
|
| 12935 |
kshitij.so |
6 |
from requests import request
|
|
|
7 |
import datetime
|
|
|
8 |
|
|
|
9 |
config_client = ConfigClient()
|
|
|
10 |
host = config_client.get_property('transaction_service_db_hostname')
|
|
|
11 |
|
|
|
12 |
DataService.initialize(db_hostname=host)
|
|
|
13 |
startDate = datetime.datetime.strptime('20-09-2014 00:00:00', '%d-%m-%Y %H:%M:%S')
|
|
|
14 |
base_url = 'http://channel.spicemobile.in/tr/PullActivationDate?imei='
|
|
|
15 |
|
|
|
16 |
class __Details:
|
|
|
17 |
def __init__(self,source,orderId,serial_number,deviceNumber,circle, operator, activationTime):
|
|
|
18 |
self.source = source
|
|
|
19 |
self.orderId = orderId
|
|
|
20 |
self.serial_number = serial_number
|
|
|
21 |
|
|
|
22 |
def getActivatedDevices():
|
|
|
23 |
activatedIds = session.query(MobileActivationRecord.orderId).all()
|
|
|
24 |
if len(activatedIds) > 0:
|
|
|
25 |
return list(zip(*activatedIds)[0])
|
|
|
26 |
return activatedIds
|
|
|
27 |
|
|
|
28 |
def populateNewRecords(activatedIds):
|
|
|
29 |
records = []
|
|
|
30 |
try:
|
|
|
31 |
query = session.query(Order) \
|
|
|
32 |
.join((LineItem,Order.id==LineItem.order_id)).filter(LineItem.brand=='Spice').filter(Order.created_timestamp>startDate).filter(Order.status.in_((OrderStatus.DELIVERY_SUCCESS,OrderStatus.SHIPPED_FROM_WH)))
|
|
|
33 |
if len(activatedIds) > 0:
|
|
|
34 |
orders = query.filter(~Order.id.in_((activatedIds))).all()
|
|
|
35 |
else:
|
|
|
36 |
orders = query.all()
|
|
|
37 |
for order in orders:
|
| 13487 |
kshitij.so |
38 |
if order.lineitems[0].serial_number is None:
|
|
|
39 |
continue
|
| 12937 |
kshitij.so |
40 |
if (order.source in (OrderSource.WEBSITE, OrderSource.SNAPDEAL, OrderSource.AMAZON, OrderSource.FLIPKART)) and order.status == OrderStatus.DELIVERY_SUCCESS:
|
| 12935 |
kshitij.so |
41 |
det = __Details(order.source,order.id,(order.lineitems[0].serial_number).strip(),None,None,None,None)
|
|
|
42 |
records.append(det)
|
| 14438 |
kshitij.so |
43 |
elif (order.source in( OrderSource.EBAY, OrderSource.HOMESHOP18)) and order.status in (OrderStatus.SHIPPED_FROM_WH,OrderStatus.DELIVERY_SUCCESS):
|
| 12937 |
kshitij.so |
44 |
det = __Details(order.source,order.id,(order.lineitems[0].serial_number).strip(),None,None,None,None)
|
|
|
45 |
records.append(det)
|
|
|
46 |
else:
|
|
|
47 |
continue
|
| 12935 |
kshitij.so |
48 |
return records
|
|
|
49 |
finally:
|
|
|
50 |
session.close()
|
|
|
51 |
|
|
|
52 |
def main():
|
|
|
53 |
activatedIds = getActivatedDevices()
|
|
|
54 |
records = populateNewRecords(activatedIds)
|
| 13487 |
kshitij.so |
55 |
print "Getting activation details for ",len(records)
|
| 12935 |
kshitij.so |
56 |
for rec in records:
|
|
|
57 |
serial_number_list = rec.serial_number.split(',')
|
|
|
58 |
for serial_number in serial_number_list:
|
|
|
59 |
url = base_url+serial_number
|
|
|
60 |
response = request('GET', url)
|
| 12938 |
kshitij.so |
61 |
#Response is pretty bad, can expect this from Spice services.
|
| 12935 |
kshitij.so |
62 |
try:
|
|
|
63 |
activationRec = response.text.splitlines()[0]
|
|
|
64 |
if not(serial_number == activationRec.split(',')[0].strip()):
|
|
|
65 |
print "Requested Serial Number ",serial_number
|
|
|
66 |
print "Response ",activationRec.split(',')[0].strip()
|
|
|
67 |
print "Requested serial_number different from response"
|
|
|
68 |
continue
|
|
|
69 |
d_mobileActivationRecord = MobileActivationRecord()
|
|
|
70 |
d_mobileActivationRecord.orderId = rec.orderId
|
|
|
71 |
d_mobileActivationRecord.deviceNumber = activationRec.split(',')[2].strip()
|
| 12941 |
kshitij.so |
72 |
d_mobileActivationRecord.serialNumber = serial_number
|
| 12935 |
kshitij.so |
73 |
d_mobileActivationRecord.circle = activationRec.split(',')[3].strip()
|
|
|
74 |
d_mobileActivationRecord.operator = activationRec.split(',')[4].strip()
|
|
|
75 |
d_mobileActivationRecord.activationTime = datetime.datetime.strptime(activationRec.split(',')[5].strip(), '%m/%d/%Y %I:%M:%S %p')
|
| 13082 |
kshitij.so |
76 |
except Exception as e:
|
|
|
77 |
print "Exception ****"
|
|
|
78 |
print e
|
| 12935 |
kshitij.so |
79 |
continue
|
|
|
80 |
session.commit()
|
|
|
81 |
session.close()
|
|
|
82 |
|
|
|
83 |
if __name__=='__main__':
|
|
|
84 |
main()
|
|
|
85 |
|