Subversion Repositories SmartDukaan

Rev

Rev 14771 | Rev 17052 | 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
'''
14468 amit.gupta 38
ORDERS_DATE_QUERY1 = '''
39
select * from orders where created > %s and store_id = %s 
40
'''
14427 amit.gupta 41
 
42
ORDERS_COUNT_QUERY='''
15731 amit.gupta 43
select count(*) from order_view o join users u on u.id=o.user_id %s 
14427 amit.gupta 44
'''
45
 
46
ORDER_HTML_QUERY = '''
47
select rawhtml from orders where id = %s
48
'''
49
 
50
 
14615 amit.gupta 51
 
52
 
15731 amit.gupta 53
def getOrders(page=1, window=50, status=None, user=None, source=None):
14439 amit.gupta 54
    try:
15731 amit.gupta 55
        search = []
14725 amit.gupta 56
        if status is not None:
15731 amit.gupta 57
            search.append("o.status='%s'"%(status))
14725 amit.gupta 58
        if user is not  None:
15731 amit.gupta 59
            search.append("o.user_id=%s"%(user))
60
        if source is not  None:
61
            search.append("o.store_id=%s"%(source))
62
        if len(search) > 0:
63
            search = " where " +  " and ".join(search)
64
        else:
65
            search = " "
14439 amit.gupta 66
        conn = getDbConnection()
67
        if page==None:
68
            page = 1
69
        if window==None:
70
            window = 50
71
        skip = (page-1)*window
72
        # prepare a cursor object using cursor() method
73
        cursor = conn.cursor()
74
        # Execute the SQL command
75
        # Fetch source id.
14725 amit.gupta 76
        cursor.execute(ORDERS_COUNT_QUERY%(search))
14439 amit.gupta 77
        result = cursor.fetchall()
78
        total_count = result[0][0]
79
        pages = total_count/window + (0 if total_count%window==0 else 1)
80
 
14725 amit.gupta 81
        query = ORDERS_QUERY%(search,window,skip)
14439 amit.gupta 82
        cursor.execute(query)
83
        result = cursor.fetchall()
84
        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>"
85
        tbodyarr = []
14470 amit.gupta 86
        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 87
        tbodyarr.append(colhead)
88
        for row in result:
14733 amit.gupta 89
            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 90
 
14440 amit.gupta 91
        return template%(total_count, "".join(tbodyarr))
92
    except:
93
        traceback.print_exc()
14439 amit.gupta 94
    finally:
95
        conn.close()
14427 amit.gupta 96
def getOrderHtml(orderId):
14439 amit.gupta 97
    try:
98
        conn = getDbConnection()
99
        cursor = conn.cursor()
100
        # Execute the SQL command
101
        # Fetch source id.
102
        cursor.execute(ORDER_HTML_QUERY%(orderId))
103
        result = cursor.fetchall()
104
        return result[0][0]
14440 amit.gupta 105
    except:
106
        traceback.print_exc()
14439 amit.gupta 107
    finally:
108
        conn.close()
14615 amit.gupta 109
 
14451 amit.gupta 110
def getOrdersAfterDate(afterDate, storeId):
14460 amit.gupta 111
    try:
112
        conn = getDbConnection()
113
        cursor = conn.cursor()
14602 amit.gupta 114
        afterDate = datetime.strftime(afterDate,"%Y-%m-%d")
115
        beforeDate = datetime.strftime(datetime.now(),"%Y-%m-%d %H")
14513 amit.gupta 116
        cursor.execute(ORDERS_DATE_QUERY%(afterDate, beforeDate, storeId))
14460 amit.gupta 117
        result = cursor.fetchall()
118
        return result
119
    finally:
120
        conn.close() 
14451 amit.gupta 121
 
14468 amit.gupta 122
def getOrdersAfterDate1(afterDate, storeId):
123
    try:
124
        conn = getDbConnection()
125
        cursor = conn.cursor()
126
        afterDate = datetime.strftime(afterDate,"\'%Y-%m-%d\'")
127
        cursor.execute(ORDERS_DATE_QUERY1%(afterDate, storeId))
128
        result = cursor.fetchall()
129
        return result
130
    finally:
131
        conn.close() 
132
 
14526 amit.gupta 133
def getOrdersByTag(tagName, storeId):
134
    try:
135
        conn = getDbConnection()
136
        cursor = conn.cursor()
137
        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"
138
        cursor.execute(query%(tagName, storeId))
139
        result = cursor.fetchall()
140
        return result
141
    finally:
14615 amit.gupta 142
        conn.close()
14526 amit.gupta 143
 
14427 amit.gupta 144
def main():
14460 amit.gupta 145
    print getOrdersAfterDate(datetime.now() - timedelta(days=10), 3)
14427 amit.gupta 146
 
14615 amit.gupta 147
def fetchResult(query, *params):
148
    try:
149
        conn = getDbConnection()
150
        cursor = conn.cursor()
151
        cursor.execute(query.format(params))
152
        result = cursor.fetchall()
153
        return result
154
    finally:
155
        conn.close() 
14427 amit.gupta 156
 
157
if __name__ == '__main__':
158
    main()