Subversion Repositories SmartDukaan

Rev

Rev 14479 | Rev 14487 | 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
        print order["subTagId"]
67
        print order
68
        saleTime = int(time.mktime(datetime.strptime(order['placedOn'], "%d %B, %Y %I:%M %p").replace(hour=0, minute=0, second=0, microsecond=0).timetuple()))
69
        #saleTime1 = int(time.mktime((datetime.strptime(order['placedOn'], "%b %d, %Y %I:%M %p") + timedelta(seconds=-60)).timetuple()))
70
        affs = list(db.flipkartOrderAffiliateInfo.find({"subTagId":order["subTagId"], "saleDateInt":saleTime}))
71
 
72
        for subOrder in order['subOrders']: 
73
            row += 1
74
            global i
75
            i=-1
76
            worksheet.write(row, inc(), orderId)
77
            worksheet.write(row, inc(), row1[1])
14474 amit.gupta 78
            worksheet.write(row, inc(), row1[-1])
14460 amit.gupta 79
            worksheet.write(row, inc(), order['merchantOrderId'])
80
            worksheet.write(row, inc(), subOrder['productTitle'])
81
            worksheet.write(row, inc(), subOrder['amountPaid'])
82
            worksheet.write(row, inc(), subOrder['quantity'])
83
            worksheet.write(row, inc(), subOrder['status'])
84
            worksheet.write(row, inc(), subOrder['detailedStatus'])
85
            worksheet.write(row, inc(), subOrder['cashBackStatus'])
86
            worksheet.write(row, inc(), subOrder['cashBackAmount'])
87
            worksheet.write(row, inc(), subOrder['placedOn'])
88
            worksheet.write(row, inc(), order['subTagId'])
89
            for aff in affs:
90
                if aff['productCode']== subOrder['productCode']:
91
                    worksheet.write(row, inc(), aff['category'])
92
                    worksheet.write(row, inc(), aff['payOut'])
93
                    worksheet.write(row, inc(), aff['saleAmount'])
94
                    worksheet.write(row, inc(), aff['saleDate'])
95
                    break
96
 
97
 
98
        wb.save(XLS_FILENAME)
14450 amit.gupta 99
def generateSnapDealReco():
14460 amit.gupta 100
    curs = getOrdersAfterDate(datetime.now() - timedelta(days=30), 3)
14450 amit.gupta 101
    db = client.Dtr
102
 
103
    workbook = xlwt.Workbook()
14460 amit.gupta 104
    worksheet = workbook.add_sheet("Snapdeal")
14450 amit.gupta 105
    column = 0
106
    row = 0
14474 amit.gupta 107
    global i
108
    i=-1    
109
    worksheet.write(row, inc(), 'Order Id', boldStyle)
110
    worksheet.write(row, inc(), 'User Id', boldStyle)
111
    worksheet.write(row, inc(), 'Username', boldStyle)
112
    worksheet.write(row, inc(), 'Merchant Order Id', boldStyle)
113
    worksheet.write(row, inc(), 'Product Title', boldStyle)
114
    worksheet.write(row, inc(), 'Price', boldStyle)
115
    worksheet.write(row, inc(), 'Quantity', boldStyle)
116
    worksheet.write(row, inc(), 'Status', boldStyle)
117
    worksheet.write(row, inc(), 'Detailed Status', boldStyle)
118
    worksheet.write(row, inc(), 'Cashback Status', boldStyle)
119
    worksheet.write(row, inc(), 'Our CashBack', boldStyle)
120
    worksheet.write(row, inc(), 'Sale Date', boldStyle)
121
    worksheet.write(row, inc(), 'SubtagId', boldStyle)
122
    worksheet.write(row, inc(), 'Ad Id', boldStyle)
123
    worksheet.write(row, inc(), 'Affiliate PayOut', boldStyle)
124
    worksheet.write(row, inc(), 'Affiliate Sale Amount', boldStyle)
125
    worksheet.write(row, inc(), 'Affiliate Sale Date', boldStyle)
14450 amit.gupta 126
 
127
    for row1 in curs:
128
        orderId = row1[0]
129
        order = db.merchantOrder.find_one({"orderId":orderId})
130
        if order is None:
131
            continue
132
        print order["subTagId"]
133
        saleTime = int(time.mktime(datetime.strptime(order['placedOn'], "%b %d, %Y, %I:%M %p").timetuple()))
134
        aff = list(db.snapdealOrderAffiliateInfo.find({"subTagId":order["subTagId"]}))
135
 
14474 amit.gupta 136
        for subOrder in order['subOrders']:
137
            i=-1 
14450 amit.gupta 138
            row += 1
14474 amit.gupta 139
            worksheet.write(row, inc(), orderId)
140
            worksheet.write(row, inc(), row1[1])
141
            worksheet.write(row, inc(), row1[-1])
142
            worksheet.write(row, inc(), order['merchantOrderId'])
143
            worksheet.write(row, inc(), subOrder['productTitle'])
144
            worksheet.write(row, inc(), subOrder['amountPaid'])
145
            worksheet.write(row, inc(), subOrder['quantity'])
146
            worksheet.write(row, inc(), subOrder['status'])
147
            worksheet.write(row, inc(), subOrder['detailedStatus'])
148
            worksheet.write(row, inc(), subOrder['cashBackStatus'])
149
            worksheet.write(row, inc(), subOrder['cashBackAmount'])
150
            worksheet.write(row, inc(), subOrder['placedOn'])
151
            worksheet.write(row, inc(), order['subTagId'])
14478 amit.gupta 152
 
14480 amit.gupta 153
            if len(aff) and aff[0]['saleTime']- saleTime < 90 and aff[0]['saleTime'] - saleTime >= 0:
14477 amit.gupta 154
                print saleTime -aff[0]['saleTime'] 
14474 amit.gupta 155
                worksheet.write(row, inc(), aff[0]['adId'])
156
                worksheet.write(row, inc(), aff[0]['payOut'])
157
                worksheet.write(row, inc(), aff[0]['saleAmount'])
158
                worksheet.write(row, inc(), aff[0]['saleDate'])
14460 amit.gupta 159
        workbook.save(XLS_FILENAME)
14450 amit.gupta 160
 
161
def sendmail(email, message, title):
162
    if email == "":
163
        return
164
    mailServer = smtplib.SMTP(SMTP_SERVER, SMTP_PORT)
165
    mailServer.ehlo()
166
    mailServer.starttls()
167
    mailServer.ehlo()
168
 
169
    # Create the container (outer) email message.
170
    msg = MIMEMultipart()
171
    msg['Subject'] = title
172
    msg.preamble = title
173
    html_msg = MIMEText(message, 'html')
174
    msg.attach(html_msg)
175
 
176
    #snapdeal more to be added here
177
    snapdeal = MIMEBase('application', 'vnd.ms-excel')
14460 amit.gupta 178
    snapdeal.set_payload(file(XLS_FILENAME).read())
14450 amit.gupta 179
    encoders.encode_base64(snapdeal)
14460 amit.gupta 180
    snapdeal.add_header('Content-Disposition', 'attachment;filename=' + XLS_FILENAME)
14450 amit.gupta 181
    msg.attach(snapdeal)
182
 
183
 
184
    email.append('amit.gupta@shop2020.in')
185
    MAILTO = email 
186
    mailServer.login(SENDER, PASSWORD)
187
    mailServer.sendmail(PASSWORD, MAILTO, msg.as_string())
188
 
189
 
14460 amit.gupta 190
 
191
def inc():
192
    global i
193
    i+=1
194
    return i
195
 
14450 amit.gupta 196
def main():
197
    generateSnapDealReco()
14460 amit.gupta 198
    generateFlipkartReco()
14452 amit.gupta 199
    sendmail(["amit.gupta@shop2020.in"], "", "DTR Affiliate Reco")
14450 amit.gupta 200
 
201
if __name__ == '__main__':
14460 amit.gupta 202
    main()
203