Rev 15244 | Rev 16933 | 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_DB_HOST = "localhost"DB_USER = "root"DB_PASSWORD = "shop2020"DB_NAME = "dtr"TMP_FILE = "User_Activity_Report.xls"con = NonedateWiseOrderMap = {}weekWiseOrderMap = {}monthWiseOrderMap = {}orderIds = []cutOff = 1425839400#cutOff = 1425234600oneDay = 86400monthCutOff = 1425148200weekCutOff = 1425839400#weekCutOff = 1425234600DataService.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()# prepare a cursor object using cursor() methodcursor = conn.cursor()# Execute the SQL command# Fetch source id.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, 'DSO', boldStyle)worksheet.write(row, 7, 'DTV', 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 :print "Data" + str(data)sumdata=sumdata+dataprint "Sum Data" + str(sumdata)worksheet.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 += 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, 'MTS', boldStyle)worksheet.write(row, 7, 'MTV', 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 :print "Data" + str(data)sumdata=sumdata+dataprint "Sum Data" + str(sumdata)worksheet.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 += 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, 'WTS', boldStyle)worksheet.write(row, 7, 'WTV', 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 :print "Data" + str(data)sumdata=sumdata+dataprint "Sum Data" + str(sumdata)worksheet.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+=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]}}).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 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()generateDailyReport()generateWeeklyReport()generateMonthlyReport()if __name__ == '__main__':main()