| Line 6... |
Line 6... |
| 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
|
8 |
RetailerLinks, Activation_Codes
|
| 9 |
from dtr.utils import FetchLivePrices, DealSheet as X_DealSheet, \
|
9 |
from dtr.utils import FetchLivePrices, DealSheet as X_DealSheet, \
|
| 10 |
UserSpecificDeals
|
10 |
UserSpecificDeals
|
| - |
|
11 |
from dtr.utils.utils import getLogger
|
| 11 |
from elixir import *
|
12 |
from elixir import *
|
| 12 |
from sqlalchemy.sql.expression import or_
|
13 |
from sqlalchemy.sql.expression import or_
|
| 13 |
from urllib import urlencode
|
14 |
from urllib import urlencode
|
| 14 |
import contextlib
|
15 |
import contextlib
|
| 15 |
import falcon
|
16 |
import falcon
|
| Line 19... |
Line 20... |
| 19 |
import urllib2
|
20 |
import urllib2
|
| 20 |
import uuid
|
21 |
import uuid
|
| 21 |
global RETAILER_DETAIL_CALL_COUNTER
|
22 |
global RETAILER_DETAIL_CALL_COUNTER
|
| 22 |
RETAILER_DETAIL_CALL_COUNTER = 0
|
23 |
RETAILER_DETAIL_CALL_COUNTER = 0
|
| 23 |
|
24 |
|
| - |
|
25 |
lgr = getLogger('/var/log/retailer-acquisition-api.log')
|
| 24 |
DEALER_RETRY_FACTOR = int(PythonPropertyReader.getConfig('DEALER_RETRY_FACTOR'))
|
26 |
DEALER_RETRY_FACTOR = int(PythonPropertyReader.getConfig('DEALER_RETRY_FACTOR'))
|
| 25 |
class CategoryDiscountInfo(object):
|
27 |
class CategoryDiscountInfo(object):
|
| 26 |
|
28 |
|
| 27 |
def on_get(self, req, resp):
|
29 |
def on_get(self, req, resp):
|
| 28 |
|
30 |
|
| Line 500... |
Line 502... |
| 500 |
retailer = None
|
502 |
retailer = None
|
| 501 |
status = 'fretry' if self.callType == 'followup' else 'retry'
|
503 |
status = 'fretry' if self.callType == 'followup' else 'retry'
|
| 502 |
try:
|
504 |
try:
|
| 503 |
retailer = session.query(Retailers).filter_by(status=status).filter(Retailers.next_call_time<=datetime.now()).order_by(Retailers.call_priority).order_by(Retailers.next_call_time).with_lockmode("update").first()
|
505 |
retailer = session.query(Retailers).filter_by(status=status).filter(Retailers.next_call_time<=datetime.now()).order_by(Retailers.call_priority).order_by(Retailers.next_call_time).with_lockmode("update").first()
|
| 504 |
if retailer is not None:
|
506 |
if retailer is not None:
|
| 505 |
print "getRetryRetailer", retailer.id
|
507 |
lgr.info( "getRetryRetailer " + str(retailer.id))
|
| 506 |
else:
|
508 |
else:
|
| 507 |
if failback:
|
509 |
if failback:
|
| 508 |
retailer = self.getNewRetailer(False)
|
510 |
retailer = self.getNewRetailer(False)
|
| 509 |
return retailer
|
511 |
return retailer
|
| 510 |
if status=='retry':
|
512 |
if status=='retry':
|
| 511 |
retailer.status = 'assigned'
|
513 |
retailer.status = 'assigned'
|
| 512 |
else:
|
514 |
else:
|
| 513 |
retailer.status = 'fassigned'
|
515 |
retailer.status = 'fassigned'
|
| 514 |
session.commit()
|
516 |
session.commit()
|
| 515 |
print "getRetryRetailer", retailer.id
|
517 |
lgr.info( "getRetryRetailer ", str(retailer.id))
|
| 516 |
finally:
|
518 |
finally:
|
| 517 |
session.close()
|
519 |
session.close()
|
| 518 |
return retailer
|
520 |
return retailer
|
| 519 |
|
521 |
|
| 520 |
def getNewRetailer(self,failback=True):
|
522 |
def getNewRetailer(self,failback=True):
|
| 521 |
retry = True
|
523 |
retry = True
|
| 522 |
retailer = None
|
524 |
retailer = None
|
| 523 |
try:
|
525 |
try:
|
| 524 |
while(retry):
|
526 |
while(retry):
|
| 525 |
print "Calltype", self.callType
|
527 |
lgr.info( "Calltype " + self.callType)
|
| 526 |
status=self.callType
|
528 |
status=self.callType
|
| 527 |
query = session.query(Retailers).filter(Retailers.status==status)
|
529 |
query = session.query(Retailers).filter(Retailers.status==status)
|
| 528 |
if status=='fresh':
|
530 |
if status=='fresh':
|
| 529 |
query = query.filter_by(is_or=False, is_std=False).filter(or_(Retailers.agent_id==self.agentId, Retailers.agent_id==None)).order_by(-Retailers.agent_id)
|
531 |
query = query.filter_by(is_or=False, is_std=False).filter(or_(Retailers.agent_id==self.agentId, Retailers.agent_id==None)).order_by(-Retailers.agent_id)
|
| 530 |
else:
|
532 |
else:
|
| 531 |
query = query.filter_by(Retailers.next_call_time<=datetime.now())
|
533 |
query = query.filter_by(Retailers.next_call_time<=datetime.now())
|
| 532 |
retailer = query.with_lockmode("update").first()
|
534 |
retailer = query.with_lockmode("update").first()
|
| 533 |
if retailer is not None:
|
535 |
if retailer is not None:
|
| 534 |
print "retailer", retailer.id
|
536 |
lgr.info( "retailer " +str(retailer.id))
|
| 535 |
if status=="fresh":
|
537 |
if status=="fresh":
|
| 536 |
userquery = session.query(Users)
|
538 |
userquery = session.query(Users)
|
| 537 |
if retailer.contact2 is not None:
|
539 |
if retailer.contact2 is not None:
|
| 538 |
userquery = userquery.filter(Users.mobile_number.in_([retailer.contact1,retailer.contact2]))
|
540 |
userquery = userquery.filter(Users.mobile_number.in_([retailer.contact1,retailer.contact2]))
|
| 539 |
else:
|
541 |
else:
|
| 540 |
userquery = userquery.filter_by(mobile_number=retailer.contact1)
|
542 |
userquery = userquery.filter_by(mobile_number=retailer.contact1)
|
| 541 |
user = userquery.first()
|
543 |
user = userquery.first()
|
| 542 |
if user is not None:
|
544 |
if user is not None:
|
| 543 |
retailer.status = 'alreadyuser'
|
545 |
retailer.status = 'alreadyuser'
|
| 544 |
print "retailer.status", retailer.status
|
546 |
lgr.info( "retailer.status " + retailer.status)
|
| 545 |
session.commit()
|
547 |
session.commit()
|
| 546 |
continue
|
548 |
continue
|
| 547 |
retailer.status = 'assigned'
|
549 |
retailer.status = 'assigned'
|
| 548 |
else:
|
550 |
else:
|
| 549 |
retailer.status = 'fassigned'
|
551 |
retailer.status = 'fassigned'
|
| 550 |
print "Found Retailer", retailer.id, "with status", status,"assigned to", self.agentId
|
- |
|
| 551 |
retailer.retry_count = 0
|
552 |
retailer.retry_count = 0
|
| 552 |
retailer.invalid_retry_count = 0
|
553 |
retailer.invalid_retry_count = 0
|
| 553 |
session.commit()
|
554 |
session.commit()
|
| 554 |
print "-"*50
|
- |
|
| 555 |
print "Found Retailer", retailer.id, "with status", status,"assigned to", self.agentId
|
555 |
lgr.info( "Found Retailer " + str(retailer.id) + " with status " + status + " assigned to " + str(self.agentId))
|
| 556 |
|
556 |
|
| 557 |
else:
|
557 |
else:
|
| 558 |
print "No fresh/followup retailers found"
|
558 |
lgr.info( "No fresh/followup retailers found")
|
| 559 |
if failback:
|
559 |
if failback:
|
| 560 |
retailer = self.getRetryRetailer(False)
|
560 |
retailer = self.getRetryRetailer(False)
|
| 561 |
return retailer
|
561 |
return retailer
|
| 562 |
retry=False
|
562 |
retry=False
|
| 563 |
except:
|
563 |
except:
|
| Line 567... |
Line 567... |
| 567 |
return retailer
|
567 |
return retailer
|
| 568 |
|
568 |
|
| 569 |
def on_get(self, req, resp, agentId, callType=None, retailerId=None):
|
569 |
def on_get(self, req, resp, agentId, callType=None, retailerId=None):
|
| 570 |
global RETAILER_DETAIL_CALL_COUNTER
|
570 |
global RETAILER_DETAIL_CALL_COUNTER
|
| 571 |
RETAILER_DETAIL_CALL_COUNTER += 1
|
571 |
RETAILER_DETAIL_CALL_COUNTER += 1
|
| 572 |
print "RETAILER_DETAIL_CALL_COUNTER", RETAILER_DETAIL_CALL_COUNTER
|
572 |
lgr.info( "RETAILER_DETAIL_CALL_COUNTER " + str(RETAILER_DETAIL_CALL_COUNTER))
|
| 573 |
print "I am here"
|
- |
|
| 574 |
self.agentId = int(agentId)
|
573 |
self.agentId = int(agentId)
|
| 575 |
self.callType = callType
|
574 |
self.callType = callType
|
| 576 |
if retailerId is not None:
|
575 |
if retailerId is not None:
|
| 577 |
self.retailerId = int(retailerId)
|
576 |
self.retailerId = int(retailerId)
|
| 578 |
retailerLink = session.query(RetailerLinks).filter_by(id=self.retailerId).first()
|
577 |
retailerLink = session.query(RetailerLinks).filter_by(id=self.retailerId).first()
|
| Line 610... |
Line 609... |
| 610 |
def on_post(self, req, resp, agentId, callType):
|
609 |
def on_post(self, req, resp, agentId, callType):
|
| 611 |
returned = False
|
610 |
returned = False
|
| 612 |
self.agentId = int(agentId)
|
611 |
self.agentId = int(agentId)
|
| 613 |
self.callType = callType
|
612 |
self.callType = callType
|
| 614 |
jsonReq = json.loads(req.stream.read(), encoding='utf-8')
|
613 |
jsonReq = json.loads(req.stream.read(), encoding='utf-8')
|
| 615 |
print jsonReq
|
614 |
lgr.info( "Request ----\n" + jsonReq)
|
| 616 |
self.jsonReq = jsonReq
|
615 |
self.jsonReq = jsonReq
|
| 617 |
invalidNumber = self.invalidNumber
|
616 |
invalidNumber = self.invalidNumber
|
| 618 |
callLater = self.callLater
|
617 |
callLater = self.callLater
|
| 619 |
alreadyUser = self.alReadyUser
|
618 |
alreadyUser = self.alReadyUser
|
| 620 |
verifiedLinkSent = self.verifiedLinkSent
|
619 |
verifiedLinkSent = self.verifiedLinkSent
|