Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | RSS feed
from dtr.storage import Mongoimport MySQLdbimport xlwtfrom email import encodersfrom email.mime.base import MIMEBasefrom email.mime.multipart import MIMEMultipartfrom xlrd import open_workbookfrom xlutils.copy import copyimport smtplibDB_HOST = "localhost"DB_USER = "root"DB_PASSWORD = "shop2020"DB_NAME = "dtr"#TMP_FILE = "/home/kshitij/Downloads/User_Favorites_Report.xls"TMP_FILE = "User_Favorites_Report.xls"SENDER = "cnc.center@shop2020.in"PASSWORD = "5h0p2o2o"SUBJECT = "User Favorite Report"SMTP_SERVER = "smtp.gmail.com"SMTP_PORT = 587date_format = xlwt.XFStyle()date_format.num_format_str = 'yyyy/mm/dd'datetime_format = xlwt.XFStyle()datetime_format.num_format_str = 'yyyy/mm/dd HH:MM AM/PM'default_format = xlwt.XFStyle()def getDbConnection():return MySQLdb.connect(DB_HOST, DB_USER, DB_PASSWORD, DB_NAME)PRODUCTS_USERS="""select store_product_id,action,count(1) fromuser_actions group by store_product_id,action order by store_product_id;"""USER_FAVORITES="""select ua.store_product_id,ua.user_id,u.email,ua.actionfrom user_actions ua join users u on ua.user_id=u.idorder by ua.user_id,ua.action;"""USER_COUNT_LIKES_DISLIKES="""SELECT user_id,email,count(*),actionFROM user_actions ua join users u where ua.user_id = u.idgroup by user_id,action order by user_id;"""def generateProductWiseReport():productName=''datesql= PRODUCTS_USERSconn = getDbConnection()global workbookworkbook = xlwt.Workbook()worksheet = workbook.add_sheet("Product Wise")boldStyle = xlwt.XFStyle()newStyle= xlwt.XFStyle()style = xlwt.XFStyle()pattern = xlwt.Pattern()pattern.pattern = xlwt.Pattern.SOLID_PATTERNpattern.pattern_fore_colour = xlwt.Style.colour_map['yellow']style.pattern = patternf = xlwt.Font()f.bold = TrueboldStyle.font = fcolumn = 0row = 0worksheet.write(row,column,'Store Product Id',style)worksheet.write(row,column+1,'Product Name',style)worksheet.write(row,column+2,'Action',style)worksheet.write(row,column+3,'Count of Users',style)cursor = conn.cursor()cursor.execute(datesql)result = cursor.fetchall()for r in result:row=row+1skuData = Mongo.getItem(r[0])for items in skuData:productName = items['source_product_name']worksheet.write(row,column,r[0])worksheet.write(row,column+1,productName)worksheet.write(row,column+2,r[1])worksheet.write(row,column+3,r[2])conn.close()workbook.save(TMP_FILE)def generateUserProductReport():productName=''datesql= USER_FAVORITESconn = getDbConnection()rb = open_workbook(TMP_FILE,formatting_info=True)workbook = copy(rb)worksheet = workbook.add_sheet("User Likes and Dislikes")boldStyle = xlwt.XFStyle()style = xlwt.XFStyle()pattern = xlwt.Pattern()pattern.pattern = xlwt.Pattern.SOLID_PATTERNpattern.pattern_fore_colour = xlwt.Style.colour_map['yellow']style.pattern = patternf = xlwt.Font()f.bold = TrueboldStyle.font = fcolumn = 0row = 0worksheet.write(row,column,'Store Product Id',style)worksheet.write(row,column+1,'Product Name',style)worksheet.write(row,column+2,'User Id',style)worksheet.write(row,column+3,'Email',style)worksheet.write(row,column+4,'Action',style)cursor = conn.cursor()cursor.execute(datesql)result = cursor.fetchall()for r in result:row=row+1skuData = Mongo.getItem(r[0])for items in skuData:productName = items['source_product_name']worksheet.write(row,column,r[0])worksheet.write(row,column+1,productName)worksheet.write(row,column+2,r[1])worksheet.write(row,column+3,r[2])worksheet.write(row,column+4,r[3])conn.close()workbook.save(TMP_FILE)def generateUserCountFavoritesReport():datesql= USER_COUNT_LIKES_DISLIKESconn = getDbConnection()rb = open_workbook(TMP_FILE,formatting_info=True)workbook = copy(rb)worksheet = workbook.add_sheet("User Count by Action")boldStyle = xlwt.XFStyle()style = xlwt.XFStyle()pattern = xlwt.Pattern()pattern.pattern = xlwt.Pattern.SOLID_PATTERNpattern.pattern_fore_colour = xlwt.Style.colour_map['yellow']style.pattern = patternf = xlwt.Font()f.bold = TrueboldStyle.font = fcolumn = 0row = 0worksheet.write(row,column,'User Id',style)worksheet.write(row,column+1,'Email',style)worksheet.write(row,column+2,'Count',style)worksheet.write(row,column+3,'Action',style)cursor = conn.cursor()cursor.execute(datesql)result = cursor.fetchall()for r in result:row=row+1worksheet.write(row,column,r[0])worksheet.write(row,column+1,r[1])worksheet.write(row,column+2,r[2])worksheet.write(row,column+3,r[3])conn.close()workbook.save(TMP_FILE)def sendmail(email, message, fileName, title):if email == "":returnmailServer = smtplib.SMTP(SMTP_SERVER, SMTP_PORT)mailServer.ehlo()mailServer.starttls()mailServer.ehlo()msg = MIMEMultipart()msg['Subject'] = titlemsg.preamble = titlefileMsg = MIMEBase('application', 'vnd.ms-excel')fileMsg.set_payload(file(TMP_FILE).read())encoders.encode_base64(fileMsg)fileMsg.add_header('Content-Disposition', 'attachment;filename=' + fileName)msg.attach(fileMsg)MAILTO = ['manas.kapoor@saholic.com']mailServer.login(SENDER, PASSWORD)mailServer.sendmail(PASSWORD, MAILTO, msg.as_string())def main():generateProductWiseReport()generateUserCountFavoritesReport()generateUserProductReport()sendmail(["manas.kapoor@shop2020.in"], "", TMP_FILE, SUBJECT)if __name__=='__main__':main()