Subversion Repositories SmartDukaan

Rev

Rev 14460 | Rev 14469 | 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)
46
    worksheet.write(row, inc(), 'Merchant Order Id', boldStyle)
47
    worksheet.write(row, inc(), 'Product Title', boldStyle)
48
    worksheet.write(row, inc(), 'Price', boldStyle)
49
    worksheet.write(row, inc(), 'Quantity', boldStyle)
50
    worksheet.write(row, inc(), 'Status', boldStyle)
51
    worksheet.write(row, inc(), 'Detailed Status', boldStyle)
52
    worksheet.write(row, inc(), 'Cashback Status', boldStyle)
53
    worksheet.write(row, inc(), 'Our CashBack', boldStyle)
54
    worksheet.write(row, inc(), 'Sale Date', boldStyle)
55
    worksheet.write(row, inc(), 'SubtagId', boldStyle)
56
    worksheet.write(row, inc(), 'Category', boldStyle)
57
    worksheet.write(row, inc(), 'Aff PayOut', boldStyle)
58
    worksheet.write(row, inc(), 'Aff Sale Amount', boldStyle)
59
    worksheet.write(row, inc(), 'Aff Sale Date', boldStyle)
60
    for row1 in curs:
61
        orderId = row1[0]
62
        order = db.merchantOrder.find_one({"orderId":orderId})
63
        if order is None:
64
            continue
65
        print order["subTagId"]
66
        print order
67
        saleTime = int(time.mktime(datetime.strptime(order['placedOn'], "%d %B, %Y %I:%M %p").replace(hour=0, minute=0, second=0, microsecond=0).timetuple()))
68
        #saleTime1 = int(time.mktime((datetime.strptime(order['placedOn'], "%b %d, %Y %I:%M %p") + timedelta(seconds=-60)).timetuple()))
69
        affs = list(db.flipkartOrderAffiliateInfo.find({"subTagId":order["subTagId"], "saleDateInt":saleTime}))
70
 
71
        for subOrder in order['subOrders']: 
72
            row += 1
73
            global i
74
            i=-1
75
            worksheet.write(row, inc(), orderId)
76
            worksheet.write(row, inc(), row1[1])
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:
88
                if aff['productCode']== subOrder['productCode']:
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
 
101
    workbook = xlwt.Workbook()
14460 amit.gupta 102
    worksheet = workbook.add_sheet("Snapdeal")
14450 amit.gupta 103
    column = 0
104
    row = 0
105
 
106
    worksheet.write(row, 0, 'Order Id', boldStyle)
14453 amit.gupta 107
    worksheet.write(row, 1, 'User Id', boldStyle)
108
    worksheet.write(row, 2, 'Merchant Order Id', boldStyle)
109
    worksheet.write(row, 3, 'Product Title', boldStyle)
110
    worksheet.write(row, 4, 'Price', boldStyle)
111
    worksheet.write(row, 5, 'Quantity', boldStyle)
112
    worksheet.write(row, 6, 'Status', boldStyle)
14454 amit.gupta 113
    worksheet.write(row, 7, 'Detailed Status', boldStyle)
14453 amit.gupta 114
    worksheet.write(row, 8, 'Cashback Status', boldStyle)
115
    worksheet.write(row, 9, 'Our CashBack', boldStyle)
116
    worksheet.write(row, 10, 'Sale Date', boldStyle)
117
    worksheet.write(row, 11, 'SubtagId', boldStyle)
118
    worksheet.write(row, 12, 'Ad Id', boldStyle)
119
    worksheet.write(row, 13, 'Affiliate PayOut', boldStyle)
120
    worksheet.write(row, 14, 'Affiliate Sale Amount', boldStyle)
121
    worksheet.write(row, 15, 'Affiliate Sale Date', boldStyle)
14450 amit.gupta 122
 
123
    for row1 in curs:
124
        orderId = row1[0]
125
        order = db.merchantOrder.find_one({"orderId":orderId})
126
        if order is None:
127
            continue
128
        print order["subTagId"]
129
        print order
130
        saleTime = int(time.mktime(datetime.strptime(order['placedOn'], "%b %d, %Y, %I:%M %p").timetuple()))
131
        saleTime1 = int(time.mktime((datetime.strptime(order['placedOn'], "%b %d, %Y, %I:%M %p") + timedelta(seconds=-60)).timetuple()))
132
        aff = list(db.snapdealOrderAffiliateInfo.find({"subTagId":order["subTagId"]}))
133
 
134
        for subOrder in order['subOrders']: 
135
            row += 1
136
            worksheet.write(row, 0, orderId)
14453 amit.gupta 137
            worksheet.write(row, 1, row1[1])
138
            worksheet.write(row, 2, order['merchantOrderId'])
139
            worksheet.write(row, 3, subOrder['productTitle'])
140
            worksheet.write(row, 4, subOrder['amountPaid'])
141
            worksheet.write(row, 5, subOrder['quantity'])
142
            worksheet.write(row, 6, subOrder['status'])
143
            worksheet.write(row, 7, subOrder['detailedStatus'])
144
            worksheet.write(row, 8, subOrder['cashBackStatus'])
145
            worksheet.write(row, 9, subOrder['cashBackAmount'])
146
            worksheet.write(row, 10, subOrder['placedOn'])
147
            worksheet.write(row, 11, order['subTagId'])
14450 amit.gupta 148
            if len(aff)>0:
14453 amit.gupta 149
                worksheet.write(row, 12, aff[0]['adId'])
150
                worksheet.write(row, 13, aff[0]['payOut'])
151
                worksheet.write(row, 14, aff[0]['saleAmount'])
152
                worksheet.write(row, 15, aff[0]['saleDate'])
14460 amit.gupta 153
        workbook.save(XLS_FILENAME)
14450 amit.gupta 154
 
155
def sendmail(email, message, title):
156
    if email == "":
157
        return
158
    mailServer = smtplib.SMTP(SMTP_SERVER, SMTP_PORT)
159
    mailServer.ehlo()
160
    mailServer.starttls()
161
    mailServer.ehlo()
162
 
163
    # Create the container (outer) email message.
164
    msg = MIMEMultipart()
165
    msg['Subject'] = title
166
    msg.preamble = title
167
    html_msg = MIMEText(message, 'html')
168
    msg.attach(html_msg)
169
 
170
    #snapdeal more to be added here
171
    snapdeal = MIMEBase('application', 'vnd.ms-excel')
14460 amit.gupta 172
    snapdeal.set_payload(file(XLS_FILENAME).read())
14450 amit.gupta 173
    encoders.encode_base64(snapdeal)
14460 amit.gupta 174
    snapdeal.add_header('Content-Disposition', 'attachment;filename=' + XLS_FILENAME)
14450 amit.gupta 175
    msg.attach(snapdeal)
176
 
177
 
178
    email.append('amit.gupta@shop2020.in')
179
    MAILTO = email 
180
    mailServer.login(SENDER, PASSWORD)
181
    mailServer.sendmail(PASSWORD, MAILTO, msg.as_string())
182
 
183
 
14460 amit.gupta 184
 
185
def inc():
186
    global i
187
    i+=1
188
    return i
189
 
14450 amit.gupta 190
def main():
191
    generateSnapDealReco()
14460 amit.gupta 192
    generateFlipkartReco()
14452 amit.gupta 193
    sendmail(["amit.gupta@shop2020.in"], "", "DTR Affiliate Reco")
14450 amit.gupta 194
 
195
if __name__ == '__main__':
14460 amit.gupta 196
    main()
197