Subversion Repositories SmartDukaan

Rev

Rev 14496 | Rev 14500 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
14450 amit.gupta 1
'''
2
Created on Mar 13, 2015
3
 
4
@author: amit
5
'''
6
from datetime import date, datetime, timedelta
7
from dtr.storage.Mysql import getOrdersAfterDate
8
from email import encoders
9
from email.mime.base import MIMEBase
10
from email.mime.multipart import MIMEMultipart
11
from email.mime.text import MIMEText
12
from pymongo.mongo_client import MongoClient
14460 amit.gupta 13
from xlrd import open_workbook
14
from xlwt.Workbook import Workbook
14450 amit.gupta 15
import MySQLdb
14460 amit.gupta 16
from xlutils.copy import copy
14450 amit.gupta 17
import smtplib
18
import time
19
import xlwt
14460 amit.gupta 20
#from xlwt import 
14450 amit.gupta 21
 
22
client = MongoClient('mongodb://localhost:27017/')
23
 
24
SENDER = "cnc.center@shop2020.in"
25
PASSWORD = "5h0p2o2o"
26
SUBJECT = "DTR User Segmentation report for " + date.today().isoformat()
27
SMTP_SERVER = "smtp.gmail.com"
28
SMTP_PORT = 587    
29
 
14460 amit.gupta 30
XLS_FILENAME = "dtrsourcesreco.xls"
31
boldStyle = xlwt.XFStyle()
32
f = xlwt.Font()
33
f.bold = True
34
boldStyle.font = f
35
i = -1
14450 amit.gupta 36
def generateFlipkartReco():
14460 amit.gupta 37
    curs = getOrdersAfterDate(datetime.now() - timedelta(days=30), 2)
38
    db = client.Dtr
39
    rb = open_workbook(XLS_FILENAME)
40
    wb = copy(rb)
41
    #wb = xlwt.Workbook()
42
    row = 0
43
    worksheet = wb.add_sheet("Flipkart")
44
    worksheet.write(row, inc(), 'Order Id', boldStyle)
45
    worksheet.write(row, inc(), 'User Id', boldStyle)
14474 amit.gupta 46
    worksheet.write(row, inc(), 'Username', boldStyle)
14460 amit.gupta 47
    worksheet.write(row, inc(), 'Merchant Order Id', boldStyle)
48
    worksheet.write(row, inc(), 'Product Title', boldStyle)
49
    worksheet.write(row, inc(), 'Price', boldStyle)
50
    worksheet.write(row, inc(), 'Quantity', boldStyle)
51
    worksheet.write(row, inc(), 'Status', boldStyle)
52
    worksheet.write(row, inc(), 'Detailed Status', boldStyle)
53
    worksheet.write(row, inc(), 'Cashback Status', boldStyle)
54
    worksheet.write(row, inc(), 'Our CashBack', boldStyle)
55
    worksheet.write(row, inc(), 'Sale Date', boldStyle)
56
    worksheet.write(row, inc(), 'SubtagId', boldStyle)
57
    worksheet.write(row, inc(), 'Category', boldStyle)
58
    worksheet.write(row, inc(), 'Aff PayOut', boldStyle)
59
    worksheet.write(row, inc(), 'Aff Sale Amount', boldStyle)
60
    worksheet.write(row, inc(), 'Aff Sale Date', boldStyle)
61
    for row1 in curs:
62
        orderId = row1[0]
63
        order = db.merchantOrder.find_one({"orderId":orderId})
64
        if order is None:
65
            continue
66
        saleTime = int(time.mktime(datetime.strptime(order['placedOn'], "%d %B, %Y %I:%M %p").replace(hour=0, minute=0, second=0, microsecond=0).timetuple()))
67
        #saleTime1 = int(time.mktime((datetime.strptime(order['placedOn'], "%b %d, %Y %I:%M %p") + timedelta(seconds=-60)).timetuple()))
68
 
69
        for subOrder in order['subOrders']: 
14489 amit.gupta 70
            affs = list(db.flipkartOrderAffiliateInfo.find({"subOrders.productCode":subOrder.get("productCode"), "saleDateInt":saleTime}))
14460 amit.gupta 71
            row += 1
72
            global i
73
            i=-1
74
            worksheet.write(row, inc(), orderId)
75
            worksheet.write(row, inc(), row1[1])
14474 amit.gupta 76
            worksheet.write(row, inc(), row1[-1])
14460 amit.gupta 77
            worksheet.write(row, inc(), order['merchantOrderId'])
78
            worksheet.write(row, inc(), subOrder['productTitle'])
79
            worksheet.write(row, inc(), subOrder['amountPaid'])
80
            worksheet.write(row, inc(), subOrder['quantity'])
81
            worksheet.write(row, inc(), subOrder['status'])
82
            worksheet.write(row, inc(), subOrder['detailedStatus'])
83
            worksheet.write(row, inc(), subOrder['cashBackStatus'])
84
            worksheet.write(row, inc(), subOrder['cashBackAmount'])
85
            worksheet.write(row, inc(), subOrder['placedOn'])
86
            worksheet.write(row, inc(), order['subTagId'])
87
            for aff in affs:
14487 amit.gupta 88
                if aff['subTagId']== subOrder['subTagId']:
14460 amit.gupta 89
                    worksheet.write(row, inc(), aff['category'])
90
                    worksheet.write(row, inc(), aff['payOut'])
91
                    worksheet.write(row, inc(), aff['saleAmount'])
92
                    worksheet.write(row, inc(), aff['saleDate'])
93
                    break
94
 
95
 
96
        wb.save(XLS_FILENAME)
14450 amit.gupta 97
def generateSnapDealReco():
14460 amit.gupta 98
    curs = getOrdersAfterDate(datetime.now() - timedelta(days=30), 3)
14450 amit.gupta 99
    db = client.Dtr
100
 
14487 amit.gupta 101
    matchedList = []
14450 amit.gupta 102
    workbook = xlwt.Workbook()
14460 amit.gupta 103
    worksheet = workbook.add_sheet("Snapdeal")
14450 amit.gupta 104
    column = 0
105
    row = 0
14474 amit.gupta 106
    global i
107
    i=-1    
108
    worksheet.write(row, inc(), 'Order Id', boldStyle)
109
    worksheet.write(row, inc(), 'User Id', boldStyle)
110
    worksheet.write(row, inc(), 'Username', boldStyle)
111
    worksheet.write(row, inc(), 'Merchant Order Id', boldStyle)
112
    worksheet.write(row, inc(), 'Product Title', boldStyle)
113
    worksheet.write(row, inc(), 'Price', boldStyle)
114
    worksheet.write(row, inc(), 'Quantity', boldStyle)
115
    worksheet.write(row, inc(), 'Status', boldStyle)
116
    worksheet.write(row, inc(), 'Detailed Status', boldStyle)
117
    worksheet.write(row, inc(), 'Cashback Status', boldStyle)
118
    worksheet.write(row, inc(), 'Our CashBack', boldStyle)
119
    worksheet.write(row, inc(), 'Sale Date', boldStyle)
120
    worksheet.write(row, inc(), 'SubtagId', boldStyle)
121
    worksheet.write(row, inc(), 'Ad Id', boldStyle)
122
    worksheet.write(row, inc(), 'Affiliate PayOut', boldStyle)
123
    worksheet.write(row, inc(), 'Affiliate Sale Amount', boldStyle)
124
    worksheet.write(row, inc(), 'Affiliate Sale Date', boldStyle)
14450 amit.gupta 125
 
126
    for row1 in curs:
127
        orderId = row1[0]
128
        order = db.merchantOrder.find_one({"orderId":orderId})
129
        if order is None:
130
            continue
14496 amit.gupta 131
        #saleTime = int(time.mktime(datetime.strptime(order['placedOn'], "%b %d, %Y, %I:%M %p").timetuple()))
14450 amit.gupta 132
        aff = list(db.snapdealOrderAffiliateInfo.find({"subTagId":order["subTagId"]}))
14496 amit.gupta 133
        matchedSubTag = False
14488 amit.gupta 134
        if len(aff) > 0 and order["subTagId"] not in matchedList: 
14496 amit.gupta 135
            matchedSubTag = True
14498 amit.gupta 136
            matchedList.append(order["subTagId"])
14493 amit.gupta 137
        once = True        
14474 amit.gupta 138
        for subOrder in order['subOrders']:
139
            i=-1 
14450 amit.gupta 140
            row += 1
14474 amit.gupta 141
            worksheet.write(row, inc(), orderId)
142
            worksheet.write(row, inc(), row1[1])
143
            worksheet.write(row, inc(), row1[-1])
144
            worksheet.write(row, inc(), order['merchantOrderId'])
145
            worksheet.write(row, inc(), subOrder['productTitle'])
146
            worksheet.write(row, inc(), subOrder['amountPaid'])
147
            worksheet.write(row, inc(), subOrder['quantity'])
148
            worksheet.write(row, inc(), subOrder['status'])
149
            worksheet.write(row, inc(), subOrder['detailedStatus'])
150
            worksheet.write(row, inc(), subOrder['cashBackStatus'])
151
            worksheet.write(row, inc(), subOrder['cashBackAmount'])
152
            worksheet.write(row, inc(), subOrder['placedOn'])
153
            worksheet.write(row, inc(), order['subTagId'])
14496 amit.gupta 154
            if matchedSubTag:
14474 amit.gupta 155
                worksheet.write(row, inc(), aff[0]['adId'])
14494 amit.gupta 156
                worksheet.write(row, inc(), aff[0]['saleDate'])
14493 amit.gupta 157
                if once:
14494 amit.gupta 158
                    worksheet.write(row, inc(), aff[0]['payOut'])
14493 amit.gupta 159
                    worksheet.write(row, inc(), aff[0]['saleAmount'])
160
                    once = False
14460 amit.gupta 161
        workbook.save(XLS_FILENAME)
14450 amit.gupta 162
 
163
def sendmail(email, message, title):
164
    if email == "":
165
        return
166
    mailServer = smtplib.SMTP(SMTP_SERVER, SMTP_PORT)
167
    mailServer.ehlo()
168
    mailServer.starttls()
169
    mailServer.ehlo()
170
 
171
    # Create the container (outer) email message.
172
    msg = MIMEMultipart()
173
    msg['Subject'] = title
174
    msg.preamble = title
175
    html_msg = MIMEText(message, 'html')
176
    msg.attach(html_msg)
177
 
178
    #snapdeal more to be added here
179
    snapdeal = MIMEBase('application', 'vnd.ms-excel')
14460 amit.gupta 180
    snapdeal.set_payload(file(XLS_FILENAME).read())
14450 amit.gupta 181
    encoders.encode_base64(snapdeal)
14460 amit.gupta 182
    snapdeal.add_header('Content-Disposition', 'attachment;filename=' + XLS_FILENAME)
14450 amit.gupta 183
    msg.attach(snapdeal)
184
 
185
 
186
    email.append('amit.gupta@shop2020.in')
187
    MAILTO = email 
188
    mailServer.login(SENDER, PASSWORD)
189
    mailServer.sendmail(PASSWORD, MAILTO, msg.as_string())
190
 
191
 
14460 amit.gupta 192
 
193
def inc():
194
    global i
195
    i+=1
196
    return i
197
 
14450 amit.gupta 198
def main():
199
    generateSnapDealReco()
14460 amit.gupta 200
    generateFlipkartReco()
14452 amit.gupta 201
    sendmail(["amit.gupta@shop2020.in"], "", "DTR Affiliate Reco")
14450 amit.gupta 202
 
203
if __name__ == '__main__':
14460 amit.gupta 204
    main()
205