Subversion Repositories SmartDukaan

Rev

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

Rev 17128 Rev 17134
Line 1... Line 1...
1
'''
1
'''
2
Created on Mar 10, 2015
2
Created on Mar 10, 2015
3
 
3
 
4
'''
4
'''
5
from datetime import date, datetime, timedelta
5
from datetime import date, datetime, timedelta, datetime
-
 
6
from dtr.storage import DataService, Mongo
-
 
7
from dtr.storage.DataService import Orders, Users, CallHistory
6
from dtr.storage.Mysql import getOrdersAfterDate, \
8
from dtr.storage.Mysql import getOrdersAfterDate, getOrdersByTag
-
 
9
from dtr.utils import utils
-
 
10
from dtr.utils.utils import toTimeStamp
7
    getOrdersByTag
11
from elixir import *
8
from email import encoders
12
from email import encoders
9
from email.mime.base import MIMEBase
13
from email.mime.base import MIMEBase
10
from email.mime.multipart import MIMEMultipart
14
from email.mime.multipart import MIMEMultipart
11
from email.mime.text import MIMEText
15
from email.mime.text import MIMEText
-
 
16
from operator import or_
12
from pymongo.mongo_client import MongoClient
17
from pymongo.mongo_client import MongoClient
-
 
18
from shop2020.utils.Utils import to_py_date, to_java_date
-
 
19
from sqlalchemy.sql.expression import func
-
 
20
from time import strftime
13
from xlrd import open_workbook
21
from xlrd import open_workbook
14
from xlutils.copy import copy
22
from xlutils.copy import copy
15
from xlwt.Workbook import Workbook
23
from xlwt.Workbook import Workbook
16
import MySQLdb
24
import MySQLdb
-
 
25
import pymongo
17
import smtplib
26
import smtplib
-
 
27
import sys
18
import time
28
import time
19
import xlwt
29
import xlwt
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
-
 
27
from operator import or_
-
 
28
from time import strftime
-
 
29
from dtr.utils import utils
-
 
30
 
30
 
31
 
31
 
32
DB_HOST = "localhost"
32
DB_HOST = "localhost"
33
DB_USER = "root"
33
DB_USER = "root"
34
DB_PASSWORD = "shop2020"
34
DB_PASSWORD = "shop2020"
Line 293... Line 293...
293
 
293
 
294
datetime_format = xlwt.XFStyle()
294
datetime_format = xlwt.XFStyle()
295
datetime_format.num_format_str = 'yyyy/mm/dd HH:MM AM/PM'
295
datetime_format.num_format_str = 'yyyy/mm/dd HH:MM AM/PM'
296
 
296
 
297
default_format = xlwt.XFStyle()
297
default_format = xlwt.XFStyle()
-
 
298
#DTR_DATA_HOST = '45.33.50.227'
-
 
299
DTR_DATA_HOST = '192.168.161.154'
298
 
300
 
299
 
301
 
300
def getDbConnection():
302
def getDbConnection():
301
    return MySQLdb.connect(DB_HOST, DB_USER, DB_PASSWORD, DB_NAME)
303
    return MySQLdb.connect(DB_HOST, DB_USER, DB_PASSWORD, DB_NAME)
302
 
304
 
Line 952... Line 954...
952
                amount +=0
954
                amount +=0
953
            newWeekCutOff = newWeekCutOff + oneDay
955
            newWeekCutOff = newWeekCutOff + oneDay
954
            if newWeekCutOff > breakPoint:
956
            if newWeekCutOff > breakPoint:
955
                weekWiseSaholicOrderMap[init * 1000] = __Order(quantity, amount)
957
                weekWiseSaholicOrderMap[init * 1000] = __Order(quantity, amount)
956
                break 
958
                break 
-
 
959
def populateYesterdayActiveUsers(hours=4):
-
 
960
    con = Mongo.get_mongo_connection(DTR_DATA_HOST)
-
 
961
    db = con.User
-
 
962
    curtime = datetime.now()
-
 
963
    fourhrsprev = curtime - timedelta(hours=hours)
-
 
964
    pipeline = [{"$match":{"created":{"$lt":toTimeStamp(curtime)*1000, "$gt":toTimeStamp(fourhrsprev)*1000}}},
-
 
965
                {"$group":{"_id":{"user_id":"$user_id","created":{"$subtract":["$created",{"$mod":["$created",86400000]}]}}}}]
-
 
966
    alluserdates=db.browsinghistories.aggregate(pipeline)['result']
-
 
967
    insertq = "insert ignore into daily_visitors values (%s, %s)"
-
 
968
    conn = getDbConnection()
-
 
969
    try:
-
 
970
        for a in alluserdates:
-
 
971
            cursor = conn.cursor()
-
 
972
            # Execute the SQL command
-
 
973
            # Fetch source id.
-
 
974
            cursor.execute(insertq,(a['_id']['user_id'], utils.fromTimeStamp(int(a['_id']['created']/1000))))
-
 
975
            conn.commit()
-
 
976
    finally:
-
 
977
        conn.close()
957
 
978
 
958
def populateSaholicMonthWiseMap1():
979
def populateSaholicMonthWiseMap1():
959
    global newMonthCutOff
980
    global newMonthCutOff
960
    while(True):
981
    while(True):
961
        
982
        
Line 995... Line 1016...
995
    global order_ids
1016
    global order_ids
996
    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()
1017
    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()
997
    order_ids = list(zip(*allOrders)[0])
1018
    order_ids = list(zip(*allOrders)[0])
998
          
1019
          
999
def main():
1020
def main():
-
 
1021
    populateYesterdayActiveUsers(24)
1000
    populateValidOrders()
1022
    populateValidOrders()
1001
    populateOrderMap()
1023
    populateOrderMap()
1002
    populateWeekWiseMap1()
1024
    populateWeekWiseMap1()
1003
    populateMonthWiseMap1()
1025
    populateMonthWiseMap1()
1004
    populateSaholicOrderMap()
1026
    populateSaholicOrderMap()
Line 1016... Line 1038...
1016
    except:
1038
    except:
1017
        return None
1039
        return None
1018
    return date.strftime('%Y-%m-%d')
1040
    return date.strftime('%Y-%m-%d')
1019
    
1041
    
1020
if __name__ == '__main__':
1042
if __name__ == '__main__':
1021
    main()
-
 
1022
1043
    if not sys.argv[0]:
-
 
1044
        main()
-
 
1045
    else:
-
 
1046
        populateYesterdayActiveUsers(int(sys.argv[0]))
-
 
1047
1023
1048