Rev 16965 | Rev 17032 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | RSS feed
'''Created on Mar 10, 2015'''from datetime import date, datetime, timedeltafrom dtr.storage.Mysql import getOrdersAfterDate, \getOrdersByTagfrom email import encodersfrom email.mime.base import MIMEBasefrom email.mime.multipart import MIMEMultipartfrom email.mime.text import MIMETextfrom pymongo.mongo_client import MongoClientfrom xlrd import open_workbookfrom xlutils.copy import copyfrom xlwt.Workbook import Workbookimport MySQLdbimport smtplibimport timeimport xlwtimport pymongofrom shop2020.utils.Utils import to_py_date, to_java_datefrom datetime import datetimefrom elixir import *from dtr.storage import DataServicefrom dtr.storage.DataService import Orders, Users, CallHistoryfrom sqlalchemy.sql.expression import funcfrom operator import or_from time import strftimefrom dtr.utils import utilsDB_HOST = "localhost"DB_USER = "root"DB_PASSWORD = "shop2020"DB_NAME = "dtr"TMP_FILE = "User_Activity_Report.xls"con = NonedateWiseOrderMap = {}weekWiseOrderMap = {}monthWiseOrderMap = {}dateWiseSaholicOrderMap = {}weekWiseSaholicOrderMap = {}monthWiseSaholicOrderMap = {}orderIds = []cutOff = 1425839400#cutOff = 1425234600oneDay = 86400monthCutOff = 1425148200weekCutOff = 1425839400newWeekCutOff = 1425839400newMonthCutOff = 1425148200DataService.initialize()monthMap = { '01':30,'02':28,'03':30,'04':29,'05':30,'06':29,'07':30,'08':30,'09':29,'10':30,'11':29,'12':30}# KEY NAMESSENDER = "cnc.center@shop2020.in"PASSWORD = "5h0p2o2o"SUBJECT = "User Activity Report for " + date.today().isoformat()SMTP_SERVER = "smtp.gmail.com"SMTP_PORT = 587DATE_QUERY="""SELECT date(d.visited) from daily_visitors djoin users u where u.id=d.user_id AND(LOWER(u.referrer) NOT LIKE 'emp%' OR u.utm_campaign is not NULL) AND u.activated =1AND date(d.visited) > '2015-03-08' group by visited ;"""MONTH_QUERY="""SELECT month(d.visited) from daily_visitors djoin users u on u.id=d.user_id where(LOWER(u.referrer) NOT LIKE 'emp%' OR u.utm_campaign is not NULL) AND u.activated =1group by month(d.visited);"""WEEK_QUERY="""SELECT CONCAT(date(o.created), ' - ', date(o.created) + INTERVAL 6 DAY) AS weekFROM order_view oJOIN users u ON u.id = o.user_id WHERE(LOWER(u.referrer) NOT LIKE 'emp%' OR u.utm_campaign is not NULL) AND u.activated =1AND date(o.created) > '2015-03-08'GROUP BY WEEK(date(o.created))ORDER BY WEEK(date(o.created))"""DNRU_QUERY="""SELECT count(*)FROM users u WHERE(LOWER(u.referrer) NOT LIKE 'emp%' OR u.utm_campaign is not NULL) AND u.activated =1AND date(u.created) > '2015-03-08'group by date(u.created)order by date(u.created)"""DAU_QUERY="""SELECT count(distinct d.user_id)FROM daily_visitors d join users u WHERE u.id=d.user_idAND (LOWER(u.referrer) NOT LIKE 'emp%' OR u.utm_campaign is not NULL) AND u.activated =1AND date(d.visited) > '2015-03-08' group by visited ;"""# DAB_QUERY="""# SELECT COUNT(DISTINCT o.user_id )# FROM order_view o# JOIN users u ON u.id = o.user_id WHERE# (LOWER(u.referrer) NOT LIKE 'emp%' OR u.utm_campaign is not NULL) AND u.activated =1# AND (o.STATUS = 'ORDER_CREATED' OR o.STATUS ='DETAIL_CREATED')# AND date(o.created) > '2015-03-08'# group by date(o.created)# order by date(o.created)# """DAB_QUERY="""select count(DISTINCT s.user_id) from(SELECT created, id,user_id FROM order_view where STATUS = 'ORDER_CREATED' OR STATUS ='DETAIL_CREATED'union SELECT created, id,user_id FROM flipkartorders where date(created)>'2015-03-22') sJOIN users u ON u.id = s.user_id WHERE(LOWER(u.referrer) NOT LIKE 'emp%' OR u.utm_campaign is not NULL) AND u.activated = 1AND date(s.created) > '2015-03-08'GROUP by date(s.created)ORDER by date(s.created);"""DTO_QUERY="""select count(*) from(SELECT created, id,user_id FROM order_view where STATUS = 'ORDER_CREATED' OR STATUS ='DETAIL_CREATED'union SELECT created, id,ifnull(user_id,139) FROM flipkartorders where date(created)>'2015-03-22') sJOIN users u ON u.id = s.user_id WHERE(LOWER(u.referrer) NOT LIKE 'emp%' OR u.utm_campaign is not NULL) AND u.activated = 1AND date(s.created) > '2015-03-08'GROUP by date(s.created)ORDER by date(s.created);"""# DTO_QUERY="""# SELECT date(o.created),COUNT(*)# FROM order_view o# JOIN users u ON u.id = o.user_id WHERE# (LOWER(u.referrer) NOT LIKE 'emp%' OR u.utm_campaign is not NULL) AND u.activated =1# AND (o.STATUS = 'ORDER_CREATED' OR o.STATUS ='DETAIL_CREATED')# AND date(o.created) > '2015-03-08'# GROUP BY DATE(o.created)# order by date(o.created)#"""MNRU_QUERY="""SELECT count(*) FROM users u WHERE(LOWER(u.referrer) NOT LIKE 'emp%' OR u.utm_campaign is not NULL) AND u.activated =1AND date(u.created) > '2015-03-08'group by month(u.created)order by month(u.created)"""MAU_QUERY="""SELECT count(distinct d.user_id)FROM daily_visitors d join users u where u.id=d.user_id AND(LOWER(u.referrer) NOT LIKE 'emp%' OR u.utm_campaign is not NULL) AND u.activated =1AND date(d.visited) > '2015-03-08'group by month(d.visited)order by month(d.visited);"""# MAB_QUERY="""# SELECT COUNT(DISTINCT o.user_id )# FROM order_view o# JOIN users u ON u.id = o.user_id where# (LOWER(u.referrer) NOT LIKE 'emp%' OR u.utm_campaign is not NULL) AND u.activated =1# AND (o.STATUS = 'ORDER_CREATED' OR o.STATUS ='DETAIL_CREATED')# AND date(o.created) > '2015-03-08'# group by month(o.created)# order by month(o.created);# """# MTO_QUERY="""# SELECT COUNT( *)# FROM order_view o# JOIN users u ON u.id = o.user_id where# (LOWER(u.referrer) NOT LIKE 'emp%' OR u.utm_campaign is not NULL) AND u.activated =1# AND (o.STATUS = 'ORDER_CREATED' OR o.STATUS ='DETAIL_CREATED')# AND date(o.created) > '2015-03-08'# GROUP BY MONTH(o.created)# order by month(o.created);# """MAB_QUERY="""select count(DISTINCT s.user_id) from(SELECT created, id,user_id FROM order_view where STATUS = 'ORDER_CREATED' OR STATUS ='DETAIL_CREATED'union SELECT created, id,user_id FROM flipkartorders where date(created)>'2015-03-22') sJOIN users u ON u.id = s.user_id WHERE (LOWER(u.referrer) NOT LIKE 'emp%' OR u.utm_campaign is not NULL) AND u.activated =1AND date(s.created) > '2015-03-08'GROUP by month(s.created)order by month(s.created);"""MTO_QUERY="""select count(*) from(SELECT created, id,user_id FROM order_view where STATUS = 'ORDER_CREATED' OR STATUS ='DETAIL_CREATED'union SELECT created, id,ifnull(user_id,139) FROM flipkartorders where date(created)>'2015-03-22') sJOIN users u ON u.id = s.user_id WHERE (LOWER(u.referrer) NOT LIKE 'emp%' OR u.utm_campaign is not NULL) AND u.activated =1AND date(s.created) > '2015-03-08'GROUP by month(s.created)order by month(s.created);"""WNRU_QUERY="""SELECT COUNT(*)FROM users u WHERE(LOWER(u.referrer) NOT LIKE 'emp%' OR u.utm_campaign is not NULL) AND u.activated =1AND date(u.created) > '2015-03-08'GROUP BY WEEK(date(u.created))ORDER BY WEEK(date(u.created))"""WAU_QUERY="""SELECT COUNT(distinct d.user_id) AS totalFROM daily_visitors d join users u where u.id=d.user_id AND(LOWER(u.referrer) NOT LIKE 'emp%' OR u.utm_campaign is not NULL) AND u.activated =1AND date(d.visited) > '2015-03-08'GROUP BY WEEK(d.visited)ORDER BY WEEK(d.visited)"""# WAB_QUERY="""# SELECT COUNT( DISTINCT o.user_id )# FROM order_view o# JOIN users u ON u.id = o.user_id WHERE# (LOWER(u.referrer) NOT LIKE 'emp%' OR u.utm_campaign is not NULL) AND u.activated =1# AND (o.STATUS = 'ORDER_CREATED' OR o.STATUS ='DETAIL_CREATED')# AND date(o.created) > '2015-03-08'# GROUP BY WEEK(date(o.created))# ORDER BY WEEK(date(o.created))# """# WTO_QUERY="""# SELECT COUNT(*)# FROM order_view o# JOIN users u ON u.id = o.user_id WHERE# (LOWER(u.referrer) NOT LIKE 'emp%' OR u.utm_campaign is not NULL) AND u.activated =1# AND (o.STATUS = 'ORDER_CREATED' OR o.STATUS ='DETAIL_CREATED')# AND date(o.created) > '2015-03-08'# GROUP BY WEEK(date(o.created))# ORDER BY WEEK(date(o.created))# """WAB_QUERY="""select count(distinct user_id) from(SELECT created, id,user_id FROM order_view where STATUS = 'ORDER_CREATED' OR STATUS ='DETAIL_CREATED'union SELECT created, id,user_id FROM flipkartorders where date(created)>'2015-03-22') sJOIN users u ON u.id = s.user_id WHERE (LOWER(u.referrer) NOT LIKE 'emp%' OR u.utm_campaign is not NULL) AND u.activated =1AND date(s.created) > '2015-03-08'GROUP by week(s.created)order by week(s.created);"""WTO_QUERY="""select count(*) from(SELECT created, id,user_id FROM order_view where STATUS = 'ORDER_CREATED' OR STATUS ='DETAIL_CREATED'union SELECT created, id,ifnull(user_id,139) FROM flipkartorders where date(created)>'2015-03-22') sJOIN users u ON u.id = s.user_id WHERE (LOWER(u.referrer) NOT LIKE 'emp%' OR u.utm_campaign is not NULL) AND u.activated =1AND date(s.created) > '2015-03-08'GROUP by week(s.created)order by week(s.created);"""DQ_QUERY="""select sum(quantity) from flipkartorders where date(created)='%s';"""DV_QUERY="""select sum(quantity*price) from flipkartorders where date(created)='%s';"""WQ_QUERY="""select sum(quantity) from flipkartorders where date(created) between '%s' and '%s';"""WV_QUERY="""select sum(quantity*price) from flipkartorders where date(created) between '%s' and '%s';"""date_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)def generateDailyReport():datesql= DATE_QUERYdnruSql = DNRU_QUERYdauSql = DAU_QUERYdabSql = DAB_QUERYdtoSql = DTO_QUERYconn = getDbConnection()cursor = conn.cursor()cursor.execute(datesql)result = cursor.fetchall()global workbookworkbook = xlwt.Workbook()worksheet = workbook.add_sheet("User")boldStyle = xlwt.XFStyle()f = xlwt.Font()f.bold = TrueboldStyle.font = fcolumn = 0row = 0sumdata=17global zworksheet.write(row, 0, 'Date', boldStyle)worksheet.write(row, 1, 'TRU', boldStyle)worksheet.write(row, 2, 'NRU', boldStyle)worksheet.write(row, 3, 'DAU', boldStyle)worksheet.write(row, 4, 'DAB', boldStyle)worksheet.write(row, 5, 'DTO', boldStyle)worksheet.write(row, 6, 'DVOL', boldStyle)worksheet.write(row, 7, 'DTV', boldStyle)worksheet.write(row, 8, 'DOWNVOL', boldStyle)worksheet.write(row, 9, 'DOWNVAL', boldStyle)for r in result:row += 1column = 0for data in r :worksheet.write(row, column, int(data) if type(data) is float else data, date_format if type(data) is date else default_format)column += 1row = 0cursor.execute(dnruSql)result = cursor.fetchall()for r in result:row += 1column = 1for data in r :sumdata=sumdata+dataworksheet.write(row, column, int(sumdata) if type(sumdata) is float else sumdata, date_format if type(sumdata) is date else default_format)column += 1row = 0cursor.execute(dnruSql)result = cursor.fetchall()for r in result:row += 1column = 2for data in r :worksheet.write(row, column, int(data) if type(data) is float else data, date_format if type(data) is date else default_format)column += 1row = 0cursor.execute(dauSql)result = cursor.fetchall()for r in result:row += 1column = 3for data in r :worksheet.write(row, column, int(data) if type(data) is float else data, date_format if type(data) is date else default_format)column += 1row = 0cursor.execute(dabSql)result = cursor.fetchall()for r in result:row += 1column = 4for data in r :worksheet.write(row, column, int(data) if type(data) is float else data, date_format if type(data) is date else default_format)column += 1row = 0cursor.execute(dtoSql)result = cursor.fetchall()for r in result:row += 1column = 5for data in r :worksheet.write(row, column, int(data) if type(data) is float else data, date_format if type(data) is date else default_format)column += 1row=0z=0for x in sorted(dateWiseOrderMap):row += 1column = 6d = str(datetime.fromtimestamp(x/1000.0))dq=DQ_QUERY%d[:10]cursor.execute(dq)result = cursor.fetchall()for r in result:quantity= r[0]if quantity is None:quantity=0worksheet.write(row,column,(dateWiseOrderMap.get(x).count)+quantity)column += 1row =0for x in sorted(dateWiseOrderMap):row += 1column = 7d = str(datetime.fromtimestamp(x/1000.0))dq=DV_QUERY%d[:10]cursor.execute(dq)result = cursor.fetchall()for r in result:quantity= r[0]if quantity is None:quantity=0worksheet.write(row,column,(dateWiseOrderMap.get(x).value)+float(quantity))column += 1#For Saholicrow=0cursor = conn.cursor()cursor.execute(datesql)result = cursor.fetchall()for x in sorted(dateWiseSaholicOrderMap):row=0for r in result:for data in r :row += 1z= to_x_date(x)if str(data).strip() == str(z).strip():column = 8worksheet.write(row,column,dateWiseSaholicOrderMap.get(x).count)column += 1for x in sorted(dateWiseSaholicOrderMap):row=0for r in result:for data in r :row += 1z= to_x_date(x)if str(data).strip() == str(z).strip():column = 9worksheet.write(row,column,dateWiseSaholicOrderMap.get(x).value)column += 1def generateMonthlyReport():monthSql = MONTH_QUERYmnruSql = MNRU_QUERYmauSql = MAU_QUERYmabSql = MAB_QUERYmtoSql = MTO_QUERYconn = getDbConnection()cursor = conn.cursor()cursor.execute(monthSql)result = cursor.fetchall()rb = open_workbook(TMP_FILE)wb = copy(rb)worksheet = workbook.add_sheet("Monthly")boldStyle = xlwt.XFStyle()f = xlwt.Font()f.bold = TrueboldStyle.font = fcolumn = 0row = 0sumdata=17worksheet.write(row, 0, 'Month', boldStyle)worksheet.write(row, 1, 'MTRU', boldStyle)worksheet.write(row, 2, 'MNRU', boldStyle)worksheet.write(row, 3, 'MAU', boldStyle)worksheet.write(row, 4, 'MAB', boldStyle)worksheet.write(row, 5, 'MTO', boldStyle)worksheet.write(row, 6, 'MVOL', boldStyle)worksheet.write(row, 7, 'MTV', boldStyle)worksheet.write(row, 8, 'MOWNVOL', boldStyle)worksheet.write(row, 9, 'MOWNVAL', boldStyle)for r in result:row += 1column = 0for data in r :worksheet.write(row, column, int(data) if type(data) is float else data, date_format if type(data) is date else default_format)column += 1row = 0cursor.execute(mnruSql)result = cursor.fetchall()for r in result:row += 1column = 1for data in r :sumdata=sumdata+dataworksheet.write(row, column, int(sumdata) if type(sumdata) is float else sumdata, date_format if type(sumdata) is date else default_format)column += 1row = 0cursor.execute(mnruSql)result = cursor.fetchall()for r in result:row += 1column = 2for data in r :worksheet.write(row, column, int(data) if type(data) is float else data, date_format if type(data) is date else default_format)column += 1row = 0cursor.execute(mauSql)result = cursor.fetchall()for r in result:row += 1column = 3for data in r :worksheet.write(row, column, int(data) if type(data) is float else data, date_format if type(data) is date else default_format)column += 1row = 0cursor.execute(mabSql)result = cursor.fetchall()for r in result:row += 1column = 4for data in r :worksheet.write(row, column, int(data) if type(data) is float else data, date_format if type(data) is date else default_format)column += 1row = 0cursor.execute(mtoSql)result = cursor.fetchall()for r in result:row += 1column = 5for data in r :worksheet.write(row, column, int(data) if type(data) is float else data, date_format if type(data) is date else default_format)column += 1row=0z=0for x in sorted(monthWiseOrderMap):d = str(datetime.fromtimestamp(x/1000.0))nextday = (x/1000 + (monthMap.get(d[5:7]) * oneDay))*1000dnext = str(datetime.fromtimestamp(nextday/1000.0))row += 1column = 6dq=WQ_QUERY % (d[:10],dnext[:10])cursor.execute(dq)result = cursor.fetchall()for r in result:quantity= r[0]if quantity is None:quantity=0worksheet.write(row,column,(monthWiseOrderMap.get(x).count)+quantity)column += 1row =0for x in sorted(monthWiseOrderMap):row += 1column = 7d = str(datetime.fromtimestamp(x/1000.0))nextday = (x/1000 + (monthMap.get(d[5:7]) * oneDay))*1000dnext = str(datetime.fromtimestamp(nextday/1000.0))dq=WV_QUERY % (d[:10],dnext[:10])cursor.execute(dq)result = cursor.fetchall()for r in result:quantity= r[0]if quantity is None:quantity=0worksheet.write(row,column,(monthWiseOrderMap.get(x).value)+float(quantity))column += 1row =0for x in sorted(monthWiseSaholicOrderMap):row += 1column = 8worksheet.write(row,column,monthWiseSaholicOrderMap.get(x).count)column += 1row =0for x in sorted(monthWiseSaholicOrderMap):row += 1column = 9worksheet.write(row,column,monthWiseSaholicOrderMap.get(x).value)column += 1workbook.save(TMP_FILE)sendmail(["manas.kapoor@shop2020.in","rajneesh.arora@saholic.com"], "", TMP_FILE, SUBJECT)#sendmail(["manas.kapoor@shop2020.in"], "", TMP_FILE, SUBJECT)def generateWeeklyReport():weekSql = WEEK_QUERYwnruSql = WNRU_QUERYwauSql = WAU_QUERYwabSql = WAB_QUERYwtoSql = WTO_QUERYconn = getDbConnection()cursor = conn.cursor()cursor.execute(weekSql)result = cursor.fetchall()rb = open_workbook(TMP_FILE)wb = copy(rb)worksheet = workbook.add_sheet("Weekly")boldStyle = xlwt.XFStyle()f = xlwt.Font()f.bold = TrueboldStyle.font = fcolumn = 0row = 0sumdata=17worksheet.write(row, 0, 'Week', boldStyle)worksheet.write(row, 1, 'WTRU', boldStyle)worksheet.write(row, 2, 'WNRU', boldStyle)worksheet.write(row, 3, 'WAU', boldStyle)worksheet.write(row, 4, 'WAB', boldStyle)worksheet.write(row, 5, 'WTO', boldStyle)worksheet.write(row, 6, 'WVOL', boldStyle)worksheet.write(row, 7, 'WTV', boldStyle)worksheet.write(row, 8, 'WOWNVOL', boldStyle)worksheet.write(row, 9, 'WOWNVAL', boldStyle)for r in result:row += 1column = 0for data in r :worksheet.write(row, column, int(data) if type(data) is float else data, date_format if type(data) is date else default_format)column += 1row = 0cursor.execute(wnruSql)result = cursor.fetchall()for r in result:row += 1column = 1for data in r :sumdata=sumdata+dataworksheet.write(row, column, int(sumdata) if type(sumdata) is float else sumdata, date_format if type(sumdata) is date else default_format)column += 1row = 0cursor.execute(wnruSql)result = cursor.fetchall()for r in result:row += 1column = 2for data in r :worksheet.write(row, column, int(data) if type(data) is float else data, date_format if type(data) is date else default_format)column += 1row = 0cursor.execute(wauSql)result = cursor.fetchall()for r in result:row += 1column = 3for data in r :worksheet.write(row, column, int(data) if type(data) is float else data, date_format if type(data) is date else default_format)column += 1row = 0cursor.execute(wabSql)result = cursor.fetchall()for r in result:row += 1column = 4for data in r :worksheet.write(row, column, int(data) if type(data) is float else data, date_format if type(data) is date else default_format)column += 1row = 0cursor.execute(wtoSql)result = cursor.fetchall()for r in result:row += 1column = 5for data in r :worksheet.write(row, column, int(data) if type(data) is float else data, date_format if type(data) is date else default_format)column += 1row = 0for x in sorted(weekWiseOrderMap):row += 1column = 6d = str(datetime.fromtimestamp(x/1000.0))nextday=oneDay*7*1000+xdnext = str(datetime.fromtimestamp(nextday/1000.0))dq=WQ_QUERY % (d[:10],dnext[:10])cursor.execute(dq)result = cursor.fetchall()for r in result:quantity= r[0]if quantity is None:quantity=0worksheet.write(row,column,(weekWiseOrderMap.get(x).count)+quantity)column+=1row = 0for x in sorted(weekWiseOrderMap):row += 1column = 7d = str(datetime.fromtimestamp(x/1000.0))nextday=oneDay*7*1000+xdnext = str(datetime.fromtimestamp(nextday/1000.0))dq=WV_QUERY % (d[:10],dnext[:10])cursor.execute(dq)result = cursor.fetchall()for r in result:quantity= r[0]if quantity is None:quantity=0worksheet.write(row,column,(weekWiseOrderMap.get(x).value)+float(quantity))column+=1row=0for x in sorted(weekWiseSaholicOrderMap):row += 1column = 8worksheet.write(row,column,weekWiseSaholicOrderMap.get(x).count)column+=1row=0for x in sorted(weekWiseSaholicOrderMap):row += 1column = 9worksheet.write(row,column,weekWiseSaholicOrderMap.get(x).value)column+=1def sendmail(email, message, fileName, title):if email == "":returnmailServer = smtplib.SMTP(SMTP_SERVER, SMTP_PORT)mailServer.ehlo()mailServer.starttls()mailServer.ehlo()# Create the container (outer) email message.msg = MIMEMultipart()msg['Subject'] = titlemsg.preamble = titlehtml_msg = MIMEText(message, 'html')msg.attach(html_msg)fileMsg = 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','rajneesh.arora@saholic.com']#MAILTO = ['manas.kapoor@saholic.com']mailServer.login(SENDER, PASSWORD)mailServer.sendmail(PASSWORD, MAILTO, msg.as_string())class __Order:def __init__(self, count, value):self.count = countself.value = valuedef get_mongo_connection(host='localhost', port=27017):global conif con is None:print "Establishing connection %s host and port %d" %(host,port)try:con = pymongo.MongoClient(host, port)except Exception, e:print ereturn Nonereturn condef populateOrderMap():global dateWiseOrderMapallOrders = get_mongo_connection().Dtr.merchantOrder.find({'createdOnInt':{"$gte":cutOff},'storeId':{"$in":[1,3,4,5,6]}}).sort([('createdOnInt',pymongo.ASCENDING)])for orders in allOrders:if orders.get('orderId') not in order_ids:continuecdate = ((to_py_date(orders.get('createdOnInt') * 1000)))millisec = to_java_date(datetime(cdate.year, cdate.month, cdate.day))if dateWiseOrderMap.has_key(millisec):orderObj = dateWiseOrderMap.get(millisec)q, c = getSubOrderQuantity(orders.get('subOrders'))orderObj.count += qorderObj.value += celse:orderObj = __Order(None, None)q, c = getSubOrderQuantity(orders.get('subOrders'))orderObj.count = qorderObj.value = cdateWiseOrderMap[millisec] = orderObjdef getSubOrderQuantity(subOrders):q = 0c = 0if subOrders is None:return q, cfor subOrder in subOrders:q = q + int(subOrder.get('quantity'))try:c = c + float(subOrder.get('amountPaid').encode('utf-8'))except AttributeError:c = c + float(subOrder.get('amountPaid'))return q, cdef populateWeekWiseMap():global weekCutOffwhile(True):quantity, amount = 0 , 0for i in xrange(weekCutOff , (weekCutOff * 7)+1):orderObj = dateWiseOrderMap.get(i*1000)quantity += orderObj.countamount += orderObj.valuei = i + oneDayweekWiseOrderMap[weekCutOff * 1000] = __Order(quantity, amount)weekCutOff = weekCutOff * 1000 * 7 + oneDayif weekCutOff >= to_py_date(datetime.now()):breakdef populateWeekWiseMap1():global weekCutOffwhile(True):if weekCutOff *1000 >= to_java_date(datetime.now()):breakinit = weekCutOffbreakPoint = weekCutOff + (6 * oneDay)quantity, amount = 0 , 0while(True):orderObj = dateWiseOrderMap.get(weekCutOff * 1000)if orderObj is not None:quantity += orderObj.countamount += orderObj.valueweekCutOff = weekCutOff + oneDayif weekCutOff > breakPoint:weekWiseOrderMap[init * 1000] = __Order(quantity, amount)breakdef populateMonthWiseMap():global monthCutOffwhile(True):quantity, amount = 0 , 0for i in xrange(monthCutOff , (monthCutOff * 30)+1):orderObj = dateWiseOrderMap.get(i*1000)quantity += orderObj.countamount += orderObj.valuei = i + oneDayweekWiseOrderMap[monthCutOff * 1000] = __Order(quantity, amount)monthCutOff = monthCutOff * 1000 * 30 + oneDayif monthCutOff >= to_py_date(datetime.now()):breakdef populateMonthWiseMap1():global monthCutOffwhile(True):print monthCutOff *1000a=str(to_py_date(monthCutOff*1000))print 'Now ' + str(to_java_date(datetime.now()))print "**********************"if monthCutOff *1000 >= to_java_date(datetime.now()):print "Breaking outer while"breakinit = monthCutOffbreakPoint = monthCutOff + (monthMap.get(a[5:7]) * oneDay)print breakPointquantity, amount = 0 , 0while(True):print to_py_date(monthCutOff*1000)print "weekCutOff ",monthCutOffprint "breakPoint ",breakPointorderObj = dateWiseOrderMap.get(monthCutOff * 1000)if orderObj is None:print "None for ", to_py_date(monthCutOff * 1000)if orderObj is not None:quantity += orderObj.countamount += orderObj.valuemonthCutOff = monthCutOff + oneDaycounter=0print counter+1if monthCutOff > breakPoint:monthWiseOrderMap[init * 1000] = __Order(quantity, amount)print "Breaking inner while"breakdef populateSaholicOrderMap():global dateWiseSaholicOrderMapallOrders = get_mongo_connection().Dtr.merchantOrder.find({'createdOnInt':{"$gte":cutOff},'storeId':{"$in":[4]}}).sort([('createdOnInt',pymongo.ASCENDING)])for orders in allOrders:if orders.get('orderId') not in order_ids:continuecdate = ((to_py_date(orders.get('createdOnInt') * 1000)))millisec = to_java_date(datetime(cdate.year, cdate.month, cdate.day))if dateWiseSaholicOrderMap.has_key(millisec):orderObj = dateWiseSaholicOrderMap.get(millisec)q, c = getSaholicSubOrderQuantity(orders.get('subOrders'))orderObj.count += qorderObj.value += celse:orderObj = __Order(None, None)q, c = getSaholicSubOrderQuantity(orders.get('subOrders'))orderObj.count = qorderObj.value = cdateWiseSaholicOrderMap[millisec] = orderObjdef getSaholicSubOrderQuantity(subOrders):q = 0c = 0if subOrders is None:return q, cfor subOrder in subOrders:q = q + int(subOrder.get('quantity'))try:c = c + float(subOrder.get('amountPaid').encode('utf-8'))except AttributeError:c = c + float(subOrder.get('amountPaid'))return q, cdef populateSaholicWeekWiseMap1():global newWeekCutOffwhile(True):if newWeekCutOff *1000 >= to_java_date(datetime.now()):breakinit = newWeekCutOffbreakPoint = newWeekCutOff + (6 * oneDay)quantity, amount = 0 , 0while(True):orderObj = dateWiseSaholicOrderMap.get(newWeekCutOff * 1000)if orderObj is not None:quantity += orderObj.countamount += orderObj.valueelse:quantity +=0amount +=0newWeekCutOff = newWeekCutOff + oneDayif newWeekCutOff > breakPoint:weekWiseSaholicOrderMap[init * 1000] = __Order(quantity, amount)breakdef populateSaholicMonthWiseMap1():global newMonthCutOffwhile(True):print newMonthCutOff *1000a=str(to_py_date(newMonthCutOff*1000))print 'Now ' + str(to_java_date(datetime.now()))print "**********************"if newMonthCutOff *1000 >= to_java_date(datetime.now()):print "Breaking outer while"breakinit = newMonthCutOffbreakPoint = newMonthCutOff + (monthMap.get(a[5:7]) * oneDay)print breakPointquantity, amount = 0 , 0while(True):print to_py_date(newMonthCutOff*1000)print "weekCutOff ",newMonthCutOffprint "breakPoint ",breakPointorderObj = dateWiseSaholicOrderMap.get(newMonthCutOff * 1000)if orderObj is None:print "None for ", to_py_date(newMonthCutOff * 1000)quantity += 0amount += 0if orderObj is not None:quantity += orderObj.countamount += orderObj.valuenewMonthCutOff = newMonthCutOff + oneDaycounter=0print counter+1if newMonthCutOff > breakPoint:monthWiseSaholicOrderMap[init * 1000] = __Order(quantity, amount)print "Breaking inner while"breakdef populateValidOrders():global order_idsallOrders = session.query(Orders.id).join((Users,Orders.user_id==Users.id)).filter(or_(~(func.lower(Users.referrer)).like('emp%'),Users.utm_campaign != None)).all()order_ids = list(zip(*allOrders)[0])def main():populateValidOrders()populateOrderMap()populateWeekWiseMap1()populateMonthWiseMap1()populateSaholicOrderMap()populateSaholicWeekWiseMap1()populateSaholicMonthWiseMap1()generateDailyReport()generateWeeklyReport()generateMonthlyReport()def to_x_date(java_timestamp):try:date = datetime.fromtimestamp(java_timestamp / 1e3)except:return Nonereturn date.strftime('%Y-%m-%d')if __name__ == '__main__':main()