Subversion Repositories SmartDukaan

Rev

Rev 14494 | Rev 14498 | 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
14493 amit.gupta 136
        once = True        
14474 amit.gupta 137
        for subOrder in order['subOrders']:
138
            i=-1 
14450 amit.gupta 139
            row += 1
14474 amit.gupta 140
            worksheet.write(row, inc(), orderId)
141
            worksheet.write(row, inc(), row1[1])
142
            worksheet.write(row, inc(), row1[-1])
143
            worksheet.write(row, inc(), order['merchantOrderId'])
144
            worksheet.write(row, inc(), subOrder['productTitle'])
145
            worksheet.write(row, inc(), subOrder['amountPaid'])
146
            worksheet.write(row, inc(), subOrder['quantity'])
147
            worksheet.write(row, inc(), subOrder['status'])
148
            worksheet.write(row, inc(), subOrder['detailedStatus'])
149
            worksheet.write(row, inc(), subOrder['cashBackStatus'])
150
            worksheet.write(row, inc(), subOrder['cashBackAmount'])
151
            worksheet.write(row, inc(), subOrder['placedOn'])
152
            worksheet.write(row, inc(), order['subTagId'])
14496 amit.gupta 153
            if matchedSubTag:
14474 amit.gupta 154
                worksheet.write(row, inc(), aff[0]['adId'])
14494 amit.gupta 155
                worksheet.write(row, inc(), aff[0]['saleDate'])
14493 amit.gupta 156
                if once:
14494 amit.gupta 157
                    worksheet.write(row, inc(), aff[0]['payOut'])
14493 amit.gupta 158
                    worksheet.write(row, inc(), aff[0]['saleAmount'])
159
                    once = False
14460 amit.gupta 160
        workbook.save(XLS_FILENAME)
14450 amit.gupta 161
 
162
def sendmail(email, message, title):
163
    if email == "":
164
        return
165
    mailServer = smtplib.SMTP(SMTP_SERVER, SMTP_PORT)
166
    mailServer.ehlo()
167
    mailServer.starttls()
168
    mailServer.ehlo()
169
 
170
    # Create the container (outer) email message.
171
    msg = MIMEMultipart()
172
    msg['Subject'] = title
173
    msg.preamble = title
174
    html_msg = MIMEText(message, 'html')
175
    msg.attach(html_msg)
176
 
177
    #snapdeal more to be added here
178
    snapdeal = MIMEBase('application', 'vnd.ms-excel')
14460 amit.gupta 179
    snapdeal.set_payload(file(XLS_FILENAME).read())
14450 amit.gupta 180
    encoders.encode_base64(snapdeal)
14460 amit.gupta 181
    snapdeal.add_header('Content-Disposition', 'attachment;filename=' + XLS_FILENAME)
14450 amit.gupta 182
    msg.attach(snapdeal)
183
 
184
 
185
    email.append('amit.gupta@shop2020.in')
186
    MAILTO = email 
187
    mailServer.login(SENDER, PASSWORD)
188
    mailServer.sendmail(PASSWORD, MAILTO, msg.as_string())
189
 
190
 
14460 amit.gupta 191
 
192
def inc():
193
    global i
194
    i+=1
195
    return i
196
 
14450 amit.gupta 197
def main():
198
    generateSnapDealReco()
14460 amit.gupta 199
    generateFlipkartReco()
14452 amit.gupta 200
    sendmail(["amit.gupta@shop2020.in"], "", "DTR Affiliate Reco")
14450 amit.gupta 201
 
202
if __name__ == '__main__':
14460 amit.gupta 203
    main()
204