Subversion Repositories SmartDukaan

Rev

Rev 15231 | Rev 15551 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
14772 kshitij.so 1
'''
2
Created on Mar 10, 2015
3
 
4
'''
5
from datetime import date, datetime, timedelta
6
from dtr.storage.Mysql import getOrdersAfterDate, \
7
    getOrdersByTag
8
from email import encoders
9
from email.mime.base import MIMEBase
10
from email.mime.multipart import MIMEMultipart
11
from email.mime.text import MIMEText
12
from pymongo.mongo_client import MongoClient
13
from xlrd import open_workbook
14
from xlutils.copy import copy
15
from xlwt.Workbook import Workbook
16
import MySQLdb
17
import smtplib
18
import time
19
import xlwt
15228 manas 20
import pymongo
21
from shop2020.utils.Utils import to_py_date, to_java_date
22
from datetime import datetime
23
from elixir import *
24
from dtr.storage import DataService
25
from dtr.storage.DataService import Orders, Users, CallHistory
26
from sqlalchemy.sql.expression import func
15244 manas 27
from operator import or_
14772 kshitij.so 28
 
29
 
30
DB_HOST = "localhost"
31
DB_USER = "root"
32
DB_PASSWORD = "shop2020"
33
DB_NAME = "dtr"
34
TMP_FILE = "User_Activity_Report.xls"  
35
 
15228 manas 36
con = None
37
dateWiseOrderMap = {}
38
weekWiseOrderMap = {}
39
monthWiseOrderMap = {}
40
orderIds = []
41
cutOff = 1425839400
42
#cutOff = 1425234600
43
oneDay = 86400
44
monthCutOff = 1425148200
45
weekCutOff = 1425839400
46
#weekCutOff = 1425234600
47
 
48
DataService.initialize()
49
 
50
 
14772 kshitij.so 51
# KEY NAMES
52
SENDER = "cnc.center@shop2020.in"
53
PASSWORD = "5h0p2o2o"
54
SUBJECT = "User Activity Report for" + date.today().isoformat()
55
SMTP_SERVER = "smtp.gmail.com"
56
SMTP_PORT = 587    
57
 
58
DATE_QUERY="""
59
SELECT date(d.visited) from daily_visitors d 
15244 manas 60
join users u where u.id=d.user_id AND 
61
(LOWER(u.referrer) NOT LIKE  'emp%' OR u.utm_campaign is not NULL) AND u.activated =1
14772 kshitij.so 62
AND date(d.visited) > '2015-03-08' group by visited ;
63
"""
64
 
65
MONTH_QUERY="""
66
SELECT month(d.visited) from daily_visitors d 
15244 manas 67
join users u on u.id=d.user_id where 
68
(LOWER(u.referrer) NOT LIKE  'emp%' OR u.utm_campaign is not NULL) AND u.activated =1
14772 kshitij.so 69
group by month(d.visited);
70
"""
71
 
72
WEEK_QUERY="""
73
SELECT CONCAT(date(o.created), ' - ', date(o.created) + INTERVAL 6 DAY) AS week 
74
FROM  order_view o
15244 manas 75
JOIN users u ON u.id = o.user_id WHERE 
76
(LOWER(u.referrer) NOT LIKE  'emp%' OR u.utm_campaign is not NULL) AND u.activated =1
14772 kshitij.so 77
AND date(o.created) > '2015-03-08' 
78
GROUP BY WEEK(date(o.created))
79
ORDER BY WEEK(date(o.created))
80
"""
81
 
82
DNRU_QUERY="""
83
SELECT count(*) 
15244 manas 84
FROM users u WHERE 
85
(LOWER(u.referrer) NOT LIKE  'emp%' OR u.utm_campaign is not NULL) AND u.activated =1
14772 kshitij.so 86
AND date(u.created) > '2015-03-08'
87
group by date(u.created) 
88
order by date(u.created)
89
"""
90
 
91
DAU_QUERY="""
92
SELECT count(distinct d.user_id) 
15244 manas 93
FROM daily_visitors d join users u WHERE u.id=d.user_id 
94
AND (LOWER(u.referrer) NOT LIKE  'emp%' OR u.utm_campaign is not NULL) AND u.activated =1
14772 kshitij.so 95
AND date(d.visited) > '2015-03-08' group by visited ;
96
"""
97
 
98
DAB_QUERY="""
99
SELECT COUNT(DISTINCT o.user_id ) 
100
FROM  order_view o
15244 manas 101
JOIN users u ON u.id = o.user_id WHERE 
102
(LOWER(u.referrer) NOT LIKE  'emp%' OR u.utm_campaign is not NULL) AND u.activated =1
103
AND (o.STATUS =  'ORDER_CREATED' OR o.STATUS ='DETAIL_CREATED')
14772 kshitij.so 104
AND date(o.created) > '2015-03-08' 
105
group by date(o.created)
106
order by date(o.created)
107
"""
108
 
109
DTO_QUERY="""
110
SELECT COUNT( *) 
111
FROM  order_view o
15244 manas 112
JOIN users u ON u.id = o.user_id WHERE 
113
(LOWER(u.referrer) NOT LIKE  'emp%' OR u.utm_campaign is not NULL) AND u.activated =1
114
AND (o.STATUS =  'ORDER_CREATED' OR o.STATUS ='DETAIL_CREATED')
14772 kshitij.so 115
AND date(o.created) > '2015-03-08' 
116
GROUP BY DATE(o.created)
117
order by date(o.created) 
118
"""
119
 
120
MNRU_QUERY="""
15244 manas 121
SELECT count(*) FROM users u WHERE 
122
(LOWER(u.referrer) NOT LIKE  'emp%' OR u.utm_campaign is not NULL) AND u.activated =1
14772 kshitij.so 123
AND date(u.created) > '2015-03-08' 
124
group by month(u.created)
125
order by month(u.created) 
126
"""
127
 
128
MAU_QUERY="""
129
SELECT count(distinct d.user_id) 
15244 manas 130
FROM daily_visitors d join users u where u.id=d.user_id AND 
131
(LOWER(u.referrer) NOT LIKE  'emp%' OR u.utm_campaign is not NULL) AND u.activated =1
14772 kshitij.so 132
AND date(d.visited) > '2015-03-08' 
133
group by month(d.visited)
134
order by month(d.visited); 
135
"""
136
 
137
MAB_QUERY="""
138
SELECT COUNT(DISTINCT o.user_id ) 
139
FROM  order_view o
140
JOIN users u ON u.id = o.user_id where
15244 manas 141
(LOWER(u.referrer) NOT LIKE  'emp%' OR u.utm_campaign is not NULL) AND u.activated =1
142
AND (o.STATUS =  'ORDER_CREATED' OR o.STATUS ='DETAIL_CREATED')
14772 kshitij.so 143
AND date(o.created) > '2015-03-08' 
144
group by month(o.created)
145
order by month(o.created); 
146
"""
147
 
148
MTO_QUERY="""
149
SELECT COUNT( *) 
150
FROM  order_view o
151
JOIN users u ON u.id = o.user_id where
15244 manas 152
(LOWER(u.referrer) NOT LIKE  'emp%' OR u.utm_campaign is not NULL) AND u.activated =1
153
AND (o.STATUS =  'ORDER_CREATED' OR o.STATUS ='DETAIL_CREATED')
14772 kshitij.so 154
AND date(o.created) > '2015-03-08' 
155
GROUP BY MONTH(o.created)
156
order by month(o.created); 
157
"""
158
 
159
WNRU_QUERY="""
160
SELECT COUNT(*)
161
FROM users u WHERE 
15244 manas 162
(LOWER(u.referrer) NOT LIKE  'emp%' OR u.utm_campaign is not NULL) AND u.activated =1
14772 kshitij.so 163
AND date(u.created) > '2015-03-08' 
164
GROUP BY WEEK(date(u.created))
165
ORDER BY WEEK(date(u.created))
166
 
167
"""
168
WAU_QUERY="""
169
SELECT  COUNT(distinct d.user_id) AS total
15244 manas 170
FROM  daily_visitors d join users u where u.id=d.user_id AND 
171
(LOWER(u.referrer) NOT LIKE  'emp%' OR u.utm_campaign is not NULL) AND u.activated =1
14772 kshitij.so 172
AND date(d.visited) > '2015-03-08' 
173
GROUP BY WEEK(d.visited)
174
ORDER BY WEEK(d.visited)
175
"""
176
 
177
 
178
WAB_QUERY="""
179
SELECT COUNT( DISTINCT o.user_id ) 
180
FROM  order_view o
15244 manas 181
JOIN users u ON u.id = o.user_id WHERE
182
(LOWER(u.referrer) NOT LIKE  'emp%' OR u.utm_campaign is not NULL) AND u.activated =1
183
AND (o.STATUS =  'ORDER_CREATED' OR o.STATUS ='DETAIL_CREATED')
184
AND date(o.created) > '2015-03-08'  
14772 kshitij.so 185
GROUP BY WEEK(date(o.created))
186
ORDER BY WEEK(date(o.created))
187
"""
188
 
189
WTO_QUERY="""
190
SELECT COUNT(*)
191
FROM  order_view o
15244 manas 192
JOIN users u ON u.id = o.user_id WHERE 
193
(LOWER(u.referrer) NOT LIKE  'emp%' OR u.utm_campaign is not NULL) AND u.activated =1
194
AND (o.STATUS =  'ORDER_CREATED' OR o.STATUS ='DETAIL_CREATED')
14772 kshitij.so 195
AND date(o.created) > '2015-03-08' 
196
GROUP BY WEEK(date(o.created))
197
ORDER BY WEEK(date(o.created))
198
"""
199
 
200
 
201
date_format = xlwt.XFStyle()
202
date_format.num_format_str = 'yyyy/mm/dd'
203
 
204
datetime_format = xlwt.XFStyle()
205
datetime_format.num_format_str = 'yyyy/mm/dd HH:MM AM/PM'
206
 
207
default_format = xlwt.XFStyle()
208
 
209
 
210
def getDbConnection():
211
    return MySQLdb.connect(DB_HOST, DB_USER, DB_PASSWORD, DB_NAME)
212
 
213
 
214
def generateDailyReport():
215
    datesql= DATE_QUERY
216
    dnruSql = DNRU_QUERY
217
    dauSql = DAU_QUERY
218
    dabSql = DAB_QUERY
219
    dtoSql = DTO_QUERY
220
    conn = getDbConnection()
221
 
222
    # prepare a cursor object using cursor() method
223
    cursor = conn.cursor()
224
    # Execute the SQL command
225
    # Fetch source id.
226
    cursor.execute(datesql)
227
    result = cursor.fetchall()
228
    global workbook
229
    workbook = xlwt.Workbook()
230
    worksheet = workbook.add_sheet("User")
231
    boldStyle = xlwt.XFStyle()
232
    f = xlwt.Font()
233
    f.bold = True
234
    boldStyle.font = f
235
    column = 0
236
    row = 0
237
    sumdata=17
15228 manas 238
    global z
14772 kshitij.so 239
    worksheet.write(row, 0, 'Date', boldStyle)
240
    worksheet.write(row, 1, 'TRU', boldStyle)
241
    worksheet.write(row, 2, 'NRU', boldStyle)
242
    worksheet.write(row, 3, 'DAU', boldStyle)
243
    worksheet.write(row, 4, 'DAB', boldStyle)
244
    worksheet.write(row, 5, 'DTO', boldStyle)
15228 manas 245
    worksheet.write(row, 6, 'DSO', boldStyle)   
246
    worksheet.write(row, 7, 'DTV', boldStyle)
14772 kshitij.so 247
    for r in result:
248
        row += 1
249
        column = 0
250
        for data in r :
251
            worksheet.write(row, column, int(data) if type(data) is float else data, date_format if type(data) is date else default_format)
252
            column += 1
253
 
254
    row = 0
255
    cursor.execute(dnruSql)
256
    result = cursor.fetchall()
257
    for r in result:
258
        row += 1
259
        column = 1
260
        for data in r :
261
            print "Data" + str(data)
262
            sumdata=sumdata+data
263
            print "Sum Data" + str(sumdata)
264
            worksheet.write(row, column, int(sumdata) if type(sumdata) is float else sumdata, date_format if type(sumdata) is date else default_format)
265
            column += 1
266
 
267
    row = 0
268
    cursor.execute(dnruSql)
269
    result = cursor.fetchall()
270
    for r in result:
271
        row += 1
272
        column = 2
273
        for data in r :
274
            worksheet.write(row, column, int(data) if type(data) is float else data, date_format if type(data) is date else default_format)
275
            column += 1        
276
 
277
    row = 0
278
    cursor.execute(dauSql)
279
    result = cursor.fetchall()
280
 
281
    for r in result:
282
        row += 1
283
        column = 3
284
        for data in r :
285
            worksheet.write(row, column, int(data) if type(data) is float else data, date_format if type(data) is date else default_format)
286
            column += 1
287
 
288
    row = 0
289
    cursor.execute(dabSql)
290
    result = cursor.fetchall()
291
 
292
    for r in result:
293
        row += 1
294
        column = 4
295
        for data in r :
296
            worksheet.write(row, column, int(data) if type(data) is float else data, date_format if type(data) is date else default_format)
297
            column += 1
298
 
299
    row = 0            
300
    cursor.execute(dtoSql)
301
    result = cursor.fetchall()
302
 
303
    for r in result:
304
        row += 1
305
        column = 5
306
        for data in r :
307
            worksheet.write(row, column, int(data) if type(data) is float else data, date_format if type(data) is date else default_format)
308
            column += 1
15228 manas 309
 
310
    row=0
14772 kshitij.so 311
 
15228 manas 312
    z=0    
313
    for x in sorted(dateWiseOrderMap):
314
        row += 1
315
        column = 6
316
        worksheet.write(row,column,dateWiseOrderMap.get(x).count)
317
        column += 1
14772 kshitij.so 318
 
15228 manas 319
    row =0
320
    for x in sorted(dateWiseOrderMap):
321
        row += 1
322
        column = 7
323
        worksheet.write(row,column,dateWiseOrderMap.get(x).value)
324
        column += 1    
325
 
14772 kshitij.so 326
def generateMonthlyReport():
327
    monthSql = MONTH_QUERY
328
    mnruSql = MNRU_QUERY
329
    mauSql = MAU_QUERY
330
    mabSql = MAB_QUERY
331
    mtoSql = MTO_QUERY
332
 
333
    conn = getDbConnection()
334
 
335
    cursor = conn.cursor()
336
 
337
    cursor.execute(monthSql)
338
    result = cursor.fetchall()
339
    rb = open_workbook(TMP_FILE)
340
    wb = copy(rb)
341
    worksheet = workbook.add_sheet("Monthly")
342
    boldStyle = xlwt.XFStyle()
343
    f = xlwt.Font()
344
    f.bold = True
345
    boldStyle.font = f
346
    column = 0
347
    row = 0
348
    sumdata=17
349
    worksheet.write(row, 0, 'Month', boldStyle)
350
    worksheet.write(row, 1, 'MTRU', boldStyle)
351
    worksheet.write(row, 2, 'MNRU', boldStyle)
352
    worksheet.write(row, 3, 'MAU', boldStyle)
353
    worksheet.write(row, 4, 'MAB', boldStyle)
354
    worksheet.write(row, 5, 'MTO', boldStyle)
355
 
356
 
357
    for r in result:
358
        row += 1
359
        column = 0
360
        for data in r :
361
            worksheet.write(row, column, int(data) if type(data) is float else data, date_format if type(data) is date else default_format)
362
            column += 1
363
 
364
    row = 0
365
    cursor.execute(mnruSql)
366
    result = cursor.fetchall()
367
    for r in result:
368
        row += 1
369
        column = 1
370
        for data in r :
371
            print "Data" + str(data)
372
            sumdata=sumdata+data
373
            print "Sum Data" + str(sumdata)
374
            worksheet.write(row, column, int(sumdata) if type(sumdata) is float else sumdata, date_format if type(sumdata) is date else default_format)
375
            column += 1
376
 
377
    row = 0
378
    cursor.execute(mnruSql)
379
    result = cursor.fetchall()
380
    for r in result:
381
        row += 1
382
        column = 2
383
        for data in r :
384
            worksheet.write(row, column, int(data) if type(data) is float else data, date_format if type(data) is date else default_format)
385
            column += 1        
386
 
387
    row = 0
388
    cursor.execute(mauSql)
389
    result = cursor.fetchall()
390
 
391
    for r in result:
392
        row += 1
393
        column = 3
394
        for data in r :
395
            worksheet.write(row, column, int(data) if type(data) is float else data, date_format if type(data) is date else default_format)
396
            column += 1
397
 
398
    row = 0
399
    cursor.execute(mabSql)
400
    result = cursor.fetchall()
401
 
402
    for r in result:
403
        row += 1
404
        column = 4
405
        for data in r :
406
            worksheet.write(row, column, int(data) if type(data) is float else data, date_format if type(data) is date else default_format)
407
            column += 1
408
 
409
    row = 0            
410
    cursor.execute(mtoSql)
411
    result = cursor.fetchall()
412
 
413
    for r in result:
414
        row += 1
415
        column = 5
416
        for data in r :
417
            worksheet.write(row, column, int(data) if type(data) is float else data, date_format if type(data) is date else default_format)
418
            column += 1
419
 
420
    workbook.save(TMP_FILE)
14805 kshitij.so 421
    sendmail(["manas.kapoor@shop2020.in","rajneesh.arora@saholic.com"], "", TMP_FILE, SUBJECT)
15228 manas 422
    #sendmail(["manas.kapoor@shop2020.in"], "", TMP_FILE, SUBJECT)
14772 kshitij.so 423
 
424
def generateWeeklyReport():
425
    weekSql = WEEK_QUERY
426
    wnruSql = WNRU_QUERY
427
    wauSql = WAU_QUERY
428
    wabSql = WAB_QUERY
429
    wtoSql = WTO_QUERY
430
 
431
    conn = getDbConnection()
432
 
433
    cursor = conn.cursor()
434
 
435
    cursor.execute(weekSql)
436
    result = cursor.fetchall()
437
    rb = open_workbook(TMP_FILE)
438
    wb = copy(rb)
439
    worksheet = workbook.add_sheet("Weekly")
440
    boldStyle = xlwt.XFStyle()
441
    f = xlwt.Font()
442
    f.bold = True
443
    boldStyle.font = f
444
    column = 0
445
    row = 0
446
    sumdata=17
447
    worksheet.write(row, 0, 'Week', boldStyle)
448
    worksheet.write(row, 1, 'WTRU', boldStyle)
449
    worksheet.write(row, 2, 'WNRU', boldStyle)
450
    worksheet.write(row, 3, 'WAU', boldStyle)
451
    worksheet.write(row, 4, 'WAB', boldStyle)
452
    worksheet.write(row, 5, 'WTO', boldStyle)
15228 manas 453
    worksheet.write(row, 6, 'WTS', boldStyle)
454
    worksheet.write(row, 7, 'WTV', boldStyle)
14772 kshitij.so 455
 
456
    for r in result:
457
        row += 1
458
        column = 0
459
        for data in r :
460
            worksheet.write(row, column, int(data) if type(data) is float else data, date_format if type(data) is date else default_format)
461
            column += 1
462
 
463
    row = 0
464
    cursor.execute(wnruSql)
465
    result = cursor.fetchall()
466
    for r in result:
467
        row += 1
468
        column = 1
469
        for data in r :
470
            print "Data" + str(data)
471
            sumdata=sumdata+data
472
            print "Sum Data" + str(sumdata)
473
            worksheet.write(row, column, int(sumdata) if type(sumdata) is float else sumdata, date_format if type(sumdata) is date else default_format)
474
            column += 1
475
 
476
    row = 0
477
    cursor.execute(wnruSql)
478
    result = cursor.fetchall()
479
    for r in result:
480
        row += 1
481
        column = 2
482
        for data in r :
483
            worksheet.write(row, column, int(data) if type(data) is float else data, date_format if type(data) is date else default_format)
484
            column += 1        
485
 
486
    row = 0
487
    cursor.execute(wauSql)
488
    result = cursor.fetchall()
489
 
490
    for r in result:
491
        row += 1
492
        column = 3
493
        for data in r :
494
            worksheet.write(row, column, int(data) if type(data) is float else data, date_format if type(data) is date else default_format)
495
            column += 1
496
 
497
    row = 0
498
    cursor.execute(wabSql)
499
    result = cursor.fetchall()
500
 
501
    for r in result:
502
        row += 1
503
        column = 4
504
        for data in r :
505
            worksheet.write(row, column, int(data) if type(data) is float else data, date_format if type(data) is date else default_format)
506
            column += 1
507
 
508
    row = 0            
509
    cursor.execute(wtoSql)
510
    result = cursor.fetchall()
511
 
512
    for r in result:
513
        row += 1
514
        column = 5
515
        for data in r :
516
            worksheet.write(row, column, int(data) if type(data) is float else data, date_format if type(data) is date else default_format)
517
            column += 1
15228 manas 518
 
519
    row = 0        
520
    for x in sorted(weekWiseOrderMap):
521
        row += 1
522
        column = 6
523
        worksheet.write(row,column,weekWiseOrderMap.get(x).count)
524
        column+=1
525
    row = 0
526
    for x in sorted(weekWiseOrderMap):
527
        row += 1
528
        column = 7
529
        worksheet.write(row,column,weekWiseOrderMap.get(x).value)
530
        column+=1    
14772 kshitij.so 531
 
532
 
533
def sendmail(email, message, fileName, title):
534
    if email == "":
535
        return
536
    mailServer = smtplib.SMTP(SMTP_SERVER, SMTP_PORT)
537
    mailServer.ehlo()
538
    mailServer.starttls()
539
    mailServer.ehlo()
540
 
541
    # Create the container (outer) email message.
542
    msg = MIMEMultipart()
543
    msg['Subject'] = title
544
    msg.preamble = title
545
    html_msg = MIMEText(message, 'html')
546
    msg.attach(html_msg)
547
 
548
    fileMsg = MIMEBase('application', 'vnd.ms-excel')
549
    fileMsg.set_payload(file(TMP_FILE).read())
550
    encoders.encode_base64(fileMsg)
551
    fileMsg.add_header('Content-Disposition', 'attachment;filename=' + fileName)
552
    msg.attach(fileMsg)
14805 kshitij.so 553
 
554
    MAILTO = ['manas.kapoor@saholic.com','rajneesh.arora@saholic.com']
15228 manas 555
    #MAILTO = ['manas.kapoor@saholic.com']
14772 kshitij.so 556
    mailServer.login(SENDER, PASSWORD)
557
    mailServer.sendmail(PASSWORD, MAILTO, msg.as_string())
558
 
15228 manas 559
class __Order:
560
 
561
    def __init__(self, count, value):
562
 
563
        self.count = count
564
        self.value = value
565
 
566
def get_mongo_connection(host='localhost', port=27017):
567
    global con
568
    if con is None:
569
        print "Establishing connection %s host and port %d" %(host,port)
570
        try:
571
            con = pymongo.MongoClient(host, port)
572
        except Exception, e:
573
            print e
574
            return None
575
    return con
576
 
577
def populateOrderMap():
578
    global dateWiseOrderMap
579
    allOrders = get_mongo_connection().Dtr.merchantOrder.find({'createdOnInt':{"$gte":cutOff}}).sort([('createdOnInt',pymongo.ASCENDING)])
580
    for orders in allOrders:
581
        if orders.get('orderId') not in order_ids:
582
            continue
583
        cdate = ((to_py_date(orders.get('createdOnInt') * 1000)))
584
        millisec = to_java_date(datetime(cdate.year, cdate.month, cdate.day))
585
        if dateWiseOrderMap.has_key(millisec):
586
            orderObj = dateWiseOrderMap.get(millisec)
587
            q, c = getSubOrderQuantity(orders.get('subOrders'))
588
            orderObj.count += q
589
            orderObj.value += c
590
        else:
591
            orderObj = __Order(None, None)
592
            q, c = getSubOrderQuantity(orders.get('subOrders'))
593
            orderObj.count = q
594
            orderObj.value = c 
595
            dateWiseOrderMap[millisec] = orderObj
596
 
597
def getSubOrderQuantity(subOrders):
598
    q = 0
599
    c = 0
600
    if subOrders is None:
601
        return q, c
602
    for subOrder in subOrders:
603
        q = q + int(subOrder.get('quantity'))
604
        try:
605
            c = c + float(subOrder.get('amountPaid').encode('utf-8'))
606
        except AttributeError:
607
            c = c + float(subOrder.get('amountPaid'))
608
    return q, c
609
 
610
def populateWeekWiseMap():
611
    global weekCutOff
612
    while(True):
613
        quantity, amount = 0 , 0
614
        for i in xrange(weekCutOff , (weekCutOff * 7)+1):
615
            orderObj = dateWiseOrderMap.get(i*1000)
616
            quantity += orderObj.count
617
            amount += orderObj.value
618
            i = i + oneDay
619
        weekWiseOrderMap[weekCutOff * 1000] = __Order(quantity, amount)
620
        weekCutOff = weekCutOff * 1000 * 7 + oneDay
621
        if weekCutOff >= to_py_date(datetime.now()):
622
            break
623
 
624
def populateWeekWiseMap1():
625
    global weekCutOff
626
    while(True):
627
        #print weekCutOff *1000
628
        #print to_java_date(datetime.now())
629
        #print "**********************"
630
        if weekCutOff *1000 >= to_java_date(datetime.now()):
631
            #print "Breaking outer while"
632
            break
633
        init = weekCutOff
634
        breakPoint = weekCutOff + (6 * oneDay)
635
        quantity, amount = 0 , 0
636
        while(True):
637
            #print to_py_date(weekCutOff*1000)
638
            #print "weekCutOff ",weekCutOff
639
            #print "breakPoint ",breakPoint
640
            orderObj = dateWiseOrderMap.get(weekCutOff * 1000)
641
            if orderObj is not None:
642
                quantity += orderObj.count
643
                amount += orderObj.value
644
            weekCutOff = weekCutOff + oneDay
645
            if weekCutOff > breakPoint:
646
                weekWiseOrderMap[init * 1000] = __Order(quantity, amount)
647
                #print "Breaking inner while"
648
                break 
649
 
650
def populateMonthWiseMap():
651
    global monthCutOff
652
    while(True):
653
        quantity, amount = 0 , 0
654
        for i in xrange(monthCutOff , (monthCutOff * 30)+1):
655
            orderObj = dateWiseOrderMap.get(i*1000)
656
            quantity += orderObj.count
657
            amount += orderObj.value
658
            i = i + oneDay
659
        weekWiseOrderMap[monthCutOff * 1000] = __Order(quantity, amount)
660
        monthCutOff = monthCutOff * 1000 * 30 + oneDay
661
        if monthCutOff >= to_py_date(datetime.now()):
662
            break
663
 
664
def populateMonthWiseMap1():
665
    global weekCutOff
666
    while(True):
667
        print weekCutOff *1000
668
        print to_java_date(datetime.now())
669
        print "**********************"
670
        if weekCutOff *1000 >= to_java_date(datetime.now()):
671
            print "Breaking outer while"
672
            break
673
        init = weekCutOff
674
        breakPoint = weekCutOff + (6 * oneDay)
675
        quantity, amount = 0 , 0
676
        while(True):
677
            print to_py_date(weekCutOff*1000)
678
            print "weekCutOff ",weekCutOff
679
            print "breakPoint ",breakPoint
680
            orderObj = dateWiseOrderMap.get(weekCutOff * 1000)
681
            if orderObj is None:
682
                print "None for ", to_py_date(weekCutOff * 1000)
683
            if orderObj is not None:
684
                quantity += orderObj.count
685
                amount += orderObj.value
686
            weekCutOff = weekCutOff + oneDay
687
            if weekCutOff > breakPoint:
688
                weekWiseOrderMap[init * 1000] = __Order(quantity, amount)
689
                print "Breaking inner while"
690
                break 
691
 
692
def populateValidOrders():
693
    global order_ids
15244 manas 694
    #allOrders = session.query(Orders.id).join((Users,Orders.user_id==Users.id)).filter(~(func.lower(Users.referrer)).like('emp%')).all()
695
    allOrders = session.query(Orders.id).join((Users,Orders.user_id==Users.id)).filter(or_(~(func.lower(Users.referrer)).like('emp%'),Users.utm_campaign != None)).all()
15228 manas 696
    order_ids = list(zip(*allOrders)[0])
15244 manas 697
 
14772 kshitij.so 698
def main():
699
    #date = raw_input('Enter a date name: ')
15228 manas 700
    populateValidOrders()
701
    populateOrderMap()
702
    populateWeekWiseMap1()
14772 kshitij.so 703
    generateDailyReport()
704
    generateWeeklyReport()
705
    generateMonthlyReport()
15228 manas 706
 
14772 kshitij.so 707
if __name__ == '__main__':
708
    main()
709
 
710