Subversion Repositories SmartDukaan

Rev

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