Subversion Repositories SmartDukaan

Rev

Rev 12935 | Rev 12938 | Go to most recent revision | 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
5
from shop2020.thriftpy.model.v1.order.ttypes import OrderStatus, OrderSource
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:
12937 kshitij.so 38
            if (order.source in (OrderSource.WEBSITE, OrderSource.SNAPDEAL, OrderSource.AMAZON, OrderSource.FLIPKART)) and order.status == OrderStatus.DELIVERY_SUCCESS:
12935 kshitij.so 39
                det = __Details(order.source,order.id,(order.lineitems[0].serial_number).strip(),None,None,None,None)
40
                records.append(det)
12937 kshitij.so 41
            elif (order.source == OrderSource.EBAY) and order.status in (OrderStatus.SHIPPED_FROM_WH,OrderStatus.DELIVERY_SUCCESS):
42
                det = __Details(order.source,order.id,(order.lineitems[0].serial_number).strip(),None,None,None,None)
43
                records.append(det)
44
            else:
45
                continue
12935 kshitij.so 46
        return records
47
    finally:
48
        session.close()
49
 
50
def main():
51
    activatedIds = getActivatedDevices()
52
    records = populateNewRecords(activatedIds)
53
    for rec in records:
54
        serial_number_list = rec.serial_number.split(',')
55
        for serial_number in serial_number_list:
56
            url = base_url+serial_number
57
            response = request('GET', url)
58
            #Reponse is pretty bad, can expect this from Spice services.
59
            try:
60
                activationRec = response.text.splitlines()[0]
61
                if not(serial_number == activationRec.split(',')[0].strip()):
62
                    print "Requested Serial Number ",serial_number
63
                    print "Response ",activationRec.split(',')[0].strip()
64
                    print "Requested serial_number different from response"
65
                    continue
66
                d_mobileActivationRecord = MobileActivationRecord()
67
                d_mobileActivationRecord.orderId = rec.orderId
68
                d_mobileActivationRecord.deviceNumber = activationRec.split(',')[2].strip()
69
                d_mobileActivationRecord.circle = activationRec.split(',')[3].strip()
70
                d_mobileActivationRecord.operator = activationRec.split(',')[4].strip()
71
                d_mobileActivationRecord.activationTime = datetime.datetime.strptime(activationRec.split(',')[5].strip(),  '%m/%d/%Y %I:%M:%S %p')
72
            except:
73
                continue
74
    session.commit()
75
    session.close()
76
 
77
if __name__=='__main__':
78
    main()
79