Subversion Repositories SmartDukaan

Rev

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