Subversion Repositories SmartDukaan

Rev

Rev 13487 | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
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