| Line 4... |
Line 4... |
| 4 |
from dtr import main
|
4 |
from dtr import main
|
| 5 |
from dtr.config import PythonPropertyReader
|
5 |
from dtr.config import PythonPropertyReader
|
| 6 |
from dtr.storage import Mongo
|
6 |
from dtr.storage import Mongo
|
| 7 |
from dtr.storage.DataService import Retailers, Users, CallHistory, RetryConfig, \
|
7 |
from dtr.storage.DataService import Retailers, Users, CallHistory, RetryConfig, \
|
| 8 |
RetailerLinks, Activation_Codes, Agents, Agent_Roles, AgentLoginTimings, \
|
8 |
RetailerLinks, Activation_Codes, Agents, Agent_Roles, AgentLoginTimings, \
|
| 9 |
FetchDataHistory, RetailerContacts, Orders
|
9 |
FetchDataHistory, RetailerContacts, Orders, OnboardedRetailerChecklists
|
| 10 |
from dtr.storage.Mongo import get_mongo_connection
|
10 |
from dtr.storage.Mongo import get_mongo_connection
|
| 11 |
from dtr.storage.Mysql import fetchResult
|
11 |
from dtr.storage.Mysql import fetchResult
|
| 12 |
from dtr.utils import FetchLivePrices, DealSheet as X_DealSheet, \
|
12 |
from dtr.utils import FetchLivePrices, DealSheet as X_DealSheet, \
|
| 13 |
UserSpecificDeals
|
13 |
UserSpecificDeals
|
| 14 |
from dtr.utils.utils import getLogger
|
14 |
from dtr.utils.utils import getLogger
|
| Line 28... |
Line 28... |
| 28 |
alphalist = list(string.uppercase)
|
28 |
alphalist = list(string.uppercase)
|
| 29 |
alphalist.remove('O')
|
29 |
alphalist.remove('O')
|
| 30 |
numList = ['1','2','3','4','5','6','7','8','9']
|
30 |
numList = ['1','2','3','4','5','6','7','8','9']
|
| 31 |
codesys = [alphalist, alphalist, numList, numList, numList]
|
31 |
codesys = [alphalist, alphalist, numList, numList, numList]
|
| 32 |
CONTACT_PRIORITY = ['sms', 'called', 'ringing']
|
32 |
CONTACT_PRIORITY = ['sms', 'called', 'ringing']
|
| 33 |
RETRY_MAP = {'fresh':'retry', 'folluwpup':'fretry', 'onboarding':'oretry'}
|
33 |
RETRY_MAP = {'fresh':'retry', 'followup':'fretry', 'onboarding':'oretry'}
|
| 34 |
ASSIGN_MAP = {'retry':'assigned', 'fretry':'fassigned', 'oretry':'oassigned'}
|
34 |
ASSIGN_MAP = {'retry':'assigned', 'fretry':'fassigned', 'oretry':'oassigned'}
|
| 35 |
|
35 |
|
| 36 |
def getNextCode(codesys, code=None):
|
36 |
def getNextCode(codesys, code=None):
|
| 37 |
if code is None:
|
37 |
if code is None:
|
| 38 |
code = []
|
38 |
code = []
|
| Line 675... |
Line 675... |
| 675 |
self.jsonReq = jsonReq
|
675 |
self.jsonReq = jsonReq
|
| 676 |
invalidNumber = self.invalidNumber
|
676 |
invalidNumber = self.invalidNumber
|
| 677 |
callLater = self.callLater
|
677 |
callLater = self.callLater
|
| 678 |
alreadyUser = self.alReadyUser
|
678 |
alreadyUser = self.alReadyUser
|
| 679 |
verifiedLinkSent = self.verifiedLinkSent
|
679 |
verifiedLinkSent = self.verifiedLinkSent
|
| - |
|
680 |
onboarded = self.onboarded
|
| 680 |
self.address = jsonReq.get('address')
|
681 |
self.address = jsonReq.get('address')
|
| 681 |
self.retailerId = int(jsonReq.get('retailerid'))
|
682 |
self.retailerId = int(jsonReq.get('retailerid'))
|
| 682 |
self.smsNumber = jsonReq.get('smsnumber')
|
683 |
self.smsNumber = jsonReq.get('smsnumber')
|
| 683 |
try:
|
684 |
try:
|
| 684 |
self.retailer = session.query(Retailers).filter_by(id=self.retailerId).first()
|
685 |
self.retailer = session.query(Retailers).filter_by(id=self.retailerId).first()
|
| Line 696... |
Line 697... |
| 696 |
lgr.info(self.callHistory.disposition_comments)
|
697 |
lgr.info(self.callHistory.disposition_comments)
|
| 697 |
self.callHistory.call_time = datetime.strptime(jsonReq.get("calltime"), '%d/%m/%Y %H:%M:%S')
|
698 |
self.callHistory.call_time = datetime.strptime(jsonReq.get("calltime"), '%d/%m/%Y %H:%M:%S')
|
| 698 |
self.callHistory.mobile_number = jsonReq.get('number')
|
699 |
self.callHistory.mobile_number = jsonReq.get('number')
|
| 699 |
self.callHistory.sms_verified = int(jsonReq.get("verified"))
|
700 |
self.callHistory.sms_verified = int(jsonReq.get("verified"))
|
| 700 |
lastFetchData = session.query(FetchDataHistory).filter_by(agent_id=self.agentId).order_by(FetchDataHistory.id.desc()).first()
|
701 |
lastFetchData = session.query(FetchDataHistory).filter_by(agent_id=self.agentId).order_by(FetchDataHistory.id.desc()).first()
|
| - |
|
702 |
if self.callDisposition == 'onboarded':
|
| - |
|
703 |
self.checkList = jsonReq.get('checklist')
|
| - |
|
704 |
else:
|
| - |
|
705 |
|
| 701 |
if lastFetchData is None:
|
706 |
if lastFetchData is None:
|
| 702 |
raise
|
707 |
raise
|
| 703 |
self.callHistory.last_fetch_time= lastFetchData.created
|
708 |
self.callHistory.last_fetch_time= lastFetchData.created
|
| 704 |
|
709 |
|
| 705 |
dispositionMap = { 'call_later':callLater,
|
710 |
dispositionMap = { 'call_later':callLater,
|
| Line 713... |
Line 718... |
| 713 |
'retailer_not_interested':invalidNumber,
|
718 |
'retailer_not_interested':invalidNumber,
|
| 714 |
'recharge_retailer':invalidNumber,
|
719 |
'recharge_retailer':invalidNumber,
|
| 715 |
'accessory_retailer':invalidNumber,
|
720 |
'accessory_retailer':invalidNumber,
|
| 716 |
'service_center_retailer':invalidNumber,
|
721 |
'service_center_retailer':invalidNumber,
|
| 717 |
'alreadyuser':alreadyUser,
|
722 |
'alreadyuser':alreadyUser,
|
| 718 |
'verified_link_sent':verifiedLinkSent
|
723 |
'verified_link_sent':verifiedLinkSent,
|
| - |
|
724 |
'onboarded':onboarded
|
| 719 |
}
|
725 |
}
|
| 720 |
returned = dispositionMap[jsonReq.get('calldispositiontype')]()
|
726 |
returned = dispositionMap[jsonReq.get('calldispositiontype')]()
|
| 721 |
finally:
|
727 |
finally:
|
| 722 |
session.close()
|
728 |
session.close()
|
| 723 |
|
729 |
|
| Line 765... |
Line 771... |
| 765 |
newCode=lastLink.code
|
771 |
newCode=lastLink.code
|
| 766 |
return getNextCode(codesys, newCode)
|
772 |
return getNextCode(codesys, newCode)
|
| 767 |
|
773 |
|
| 768 |
|
774 |
|
| 769 |
def callLater(self,):
|
775 |
def callLater(self,):
|
| 770 |
self.retailer.status = 'retry' if self.callType == 'fresh' else 'fretry'
|
776 |
self.retailer.status = RETRY_MAP.get(self.callType)
|
| 771 |
self.retailer.call_priority = None
|
777 |
self.retailer.call_priority = None
|
| 772 |
if self.callDisposition == 'call_later':
|
778 |
if self.callDisposition == 'call_later':
|
| 773 |
if self.callHistory.disposition_description is not None:
|
779 |
if self.callHistory.disposition_description is not None:
|
| 774 |
self.retailer.call_priority = 'user_initiated'
|
780 |
self.retailer.call_priority = 'user_initiated'
|
| 775 |
self.retailer.next_call_time = datetime.strptime(self.callHistory.disposition_description, '%d/%m/%Y %H:%M:%S')
|
781 |
self.retailer.next_call_time = datetime.strptime(self.callHistory.disposition_description, '%d/%m/%Y %H:%M:%S')
|
| Line 821... |
Line 827... |
| 821 |
self.retailer.next_call_time = self.callHistory.call_time + timedelta(days=7)
|
827 |
self.retailer.next_call_time = self.callHistory.call_time + timedelta(days=7)
|
| 822 |
self.callHistory.disposition_description = 'App link sent via' + self.callHistory.disposition_description + '. Followup again on ' + datetime.strftime(self.retailer.next_call_time, '%d/%m/%Y %H:%M:%S')
|
828 |
self.callHistory.disposition_description = 'App link sent via' + self.callHistory.disposition_description + '. Followup again on ' + datetime.strftime(self.retailer.next_call_time, '%d/%m/%Y %H:%M:%S')
|
| 823 |
addContactToRetailer(self.agentId, self.retailerId, self.smsNumber, self.callType, 'sms')
|
829 |
addContactToRetailer(self.agentId, self.retailerId, self.smsNumber, self.callType, 'sms')
|
| 824 |
session.commit()
|
830 |
session.commit()
|
| 825 |
return True
|
831 |
return True
|
| - |
|
832 |
def onboarded(self,):
|
| - |
|
833 |
self.retailer.status = self.callDisposition
|
| - |
|
834 |
checkList = OnboardedRetailerChecklists()
|
| - |
|
835 |
checkList.contact_us = self.checkList.get('contactus')
|
| - |
|
836 |
checkList.doa_return_policy = self.checkList.get('daoreturnpolicy')
|
| - |
|
837 |
checkList.number_verification = self.checkList.get('numberverification')
|
| - |
|
838 |
checkList.payment_option = self.checkList.get('paymentoption')
|
| - |
|
839 |
checkList.preferences = self.checkList.get('preferences')
|
| - |
|
840 |
checkList.product_info = self.checkList.get('productinfo')
|
| - |
|
841 |
checkList.retailer_id = self.retailerId
|
| - |
|
842 |
session.commit()
|
| - |
|
843 |
return True
|
| - |
|
844 |
|
| - |
|
845 |
|
| 826 |
def isActivated(retailerId):
|
846 |
def isActivated(retailerId):
|
| 827 |
retailerLink = session.query(RetailerLinks).filter_by(retailer_id=retailerId).first()
|
847 |
retailerLink = session.query(RetailerLinks).filter_by(retailer_id=retailerId).first()
|
| 828 |
user = session.query(Users).filter_by(referrer=retailerLink.code).first()
|
848 |
user = session.query(Users).filter_by(referrer=retailerLink.code).first()
|
| 829 |
if user is None:
|
849 |
if user is None:
|
| 830 |
mobileNumbers = list(session.query(RetailerContacts.mobile_number).filter_by(retailer_id=retailerId).all())
|
850 |
mobileNumbers = list(session.query(RetailerContacts.mobile_number).filter_by(retailer_id=retailerId).all())
|