Subversion Repositories SmartDukaan

Rev

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