Subversion Repositories SmartDukaan

Rev

Rev 15234 | Rev 15240 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 15234 Rev 15239
Line 534... Line 534...
534
class RetailerDetail():
534
class RetailerDetail():
535
    global RETAILER_DETAIL_CALL_COUNTER
535
    global RETAILER_DETAIL_CALL_COUNTER
536
    def getRetryRetailer(self,failback=True):
536
    def getRetryRetailer(self,failback=True):
537
        retailer = None
537
        retailer = None
538
        status = 'fretry' if self.callType == 'followup' else 'retry'
538
        status = 'fretry' if self.callType == 'followup' else 'retry'
539
        try:
-
 
540
            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()
539
        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()
541
            if retailer is not None:
540
        if retailer is not None:
542
                lgr.info( "getRetryRetailer " + str(retailer.id))
541
            lgr.info( "getRetryRetailer " + str(retailer.id))
543
            else:
542
        else:
544
                if failback:
543
            if failback:
545
                    retailer = self.getNewRetailer(False)
544
                retailer = self.getNewRetailer(False)
546
                    return retailer
545
                return retailer
547
            if status=='retry':
546
        if status=='retry':
548
                retailer.status = 'assigned'
547
            retailer.status = 'assigned'
549
            else:
548
        else:
550
                retailer.status = 'fassigned'
549
            retailer.status = 'fassigned'
551
            session.commit()
-
 
552
            lgr.info( "getRetryRetailer ", str(retailer.id))
550
        lgr.info( "getRetryRetailer " + str(retailer.id))
553
        finally:
-
 
554
            session.close()
-
 
555
        return retailer
551
        return retailer
556
            
552
            
557
    def getNewRetailer(self,failback=True):
553
    def getNewRetailer(self,failback=True):
558
        retry = True
554
        retry = True
559
        retailer = None 
555
        retailer = None 
Line 584... Line 580...
584
                        retailer.status = 'assigned'
580
                        retailer.status = 'assigned'
585
                    else:
581
                    else:
586
                        retailer.status = 'fassigned'
582
                        retailer.status = 'fassigned'
587
                    retailer.retry_count = 0
583
                    retailer.retry_count = 0
588
                    retailer.invalid_retry_count = 0
584
                    retailer.invalid_retry_count = 0
589
                    session.commit()
-
 
590
                    lgr.info( "Found Retailer " +  str(retailer.id) + " with status " + status + " assigned to " + str(self.agentId))
585
                    lgr.info( "Found Retailer " +  str(retailer.id) + " with status " + status + " assigned to " + str(self.agentId))
591
                        
586
                        
592
                else:
587
                else:
593
                    lgr.info( "No fresh/followup retailers found")
588
                    lgr.info( "No fresh/followup retailers found")
594
                    if failback:
589
                    if failback:
595
                        retailer = self.getRetryRetailer(False)
590
                        retailer = self.getRetryRetailer(False)
596
                        return retailer
591
                        return retailer
597
                retry=False
592
                retry=False
598
        except:
593
        except:
599
            print traceback.print_exc()
594
            print traceback.print_exc()
600
        finally:
-
 
601
            session.close()
-
 
602
        return retailer
595
        return retailer
603
    
596
    
604
    def on_get(self, req, resp, agentId, callType=None, retailerId=None):
597
    def on_get(self, req, resp, agentId, callType=None, retailerId=None):
605
        global RETAILER_DETAIL_CALL_COUNTER
598
        global RETAILER_DETAIL_CALL_COUNTER
606
        RETAILER_DETAIL_CALL_COUNTER += 1
599
        RETAILER_DETAIL_CALL_COUNTER += 1
607
        lgr.info( "RETAILER_DETAIL_CALL_COUNTER " +  str(RETAILER_DETAIL_CALL_COUNTER))
600
        lgr.info( "RETAILER_DETAIL_CALL_COUNTER " +  str(RETAILER_DETAIL_CALL_COUNTER))
608
        self.agentId = int(agentId)
601
        self.agentId = int(agentId)
609
        self.callType = callType
602
        self.callType = callType
610
        if retailerId is not None:
603
        if retailerId is not None:
611
            fetchInfo = FetchDataHistory()
-
 
612
            fetchInfo.agent_id = self.agentId
-
 
613
            fetchInfo.call_type = self.callType
-
 
614
            agent = session.query(Agents).filter_by(agent_id=self.agentId).first()
-
 
615
            last_disposition = session.query(CallHistory).filter_by(agent_id=self.agentId).order_by(CallHistory.id.desc()).first()
-
 
616
            if last_disposition is None or last_disposition.created < agent.last_login:
-
 
617
                fetchInfo.last_action = 'login'
-
 
618
                fetchInfo.last_action_time = agent.last_login 
-
 
619
            else:
-
 
620
                fetchInfo.last_action = 'disposition'
-
 
621
                fetchInfo.last_action_time = last_disposition.created
-
 
622
            self.retailerId = int(retailerId)
604
            self.retailerId = int(retailerId)
623
            retailerLink = session.query(RetailerLinks).filter_by(retailer_id=self.retailerId).first()
605
            retailerLink = session.query(RetailerLinks).filter_by(retailer_id=self.retailerId).first()
624
            if retailerLink is not None:
606
            if retailerLink is not None:
625
                code = retailerLink.code
607
                code = retailerLink.code
626
            else: 
608
            else: 
Line 636... Line 618...
636
                session.commit()
618
                session.commit()
637
            session.close()
619
            session.close()
638
            resp.body =  json.dumps({"result":{"code":code,"link":make_tiny(code)}}, encoding='utf-8')
620
            resp.body =  json.dumps({"result":{"code":code,"link":make_tiny(code)}}, encoding='utf-8')
639
            return 
621
            return 
640
        retryFlag = False 
622
        retryFlag = False 
641
        agentId = int(agentId)
-
 
642
        if RETAILER_DETAIL_CALL_COUNTER % DEALER_RETRY_FACTOR ==0:
623
        if RETAILER_DETAIL_CALL_COUNTER % DEALER_RETRY_FACTOR ==0:
643
            retryFlag=True
624
            retryFlag=True
644
        
625
        try:
645
        if retryFlag:
626
            if retryFlag:
646
            retailer = self.getRetryRetailer()
627
                retailer = self.getRetryRetailer()
647
        else:
628
            else:
648
            retailer = self.getNewRetailer()
629
                retailer = self.getNewRetailer()
-
 
630
            fetchInfo = FetchDataHistory()
-
 
631
            fetchInfo.agent_id = self.agentId
-
 
632
            fetchInfo.call_type = self.callType
-
 
633
            agent = session.query(Agents).filter_by(agent_id=self.agentId).first()
-
 
634
            last_disposition = session.query(CallHistory).filter_by(agent_id=self.agentId).order_by(CallHistory.id.desc()).first()
-
 
635
            if last_disposition is None or last_disposition.created < agent.last_login:
-
 
636
                fetchInfo.last_action = 'login'
-
 
637
                fetchInfo.last_action_time = agent.last_login 
-
 
638
            else:
-
 
639
                fetchInfo.last_action = 'disposition'
-
 
640
                fetchInfo.last_action_time = last_disposition.created
-
 
641
            fetchInfo.retailer_id = retailer.id
-
 
642
            session.commit()
-
 
643
        finally:
-
 
644
            session.close()
649
        
645
        
650
        if retailer is None:
646
        if retailer is None:
651
            resp.body = "{}"
647
            resp.body = "{}"
652
        else:
648
        else:
653
            resp.body = json.dumps(todict(getRetailerObj(retailer)), encoding='utf-8')
649
            resp.body = json.dumps(todict(getRetailerObj(retailer)), encoding='utf-8')