Subversion Repositories SmartDukaan

Rev

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

Rev Author Line No. Line
13884 kshitij.so 1
import pymongo
2
import xlwt
3
from datetime import datetime
4
from email.mime.multipart import MIMEMultipart
5
import email.encoders
6
import smtplib
7
 
8
con = None
9
 
10
class __SkuInfo:
11
 
12
    def __init__(self, _id, skuBundleId, category_id, mrp, available_price, source_id, rank, maxNlc, minNlc, schemeAmount, minDiscount, \
14115 kshitij.so 13
                 maxDiscount, discountType, dp, nlcPoints, bestSellerPoints, totalPoints,in_stock,maxprice,showDeal, catalogBestSellerPoints):
13884 kshitij.so 14
        self._id = _id
15
        self.skuBundleId = skuBundleId
16
        self.category_id = category_id
17
        self.mrp = mrp
18
        self.available_price = available_price
19
        self.source_id = source_id
20
        self.rank = rank
21
        self.maxNlc = maxNlc
22
        self.minNlc = minNlc
23
        self.schemeAmount = schemeAmount
24
        self.minDiscount = minDiscount
25
        self.maxDiscount = maxDiscount
26
        self.discountType = discountType
27
        self.dp = dp
28
        self.nlcPoints = nlcPoints
29
        self.bestSellerPoints = bestSellerPoints
30
        self.totalPoints = totalPoints
31
        self.in_stock = in_stock
13906 kshitij.so 32
        self.maxprice = maxprice
14115 kshitij.so 33
        self.showDeal = showDeal
34
        self.catalogBestSellerPoints = catalogBestSellerPoints  
13884 kshitij.so 35
 
36
def get_mongo_connection(host='localhost', port=27017):
37
    global con
38
    if con is None:
39
        print "Establishing connection %s host and port %d" %(host,port)
40
        try:
41
            con = pymongo.MongoClient(host, port)
42
        except Exception, e:
43
            print e
44
            return None
45
    return con
46
 
13904 kshitij.so 47
def writeSheet():
48
    p = []
13884 kshitij.so 49
    data = get_mongo_connection().Catalog.Deals.find().sort([('totalPoints',pymongo.DESCENDING)])
50
    print data.count()
51
    for x in data:
52
        s_info = __SkuInfo(x['_id'], x['skuBundleId'], x['category_id'],x['mrp'],x['available_price'],x['source_id'],x['rank'],x['maxNlc'], \
53
                           x['minNlc'], x['schemeAmount'],x['minDiscount'],x['maxDiscount'],x['discountType'],x['dp'],x['nlcPoints'],x['bestSellerPoints'], \
14115 kshitij.so 54
                           x['totalPoints'],x['in_stock'],x['maxprice'],x['showDeal'],x['catalogBestSellerPoints'])
13884 kshitij.so 55
        p.append(s_info)
13904 kshitij.so 56
 
13884 kshitij.so 57
    wbk = xlwt.Workbook()
58
    sheet = wbk.add_sheet('Deals')
59
    xstr = lambda s: s or ""
60
    heading_xf = xlwt.easyxf('font: bold on; align: wrap off, vert centre, horiz center')
61
 
62
    excel_integer_format = '0'
63
    integer_style = xlwt.XFStyle()
64
    integer_style.num_format_str = excel_integer_format
65
 
66
    sheet.write(0, 0, "Item ID", heading_xf)
67
    sheet.write(0, 1, "Catalog Item Id", heading_xf)
68
    sheet.write(0, 2, "Category", heading_xf)
69
    sheet.write(0, 3, "Brand", heading_xf)
70
    sheet.write(0, 4, "Product Name", heading_xf)
71
    sheet.write(0, 5, "Item Status", heading_xf)
72
    sheet.write(0, 6, "Stock Status", heading_xf)
73
    sheet.write(0, 7, "MarketPlace", heading_xf)
74
    sheet.write(0, 8, "MarketPlace Identifier", heading_xf)
75
    sheet.write(0, 9, "MarketPlace Secondary Identifier", heading_xf)
76
    sheet.write(0, 10, "Product Name (Marketplace)", heading_xf)
77
    sheet.write(0, 11, "Url", heading_xf)
78
    sheet.write(0, 12, "Price", heading_xf)
79
    sheet.write(0, 13, "Mrp", heading_xf)
80
    sheet.write(0, 14, "DP", heading_xf)
81
    sheet.write(0, 15, "Scheme Amount", heading_xf)
82
    sheet.write(0, 16, "Discount Type", heading_xf)
83
    sheet.write(0, 17, "Min Discount", heading_xf)
84
    sheet.write(0, 18, "Max Discount", heading_xf)
85
    sheet.write(0, 19, "Max Nlc", heading_xf)
86
    sheet.write(0, 20, "Min Nlc", heading_xf)
87
    sheet.write(0, 21, "Max Price", heading_xf)
88
    sheet.write(0, 22, "Rank", heading_xf)
89
    sheet.write(0, 23, "Nlc Points", heading_xf)
90
    sheet.write(0, 24, "Best Seller Points", heading_xf)
14115 kshitij.so 91
    sheet.write(0, 25, "Catalog Best Seller Points", heading_xf)
92
    sheet.write(0, 26, "Total Points", heading_xf)
93
    sheet.write(0, 27, "Show Deals", heading_xf)
13884 kshitij.so 94
 
95
    it = 1
96
    for x in p:
97
        y = list(get_mongo_connection().Catalog.MasterData.find({'_id':x._id}))
98
        sheet.write(it, 0, x._id)
99
        sheet.write(it, 1, x.skuBundleId)
100
        if x.category_id == 3:
101
            category = 'Mobiles'
102
        else:
103
            category = 'Tablets'
104
        sheet.write(it, 2, category)
105
        sheet.write(it, 3, y[0]['brand'])
106
        sheet.write(it, 4, y[0]['product_name'])
107
        if y[0]['status'] ==1:
108
            sheet.write(it, 5, 'Active')
109
        else:
110
            sheet.write(it, 5, 'EOL')
111
        if y[0]['in_stock'] ==1:
112
            sheet.write(it, 6, 'In Stock')
113
        else:
114
            sheet.write(it, 6, 'Out Of Stock')
115
        sheet.write(it, 7, y[0]['source'])
116
        sheet.write(it, 8, y[0]['identifier'])
117
        sheet.write(it, 9, y[0]['secondaryIdentifier'])
118
        sheet.write(it, 10, y[0]['source_product_name'])
119
        sheet.write(it, 11, y[0]['url'])
120
        sheet.write(it, 12, y[0]['available_price'])
121
        sheet.write(it, 13, x.mrp)
122
        sheet.write(it, 14, x.dp)
123
        sheet.write(it, 15, x.schemeAmount)
124
        sheet.write(it, 16, x.discountType)
125
        sheet.write(it, 17, x.minDiscount)
126
        sheet.write(it, 18, x.maxDiscount)
127
        sheet.write(it, 19, x.maxNlc)
128
        sheet.write(it, 20, x.minNlc)
13906 kshitij.so 129
        sheet.write(it, 21, x.maxprice)
13884 kshitij.so 130
        sheet.write(it, 22, x.rank)
131
        sheet.write(it, 23, x.nlcPoints)
132
        sheet.write(it, 24, x.bestSellerPoints)
14115 kshitij.so 133
        sheet.write(it, 24, x.catalogBestSellerPoints)
134
        sheet.write(it, 26, x.totalPoints)
135
        sheet.write(it, 27, x.showDeal)
13884 kshitij.so 136
        it+=1
137
    filename = "/tmp/deal-data"+str(datetime.now())+".xls" 
138
    wbk.save(filename)
139
    smtpServer = smtplib.SMTP('localhost')
13909 kshitij.so 140
    #smtpServer.set_debuglevel(1)
13884 kshitij.so 141
    sender = 'dtr@shop2020.in'
13896 kshitij.so 142
    #recipients = ['kshitij.sood@saholic.com']
13884 kshitij.so 143
    msg = MIMEMultipart()
144
    msg['Subject'] = "DTR Deals data" + ' - ' + str(datetime.now())
145
    msg['From'] = sender
13896 kshitij.so 146
    recipients = ['rajneesh.arora@saholic.com','kshitij.sood@saholic.com','chaitnaya.vats@saholic.com','manoj.kumar@saholic.com']
13884 kshitij.so 147
    msg['To'] = ",".join(recipients)
148
    fileMsg = email.mime.base.MIMEBase('application','vnd.ms-excel')
149
    fileMsg.set_payload(file(filename).read())
150
    email.encoders.encode_base64(fileMsg)
13898 kshitij.so 151
    fileMsg.add_header('Content-Disposition','attachment;filename=Deal_Sheet_Dtr.xls')
13884 kshitij.so 152
    msg.attach(fileMsg)
153
    try:
154
        smtpServer.sendmail(sender, recipients, msg.as_string())
155
        print "Successfully sent email"
156
    except:
157
        print "Error: unable to send email."
158
 
13893 kshitij.so 159
def sendMail():
13884 kshitij.so 160
    writeSheet()
161
 
13893 kshitij.so 162
def main():
163
    sendMail()
164
 
13884 kshitij.so 165
if __name__=='__main__':
166
    main()