Subversion Repositories SmartDukaan

Rev

Rev 14257 | Rev 14380 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 14257 Rev 14379
Line 3... Line 3...
3
import pymongo
3
import pymongo
4
import re
4
import re
5
from dtr.utils.utils import to_java_date
5
from dtr.utils.utils import to_java_date
6
from datetime import datetime
6
from datetime import datetime
7
import optparse
7
import optparse
-
 
8
import smtplib
-
 
9
from email.mime.text import MIMEText
-
 
10
from email.mime.multipart import MIMEMultipart
-
 
11
 
8
 
12
 
9
con = None
13
con = None
10
parser = optparse.OptionParser()
14
parser = optparse.OptionParser()
11
parser.add_option("-m", "--m", dest="mongoHost",
15
parser.add_option("-m", "--m", dest="mongoHost",
12
                      default="localhost",
16
                      default="localhost",
Line 15... Line 19...
15
 
19
 
16
(options, args) = parser.parse_args()
20
(options, args) = parser.parse_args()
17
 
21
 
18
bestSellers = []
22
bestSellers = []
19
now = datetime.now()
23
now = datetime.now()
-
 
24
exceptionList = []
20
 
25
 
21
class __RankInfo:
26
class __RankInfo:
22
    
27
    
23
    def __init__(self, identifier, rank):
28
    def __init__(self, identifier, rank, category):
24
        self.identifier = identifier
29
        self.identifier = identifier
25
        self.rank  = rank
30
        self.rank  = rank
-
 
31
        self.category = category
26
 
32
 
27
def get_mongo_connection(host=options.mongoHost, port=27017):
33
def get_mongo_connection(host=options.mongoHost, port=27017):
28
    global con
34
    global con
29
    if con is None:
35
    if con is None:
30
        print "Establishing connection %s host and port %d" %(host,port)
36
        print "Establishing connection %s host and port %d" %(host,port)
Line 76... Line 82...
76
        for x in product_divs:
82
        for x in product_divs:
77
            rank  = rank +1
83
            rank  = rank +1
78
            print rank,
84
            print rank,
79
            print '\t',
85
            print '\t',
80
            print x['data-pid']
86
            print x['data-pid']
81
            r_info = __RankInfo(x['data-pid'].strip(),rank)
87
            r_info = __RankInfo(x['data-pid'].strip(),rank, None)
82
            bestSellers.append(r_info)
88
            bestSellers.append(r_info)
83
 
89
 
84
def scrapeBestSellerTablets():
90
def scrapeBestSellerTablets():
85
    global bestSellers
91
    global bestSellers
86
    bestSellers = []
92
    bestSellers = []
Line 92... Line 98...
92
        for x in product_divs:
98
        for x in product_divs:
93
            rank  = rank +1
99
            rank  = rank +1
94
            print rank,
100
            print rank,
95
            print '\t',
101
            print '\t',
96
            print x['data-pid']
102
            print x['data-pid']
97
            r_info = __RankInfo(x['data-pid'].strip(),rank)
103
            r_info = __RankInfo(x['data-pid'].strip(),rank, None)
98
            bestSellers.append(r_info)
104
            bestSellers.append(r_info)
99
 
105
 
100
def commitBestSellers():
106
def commitBestSellers(category):
-
 
107
    global exceptionList
101
    for x in bestSellers:
108
    for x in bestSellers:
102
        print x.rank,
109
        print x.rank,
103
        print '\t',
110
        print '\t',
104
        print x.identifier,
111
        print x.identifier,
105
        col = get_mongo_connection().Catalog.MasterData.find({'identifier':x.identifier.strip()})
112
        col = get_mongo_connection().Catalog.MasterData.find({'identifier':x.identifier.strip()})
106
        print "count sku",
113
        print "count sku",
107
        print '\t',
114
        print '\t',
108
        print len(list(col))
115
        print list(col)
-
 
116
        if len(list(col)) == 0:
-
 
117
            x.category = category
-
 
118
            exceptionList.append(x)
-
 
119
        else:
109
        get_mongo_connection().Catalog.MasterData.update({'identifier':x.identifier.strip()}, {'$set' : {'rank':x.rank,'updatedOn':to_java_date(now)}}, multi=True)
120
            get_mongo_connection().Catalog.MasterData.update({'identifier':x.identifier.strip()}, {'$set' : {'rank':x.rank,'updatedOn':to_java_date(now)}}, multi=True)
110
 
121
 
111
def resetRanks(category):
122
def resetRanks(category):
112
    oldRankedItems = get_mongo_connection().Catalog.MasterData.find({'rank':{'$gt':0},'source_id':2,'category':category})
123
    oldRankedItems = get_mongo_connection().Catalog.MasterData.find({'rank':{'$gt':0},'source_id':2,'category':category})
113
    for item in oldRankedItems:
124
    for item in oldRankedItems:
114
        get_mongo_connection().Catalog.MasterData.update({'_id':item['_id']}, {'$set' : {'rank':0,'updatedOn':to_java_date(now)}}, multi=True)
125
        get_mongo_connection().Catalog.MasterData.update({'_id':item['_id']}, {'$set' : {'rank':0,'updatedOn':to_java_date(now)}}, multi=True)
-
 
126
 
-
 
127
def sendEmail():
-
 
128
    message="""<html>
-
 
129
            <body>
-
 
130
            <h3>Flipkart Best Sellers not in master</h3>
-
 
131
            <table border="1" style="width:100%;">
-
 
132
            <thead>
-
 
133
            <tr><th>Identifier</th>
-
 
134
            <th>Category</th>
-
 
135
            <th>Rank</th>
-
 
136
            </tr></thead>
-
 
137
            <tbody>"""
-
 
138
    for item in exceptionList:
-
 
139
        message+="""<tr>
-
 
140
        <td style="text-align:center">"""+(item.identifier)+"""</td>
-
 
141
        <td style="text-align:center">"""+(item.category)+"""</td>
-
 
142
        <td style="text-align:center">"""+str(item.rank)+"""</td>
-
 
143
        </tr>"""
-
 
144
    message+="""</tbody></table></body></html>"""
-
 
145
    print message
-
 
146
    #recipients = ['kshitij.sood@saholic.com']
-
 
147
    recipients = ['rajneesh.arora@saholic.com','kshitij.sood@saholic.com','chaitnaya.vats@saholic.com','manoj.kumar@saholic.com']
-
 
148
    msg = MIMEMultipart()
-
 
149
    msg['Subject'] = "Flipkart Best Sellers" + ' - ' + str(datetime.now())
-
 
150
    msg['From'] = ""
-
 
151
    msg['To'] = ",".join(recipients)
-
 
152
    msg.preamble = "Flipkart Best Sellers" + ' - ' + str(datetime.now())
-
 
153
    html_msg = MIMEText(message, 'html')
-
 
154
    msg.attach(html_msg)
-
 
155
    
-
 
156
    smtpServer = smtplib.SMTP('localhost')
-
 
157
    smtpServer.set_debuglevel(1)
-
 
158
    sender = 'dtr@shop2020.in'
-
 
159
    try:
-
 
160
        smtpServer.sendmail(sender, recipients, msg.as_string())
-
 
161
        print "Successfully sent email"
-
 
162
    except:
-
 
163
        print "Error: unable to send email."
115
        
164
        
116
def main():
165
def main():
117
    scrapeBestSellerMobiles()
166
    scrapeBestSellerMobiles()
118
    if len(bestSellers) > 0:
167
    if len(bestSellers) > 0:
119
        resetRanks('Mobiles')
168
        resetRanks('Mobiles')
120
        commitBestSellers()
169
        commitBestSellers('MOBILES')
121
    scrapeBestSellerTablets()
170
    scrapeBestSellerTablets()
122
    if len(bestSellers) > 0:
171
    if len(bestSellers) > 0:
123
        resetRanks('Tablets')
172
        resetRanks('Tablets')
124
        commitBestSellers()
173
        commitBestSellers('TABLETS')
-
 
174
    sendEmail()
125
    
175
    
126
if __name__=='__main__':
176
if __name__=='__main__':
127
    main()
177
    main()
128
178