| Line 1... |
Line -... |
| 1 |
from bson import json_util
|
- |
|
| 2 |
from bson.json_util import dumps
|
1 |
from bson.json_util import dumps
|
| 3 |
from datetime import datetime, timedelta
|
2 |
from datetime import datetime, timedelta
|
| 4 |
from pyshorteners.shorteners import Shortener
|
3 |
from pyshorteners.shorteners import Shortener
|
| 5 |
from dtr import main
|
4 |
from dtr import main
|
| 6 |
from dtr.config import PythonPropertyReader
|
5 |
from dtr.config import PythonPropertyReader
|
| 7 |
from dtr.storage import Mongo
|
6 |
from dtr.storage import Mongo
|
| 8 |
from dtr.storage.DataService import Retailers, Users, CallHistory, RetryConfig, \
|
7 |
from dtr.storage.DataService import Retailers, Users, CallHistory, RetryConfig, \
|
| 9 |
RetailerLinks, Activation_Codes, Agents, Agent_Roles, AgentLoginTimings, \
|
8 |
RetailerLinks, Activation_Codes, Agents, Agent_Roles, AgentLoginTimings, \
|
| 10 |
FetchDataHistory, RetailerContacts, Orders, OnboardedRetailerChecklists,\
|
9 |
FetchDataHistory, RetailerContacts, Orders, OnboardedRetailerChecklists,\
|
| 11 |
RetailerAddresses, Pincodeavailability, app_offers, appmasters, user_app_cashbacks, user_app_installs,\
|
10 |
RetailerAddresses, Pincodeavailability, app_offers, appmasters, user_app_cashbacks, user_app_installs,\
|
| 12 |
Postoffices, UserMasterData
|
11 |
Postoffices, UserCrmCallingData
|
| 13 |
from dtr.storage.Mongo import get_mongo_connection
|
12 |
from dtr.storage.Mongo import get_mongo_connection
|
| 14 |
from dtr.storage.Mysql import fetchResult
|
13 |
from dtr.storage.Mysql import fetchResult
|
| 15 |
from dtr.utils import FetchLivePrices, DealSheet as X_DealSheet, \
|
14 |
from dtr.utils import FetchLivePrices, DealSheet as X_DealSheet, \
|
| 16 |
UserSpecificDeals
|
15 |
UserSpecificDeals
|
| 17 |
from dtr.utils.utils import getLogger,encryptMessage,decryptMessage,\
|
16 |
from dtr.utils.utils import getLogger,encryptMessage,decryptMessage,\
|
| Line 30... |
Line 29... |
| 30 |
import urllib2
|
29 |
import urllib2
|
| 31 |
import uuid
|
30 |
import uuid
|
| 32 |
import gdshortener
|
31 |
import gdshortener
|
| 33 |
from dtr.dao import AppOfferObj, UserAppBatchDrillDown, UserAppBatchDateDrillDown
|
32 |
from dtr.dao import AppOfferObj, UserAppBatchDrillDown, UserAppBatchDateDrillDown
|
| 34 |
import base64
|
33 |
import base64
|
| - |
|
34 |
import MySQLdb
|
| 35 |
|
35 |
|
| 36 |
alphalist = list(string.uppercase)
|
36 |
alphalist = list(string.uppercase)
|
| 37 |
alphalist.remove('O')
|
37 |
alphalist.remove('O')
|
| 38 |
numList = ['1','2','3','4','5','6','7','8','9']
|
38 |
numList = ['1','2','3','4','5','6','7','8','9']
|
| 39 |
codesys = [alphalist, alphalist, numList, numList, numList]
|
39 |
codesys = [alphalist, alphalist, numList, numList, numList]
|
| Line 1622... |
Line 1622... |
| 1622 |
class GetUserCrmApplication:
|
1622 |
class GetUserCrmApplication:
|
| 1623 |
|
1623 |
|
| 1624 |
def on_get(self,req,resp):
|
1624 |
def on_get(self,req,resp):
|
| 1625 |
project_name = req.get_param("project_name")
|
1625 |
project_name = req.get_param("project_name")
|
| 1626 |
if project_name == 'accessories':
|
1626 |
if project_name == 'accessories':
|
| - |
|
1627 |
project_id=1
|
| 1627 |
user = session.query(UserMasterData).filter_by(project_id=1).filter(or_(UserMasterData.next_call_time<=datetime.now(),UserMasterData.status=='new')).filter(UserMasterData.pincode_servicable==True).order_by(UserMasterData.next_call_time).order_by(UserMasterData.id).with_lockmode("update").first()
|
1628 |
user = session.query(UserCrmCallingData).filter_by(project_id=1).filter(or_(UserCrmCallingData.next_call_time<=datetime.now(),UserCrmCallingData.status=='new')).filter(UserCrmCallingData.pincode_servicable==True).filter(UserCrmCallingData.user_available==0).filter(UserCrmCallingData.contact1!=None).order_by(UserCrmCallingData.next_call_time).order_by(UserCrmCallingData.id).with_lockmode("update").first()
|
| 1628 |
#.filter(UserMasterData.modified<=(datetime.now()-timedelta(days=3)))
|
1629 |
#.filter(UserMasterData.modified<=(datetime.now()-timedelta(days=3)))
|
| 1629 |
if user is None:
|
1630 |
if user is None:
|
| - |
|
1631 |
insertUserCrmData(project_id)
|
| 1630 |
fetchUserMasterData()
|
1632 |
user = session.query(UserCrmCallingData).filter_by(project_id=1).filter(or_(UserCrmCallingData.next_call_time<=datetime.now(),UserCrmCallingData.status=='new')).filter(UserCrmCallingData.pincode_servicable==True).filter(UserCrmCallingData.user_available==0).filter(UserCrmCallingData.contact1!=None).order_by(UserCrmCallingData.next_call_time).order_by(UserCrmCallingData.id).with_lockmode("update").first()
|
| - |
|
1633 |
user.status = 'assigned'
|
| - |
|
1634 |
user.agent_id = req.get_param("agent_id")
|
| - |
|
1635 |
user.user_available= 1
|
| - |
|
1636 |
user.counter=1
|
| - |
|
1637 |
session.commit()
|
| 1631 |
else:
|
1638 |
session.close()
|
| 1632 |
resp.body = json.dumps(todict(getUserObject(user)), encoding='utf-8')
|
1639 |
resp.body = json.dumps(todict(getUserObject(user)), encoding='utf-8')
|
| 1633 |
|
1640 |
|
| 1634 |
def fetchUserMasterData():
|
1641 |
def insertUserCrmData(project_id):
|
| 1635 |
#First check from the table whether data is present or not UserMasterData
|
- |
|
| 1636 |
#If Data is empty then fetch the details using getCartDetailsUser
|
1642 |
if project_id==1:
|
| 1637 |
getCartDetailsUser()
|
1643 |
getCartDetailsUser()
|
| 1638 |
|
1644 |
|
| 1639 |
def getCartDetailsUser():
|
1645 |
def getCartDetailsUser():
|
| 1640 |
userList=[]
|
1646 |
userList=[]
|
| 1641 |
orderUserList=[]
|
1647 |
orderUserList=[]
|
| 1642 |
userMasterMap={}
|
1648 |
userMasterMap={}
|
| Line 1676... |
Line 1682... |
| 1676 |
userMasterMap[i.get('user_id')]=i.get('created')
|
1682 |
userMasterMap[i.get('user_id')]=i.get('created')
|
| 1677 |
else:
|
1683 |
else:
|
| 1678 |
userMasterMap[i.get('user_id')]=i.get('created')
|
1684 |
userMasterMap[i.get('user_id')]=i.get('created')
|
| 1679 |
|
1685 |
|
| 1680 |
d_sorted = sorted(zip(userMasterMap.values(), userMasterMap.keys()))
|
1686 |
d_sorted = sorted(zip(userMasterMap.values(), userMasterMap.keys()))
|
| 1681 |
|
1687 |
counter=0
|
| 1682 |
for i in range(0,20):
|
1688 |
for i in d_sorted:
|
| 1683 |
userId=d_sorted[i][1]
|
1689 |
print counter
|
| 1684 |
userMasterData = UserMasterData()
|
- |
|
| 1685 |
userMasterData.user_id = userId
|
- |
|
| 1686 |
userMasterData.project_id = 1
|
- |
|
| 1687 |
userMasterData.contact1 = getUserContactDetails(userId)
|
- |
|
| 1688 |
userMasterData.counter = 0
|
1690 |
if counter==20:
|
| 1689 |
userMasterData.created = datetime.now()
|
- |
|
| 1690 |
userMasterData.modified = datetime.now()
|
- |
|
| 1691 |
userMasterData.status = 'new'
|
- |
|
| 1692 |
userMasterData.pincode_servicable = checkPincodeServicable(userId)
|
- |
|
| 1693 |
session.commit()
|
1691 |
break
|
| 1694 |
session.close()
|
- |
|
| 1695 |
|
- |
|
| 1696 |
def getUserContactDetails(userId):
|
- |
|
| 1697 |
r = session.query(Users.mobile_number).filter_by(id=userId).first()
|
1692 |
userCheck = session.query(UserCrmCallingData).filter_by(user_id=i[1]).filter(UserCrmCallingData.user_available==1).first()
|
| 1698 |
if r is None:
|
1693 |
print userCheck
|
| 1699 |
return None
|
1694 |
if userCheck is None:
|
| 1700 |
else:
|
- |
|
| 1701 |
return r[0]
|
1695 |
counter=counter+1
|
| 1702 |
|
- |
|
| 1703 |
def checkPincodeServicable(userId):
|
1696 |
print i[0],i[1],counter
|
| 1704 |
checkAddressUser = "select distinct pincode from all_user_addresses where user_id= (%s)"
|
- |
|
| 1705 |
result = fetchResult(checkAddressUser,userId)
|
- |
|
| 1706 |
if len(result)==0:
|
- |
|
| 1707 |
return True
|
1697 |
userId=i[1]
|
| 1708 |
else:
|
- |
|
| 1709 |
myquery = "select count(*) from (select distinct pincode from all_user_addresses where user_id= (%s))a join pincodeavailability p on a.pincode=p.code"
|
- |
|
| 1710 |
result = fetchResult(myquery,userId)
|
1698 |
userMasterData = UserCrmCallingData()
|
| 1711 |
if result[0][0]==0:
|
1699 |
userMasterData.user_id = userId
|
| 1712 |
return False
|
1700 |
userMasterData.name =getUsername(userId)
|
| 1713 |
else:
|
- |
|
| 1714 |
return True
|
1701 |
userMasterData.project_id = 1
|
| 1715 |
|
- |
|
| 1716 |
def getUserObject(user):
|
- |
|
| 1717 |
obj = Mock()
|
- |
|
| 1718 |
obj.user_id = user.user_id
|
1702 |
userMasterData.user_available=0
|
| 1719 |
result = fetchResult("select * from useractive where user_id=%d"%(user.user_id))
|
1703 |
userMasterData.contact1 = getUserContactDetails(userId)
|
| 1720 |
if result == ():
|
- |
|
| 1721 |
obj.last_active = None
|
1704 |
userMasterData.counter = 0
|
| 1722 |
else:
|
- |
|
| 1723 |
obj.last_active =datetime.strftime(result[0][1], '%d/%m/%Y %H:%M:%S')
|
1705 |
userMasterData.created = datetime.now()
|
| 1724 |
|
- |
|
| 1725 |
obj.contact = user.contact1
|
1706 |
userMasterData.modified = datetime.now()
|
| 1726 |
obj.timeStamp=None
|
1707 |
userMasterData.status = 'new'
|
| 1727 |
|
- |
|
| 1728 |
details = get_mongo_connection().Dtr.merchantOrder.find({"userId":user.user_id}).sort([("createdOn",-1)]).limit(1)
|
1708 |
userMasterData.pincode_servicable = checkPincodeServicable(userId)
|
| 1729 |
for detail in details:
|
1709 |
session.commit()
|
| 1730 |
obj.timeStamp= detail.get('createdOn')
|
1710 |
session.close()
|
| 1731 |
|
- |
|
| 1732 |
obj.totalOrders = get_mongo_connection().Dtr.merchantOrder.find({"userId":user.user_id}).count()
|
- |
|
| 1733 |
|
- |
|
| 1734 |
return obj
|
- |
|
| 1735 |
|
1711 |
|
| 1736 |
def getCartTabsUser():
|
1712 |
def getCartTabsUser():
|
| 1737 |
userList=[]
|
1713 |
userList=[]
|
| 1738 |
orderUserList=[]
|
1714 |
orderUserList=[]
|
| 1739 |
userMasterMap={}
|
1715 |
userMasterMap={}
|
| Line 1775... |
Line 1751... |
| 1775 |
userMasterMap[i.get('user_id')]=i.get('created')
|
1751 |
userMasterMap[i.get('user_id')]=i.get('created')
|
| 1776 |
else:
|
1752 |
else:
|
| 1777 |
userMasterMap[i.get('user_id')]=i.get('created')
|
1753 |
userMasterMap[i.get('user_id')]=i.get('created')
|
| 1778 |
|
1754 |
|
| 1779 |
d_sorted = sorted(zip(userMasterMap.values(), userMasterMap.keys()))
|
1755 |
d_sorted = sorted(zip(userMasterMap.values(), userMasterMap.keys()))
|
| - |
|
1756 |
|
| - |
|
1757 |
def getUserContactDetails(userId):
|
| - |
|
1758 |
r = session.query(Users.mobile_number).filter_by(id=userId).first()
|
| - |
|
1759 |
if r is None:
|
| - |
|
1760 |
return None
|
| - |
|
1761 |
else:
|
| - |
|
1762 |
return r[0]
|
| - |
|
1763 |
|
| - |
|
1764 |
def getUsername(userId):
|
| - |
|
1765 |
r = session.query(Users.first_name).filter_by(id=userId).first()
|
| - |
|
1766 |
if r is None:
|
| - |
|
1767 |
return None
|
| - |
|
1768 |
else:
|
| - |
|
1769 |
return r[0]
|
| - |
|
1770 |
|
| - |
|
1771 |
def checkPincodeServicable(userId):
|
| - |
|
1772 |
checkAddressUser = "select distinct pincode from all_user_addresses where user_id= (%s)"
|
| - |
|
1773 |
result = fetchResult(checkAddressUser,userId)
|
| - |
|
1774 |
if len(result)==0:
|
| - |
|
1775 |
return True
|
| - |
|
1776 |
else:
|
| - |
|
1777 |
myquery = "select count(*) from (select distinct pincode from all_user_addresses where user_id= (%s))a join pincodeavailability p on a.pincode=p.code"
|
| - |
|
1778 |
result = fetchResult(myquery,userId)
|
| - |
|
1779 |
if result[0][0]==0:
|
| - |
|
1780 |
return False
|
| - |
|
1781 |
else:
|
| - |
|
1782 |
return True
|
| - |
|
1783 |
|
| - |
|
1784 |
def getUserObject(user):
|
| - |
|
1785 |
obj = Mock()
|
| - |
|
1786 |
obj.user_id = user.user_id
|
| - |
|
1787 |
result = fetchResult("select * from useractive where user_id=%d"%(user.user_id))
|
| - |
|
1788 |
if result == ():
|
| - |
|
1789 |
obj.last_active = None
|
| - |
|
1790 |
else:
|
| - |
|
1791 |
obj.last_active =datetime.strftime(result[0][1], '%d/%m/%Y %H:%M:%S')
|
| - |
|
1792 |
|
| - |
|
1793 |
obj.contact = user.contact1
|
| - |
|
1794 |
obj.timeStamp=None
|
| 1780 |
|
1795 |
|
| - |
|
1796 |
# details = get_mongo_connection().Dtr.merchantOrder.find({"userId":user.user_id}).sort([("createdOn",-1)]).limit(1)
|
| - |
|
1797 |
# for detail in details:
|
| - |
|
1798 |
# obj.timeStamp= detail.get('createdOn')
|
| - |
|
1799 |
|
| - |
|
1800 |
details = session.query(Orders).filter_by(user_id = user.user_id).filter(~Orders.status.in_(['ORDER_NOT_CREATED_KNOWN', 'ORDER_ALREADY_CREATED_IGNORED'])).order_by(desc(Orders.created)).first()
|
| - |
|
1801 |
if details is None:
|
| - |
|
1802 |
obj.timeStamp =None
|
| - |
|
1803 |
else:
|
| - |
|
1804 |
print details.created
|
| - |
|
1805 |
obj.totalOrders = session.query(Orders).filter_by(user_id = user.user_id).filter(~Orders.status.in_(['ORDER_NOT_CREATED_KNOWN', 'ORDER_ALREADY_CREATED_IGNORED'])).count()
|
| - |
|
1806 |
|
| - |
|
1807 |
cartResult = fetchResult("select * from user_accounts where account_type ='cartId' and user_id=%d"%(user.user_id))
|
| - |
|
1808 |
if cartResult == ():
|
| - |
|
1809 |
obj.obj.lastActiveCartTime = None
|
| - |
|
1810 |
else:
|
| - |
|
1811 |
conn = MySQLdb.connect("192.168.190.114", "root","shop2020", "user")
|
| - |
|
1812 |
cursor = conn.cursor()
|
| - |
|
1813 |
cursor.execute("select updated_on from cart where id=%s",(cartResult[0][1]))
|
| - |
|
1814 |
result = cursor.fetchall()
|
| - |
|
1815 |
if result ==():
|
| - |
|
1816 |
obj.obj.lastActiveCartTime = None
|
| - |
|
1817 |
else:
|
| - |
|
1818 |
print result
|
| - |
|
1819 |
obj.lastActiveCartTime =datetime.strftime(result[0][1], '%d/%m/%Y %H:%M:%S')
|
| - |
|
1820 |
conn.close()
|
| - |
|
1821 |
return obj
|
| - |
|
1822 |
|
| 1781 |
def main():
|
1823 |
def main():
|
| 1782 |
#tagActivatedReatilers()
|
1824 |
#tagActivatedReatilers()
|
| 1783 |
#a = RetailerDetail()
|
1825 |
#a = RetailerDetail()
|
| 1784 |
#retailer = a.getNotActiveRetailer()
|
1826 |
#retailer = a.getNotActiveRetailer()
|
| 1785 |
#otherContacts = [r for r, in session.query(RetailerContacts.mobile_number).filter_by(retailer_id=retailer.id).order_by(RetailerContacts.contact_type).all()]
|
1827 |
#otherContacts = [r for r, in session.query(RetailerContacts.mobile_number).filter_by(retailer_id=retailer.id).order_by(RetailerContacts.contact_type).all()]
|
| 1786 |
#print json.dumps(todict(getRetailerObj(retailer, otherContacts, 'fresh')), encoding='utf-8')
|
1828 |
#print json.dumps(todict(getRetailerObj(retailer, otherContacts, 'fresh')), encoding='utf-8')
|
| 1787 |
#print make_tiny("AA")
|
1829 |
#print make_tiny("AA")
|
| 1788 |
a = GetUserCrmApplication()
|
1830 |
a = GetUserCrmApplication()
|
| 1789 |
a.getUser('accessories')
|
1831 |
a.getUser('accessories',2)
|
| 1790 |
|
1832 |
|
| 1791 |
if __name__ == '__main__':
|
1833 |
if __name__ == '__main__':
|
| 1792 |
main()
|
1834 |
main()
|
| 1793 |
|
1835 |
|
| 1794 |
|
1836 |
|