Subversion Repositories SmartDukaan

Rev

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

Rev Author Line No. Line
14427 amit.gupta 1
'''
2
Created on Mar 11, 2015
3
 
4
@author: amit
5
'''
6
 
14451 amit.gupta 7
from datetime import date, datetime, timedelta
14427 amit.gupta 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
import MySQLdb
13
import smtplib
14440 amit.gupta 14
import traceback
14427 amit.gupta 15
import xlwt
16
 
17
 
18
 
19
DB_HOST = "localhost"
20
DB_USER = "root"
21
DB_PASSWORD = "shop2020"
22
DB_NAME = "dtr"
23
xstr = lambda s: '' if s is None else str(s)
14440 amit.gupta 24
 
14427 amit.gupta 25
def getDbConnection():
14440 amit.gupta 26
    return MySQLdb.connect(DB_HOST, DB_USER, DB_PASSWORD, DB_NAME)
14427 amit.gupta 27
 
28
 
29
ORDERS_QUERY='''
15731 amit.gupta 30
select o.*, u.username from order_view o join users u on u.id=o.user_id %s order by id desc limit %s offset %s
14427 amit.gupta 31
'''
14451 amit.gupta 32
ORDERS_DATE_QUERY = '''
14771 amit.gupta 33
select o.*, dev.imeinumber, dev.versioncode, u.username from order_view o left join (
34
select * from (select ov.id as oid, ov.created ocreated, d.* from order_view ov left join devices d on (ov.user_id= d.user_id) 
35
group by ov.id, d.id having ov.created-d.created>=0 order by ov.created-d.created) dev group by dev.oid
36
) dev on dev.oid = o.id join users u on u.id=o.user_id where o.created between '%s' and '%s' and store_id = %s group by o.id 
14451 amit.gupta 37
'''
17052 amit.gupta 38
 
39
ORDERS_DATE_QUERY_ONE = '''
40
select * from order_view where o.created between '%s' and '%s' and store_id = %s
41
'''
42
 
14468 amit.gupta 43
ORDERS_DATE_QUERY1 = '''
44
select * from orders where created > %s and store_id = %s 
45
'''
14427 amit.gupta 46
 
47
ORDERS_COUNT_QUERY='''
15731 amit.gupta 48
select count(*) from order_view o join users u on u.id=o.user_id %s 
14427 amit.gupta 49
'''
50
 
51
ORDER_HTML_QUERY = '''
52
select rawhtml from orders where id = %s
53
'''
54
 
55
 
14615 amit.gupta 56
 
57
 
15731 amit.gupta 58
def getOrders(page=1, window=50, status=None, user=None, source=None):
14439 amit.gupta 59
    try:
15731 amit.gupta 60
        search = []
14725 amit.gupta 61
        if status is not None:
15731 amit.gupta 62
            search.append("o.status='%s'"%(status))
14725 amit.gupta 63
        if user is not  None:
15731 amit.gupta 64
            search.append("o.user_id=%s"%(user))
65
        if source is not  None:
66
            search.append("o.store_id=%s"%(source))
67
        if len(search) > 0:
68
            search = " where " +  " and ".join(search)
69
        else:
70
            search = " "
14439 amit.gupta 71
        conn = getDbConnection()
72
        if page==None:
73
            page = 1
74
        if window==None:
75
            window = 50
76
        skip = (page-1)*window
77
        # prepare a cursor object using cursor() method
78
        cursor = conn.cursor()
79
        # Execute the SQL command
80
        # Fetch source id.
14725 amit.gupta 81
        cursor.execute(ORDERS_COUNT_QUERY%(search))
14439 amit.gupta 82
        result = cursor.fetchall()
83
        total_count = result[0][0]
84
        pages = total_count/window + (0 if total_count%window==0 else 1)
85
 
14725 amit.gupta 86
        query = ORDERS_QUERY%(search,window,skip)
14439 amit.gupta 87
        cursor.execute(query)
88
        result = cursor.fetchall()
89
        template = "<html><head><style>td,th{border:1px solid;padding:2px}</style></head><div>Total Orders: %s</div><br/><body><table style='font-size:12px;border:1px solid grey;border-spacing:0;cell-spacing:0;border-bottom:1px solid grey;border-bottom:1px solid transparent'>%s</table></body></html>"
90
        tbodyarr = []
14470 amit.gupta 91
        colhead="<tr><th>Id</th><th>User Id</th><th>Username</th><th>Store Id</th><th>Order Url</th><th>Subtag</th><th>Statu</th><th>Created on</th></tr>"
14439 amit.gupta 92
        tbodyarr.append(colhead)
93
        for row in result:
14733 amit.gupta 94
            tbodyarr.append("<tr><td>" + xstr(row[0]) + "</td><td>" + xstr(row[1]) +"</td><td><a href=\"/transactions?user=" + xstr(row[1]) + "\">" + xstr(row[-1]) + "</a></td><td>" + xstr(row[2]) +"</td><td><a target='_blank' href='/rawhtml/" + xstr(row[0]) + "'>" + xstr(row[3])[:130] +"</a></td><td>" + xstr(row[4]) + "</td><td><a href=\"/transactions?status=" + xstr(row[5]) + "\">" + xstr(row[5]) + "</a></td><td>" + row[6].strftime("%Y-%m-%d %H:%M:%S") + "</td></tr>")
14439 amit.gupta 95
 
14440 amit.gupta 96
        return template%(total_count, "".join(tbodyarr))
97
    except:
98
        traceback.print_exc()
14439 amit.gupta 99
    finally:
100
        conn.close()
14427 amit.gupta 101
def getOrderHtml(orderId):
14439 amit.gupta 102
    try:
103
        conn = getDbConnection()
104
        cursor = conn.cursor()
105
        # Execute the SQL command
106
        # Fetch source id.
107
        cursor.execute(ORDER_HTML_QUERY%(orderId))
108
        result = cursor.fetchall()
109
        return result[0][0]
14440 amit.gupta 110
    except:
111
        traceback.print_exc()
14439 amit.gupta 112
    finally:
113
        conn.close()
14615 amit.gupta 114
 
14451 amit.gupta 115
def getOrdersAfterDate(afterDate, storeId):
14460 amit.gupta 116
    try:
117
        conn = getDbConnection()
118
        cursor = conn.cursor()
14602 amit.gupta 119
        afterDate = datetime.strftime(afterDate,"%Y-%m-%d")
120
        beforeDate = datetime.strftime(datetime.now(),"%Y-%m-%d %H")
17052 amit.gupta 121
        cursor.execute(ORDERS_DATE_QUERY_ONE%(afterDate, beforeDate, storeId))
14460 amit.gupta 122
        result = cursor.fetchall()
123
        return result
124
    finally:
125
        conn.close() 
14451 amit.gupta 126
 
14468 amit.gupta 127
def getOrdersAfterDate1(afterDate, storeId):
128
    try:
129
        conn = getDbConnection()
130
        cursor = conn.cursor()
131
        afterDate = datetime.strftime(afterDate,"\'%Y-%m-%d\'")
132
        cursor.execute(ORDERS_DATE_QUERY1%(afterDate, storeId))
133
        result = cursor.fetchall()
134
        return result
135
    finally:
136
        conn.close() 
137
 
14526 amit.gupta 138
def getOrdersByTag(tagName, storeId):
139
    try:
140
        conn = getDbConnection()
141
        cursor = conn.cursor()
142
        query = "select o.* from users u join order_view o on u.id = o.user_id join clicks c on c.user_id = u.id where c.tag = '%s' and o.status='ORDER_CREATED' and o.store_id=%s"
143
        cursor.execute(query%(tagName, storeId))
144
        result = cursor.fetchall()
145
        return result
146
    finally:
14615 amit.gupta 147
        conn.close()
14526 amit.gupta 148
 
14427 amit.gupta 149
def main():
14460 amit.gupta 150
    print getOrdersAfterDate(datetime.now() - timedelta(days=10), 3)
14427 amit.gupta 151
 
14615 amit.gupta 152
def fetchResult(query, *params):
153
    try:
154
        conn = getDbConnection()
155
        cursor = conn.cursor()
156
        cursor.execute(query.format(params))
157
        result = cursor.fetchall()
158
        return result
159
    finally:
160
        conn.close() 
14427 amit.gupta 161
 
162
if __name__ == '__main__':
163
    main()