Subversion Repositories SmartDukaan

Rev

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

Rev 19734 Rev 19761
Line 8... Line 8...
8
from dtr.storage.DataService import Retailers, Users, CallHistory, RetryConfig, \
8
from dtr.storage.DataService import Retailers, Users, CallHistory, RetryConfig, \
9
    RetailerLinks, Activation_Codes, Agents, Agent_Roles, AgentLoginTimings, \
9
    RetailerLinks, Activation_Codes, Agents, Agent_Roles, AgentLoginTimings, \
10
    FetchDataHistory, RetailerContacts, Orders, OnboardedRetailerChecklists,\
10
    FetchDataHistory, RetailerContacts, Orders, OnboardedRetailerChecklists,\
11
    RetailerAddresses, Pincodeavailability, app_offers, appmasters, user_app_cashbacks, user_app_installs,\
11
    RetailerAddresses, Pincodeavailability, app_offers, appmasters, user_app_cashbacks, user_app_installs,\
12
    Postoffices, UserCrmCallingData, CallHistoryCrm, ProductPricingInputs,\
12
    Postoffices, UserCrmCallingData, CallHistoryCrm, ProductPricingInputs,\
13
    tinxys_stats
13
    tinxys_stats, profitmandi_sms
14
from dtr.storage.Mongo import get_mongo_connection
14
from dtr.storage.Mongo import get_mongo_connection
15
from dtr.storage.Mysql import fetchResult
15
from dtr.storage.Mysql import fetchResult
16
from dtr.utils import DealSheet as X_DealSheet, \
16
from dtr.utils import DealSheet as X_DealSheet, \
17
    UserSpecificDeals, utils, ThriftUtils
17
    UserSpecificDeals, utils, ThriftUtils
18
from dtr.utils.utils import getLogger,encryptMessage,decryptMessage,\
18
from dtr.utils.utils import getLogger,encryptMessage,decryptMessage,\
Line 88... Line 88...
88
DEALER_RETRY_FACTOR = int(PythonPropertyReader.getConfig('DEALER_RETRY_FACTOR'))
88
DEALER_RETRY_FACTOR = int(PythonPropertyReader.getConfig('DEALER_RETRY_FACTOR'))
89
DEALER_FRESH_FACTOR = int(PythonPropertyReader.getConfig('DEALER_FRESH_FACTOR'))
89
DEALER_FRESH_FACTOR = int(PythonPropertyReader.getConfig('DEALER_FRESH_FACTOR'))
90
USER_CRM_DEFAULT_RETRY_FACTOR = int(PythonPropertyReader.getConfig('USER_CRM_DEFAULT_RETRY_FACTOR'))
90
USER_CRM_DEFAULT_RETRY_FACTOR = int(PythonPropertyReader.getConfig('USER_CRM_DEFAULT_RETRY_FACTOR'))
91
USER_CRM_DEFAULT_FRESH_FACTOR = int(PythonPropertyReader.getConfig('USER_CRM_DEFAULT_FRESH_FACTOR'))
91
USER_CRM_DEFAULT_FRESH_FACTOR = int(PythonPropertyReader.getConfig('USER_CRM_DEFAULT_FRESH_FACTOR'))
92
TOTAL = DEALER_RETRY_FACTOR + DEALER_FRESH_FACTOR
92
TOTAL = DEALER_RETRY_FACTOR + DEALER_FRESH_FACTOR
93
TOTAL_USER = USER_CRM_DEFAULT_FRESH_FACTOR + USER_CRM_DEFAULT_RETRY_FACTOR  
93
TOTAL_USER = USER_CRM_DEFAULT_FRESH_FACTOR + USER_CRM_DEFAULT_RETRY_FACTOR
-
 
94
TRANSACTIONAL_SMS_SEND_URL = "http://103.15.179.45:8085/SMSGateway/sendingSMS?"
-
 
95
smsText = "Dear Customer, Download Profitmandi application only for you my friend"  
94
class CategoryDiscountInfo(object):
96
class CategoryDiscountInfo(object):
95
    
97
    
96
    def on_get(self, req, resp):
98
    def on_get(self, req, resp):
97
        
99
        
98
        result = Mongo.getAllCategoryDiscount()
100
        result = Mongo.getAllCategoryDiscount()
Line 2333... Line 2335...
2333
                customerFeedbackBackMap['mobile_number']=user.mobile_number
2335
                customerFeedbackBackMap['mobile_number']=user.mobile_number
2334
                customerFeedbackBackMap['customer_name']=user.first_name + ' ' + user.last_name
2336
                customerFeedbackBackMap['customer_name']=user.first_name + ' ' + user.last_name
2335
                customerFeedbackBackMap['subject'] = req.get_param("subject")
2337
                customerFeedbackBackMap['subject'] = req.get_param("subject")
2336
                customerFeedbackBackMap['message'] = req.get_param("message")
2338
                customerFeedbackBackMap['message'] = req.get_param("message")
2337
                customerFeedbackBackMap['created'] = datetime.now()
2339
                customerFeedbackBackMap['created'] = datetime.now()
2338
                if utils.generateCrmTicket(customerFeedbackBackMap):
2340
                if ThriftUtils.generateCrmTicket(customerFeedbackBackMap):
2339
                    resp.body={"result":"success"}
2341
                    resp.body={"result":"success"}
2340
                else:
2342
                else:
2341
                    resp.body={"result":"failure"}    
2343
                    resp.body={"result":"failure"}    
2342
            else:
2344
            else:
2343
                resp.body={"result":"failure"}
2345
                resp.body={"result":"failure"}
Line 2445... Line 2447...
2445
class HeaderLinks():
2447
class HeaderLinks():
2446
    def on_get(self, req, resp):
2448
    def on_get(self, req, resp):
2447
        category_id = req.get_param_as_int('category_id')
2449
        category_id = req.get_param_as_int('category_id')
2448
        result = Mongo.getHeaderLinks(category_id)
2450
        result = Mongo.getHeaderLinks(category_id)
2449
        resp.body = dumps(result)
2451
        resp.body = dumps(result)
-
 
2452
 
-
 
2453
class SendTransactionalSms():
-
 
2454
    def on_post(self,req,resp,sms_type,identifier,agentId):
-
 
2455
        if sms_type =='code':
-
 
2456
            otherMobileNumber = req.get_param('mobile_number')
-
 
2457
            if otherMobileNumber is None or str(otherMobileNumber).strip() is '':
-
 
2458
                retailerContact = session.query(RetailerContacts).filter_by(retailer_id=identifier).filter(RetailerContacts.contact_type=='sms').order_by(RetailerContacts.created.desc()).first()
-
 
2459
                if retailerContact is not None:
-
 
2460
                    if retailerContact.mobile_number is not None and len(retailerContact.mobile_number)==10:
-
 
2461
                        smsStatus = generateSms(identifier,retailerContact.mobile_number,agentId)
-
 
2462
                        if smsStatus:
-
 
2463
                            resp.body = "{\"result\":\"success\"}"
2450
                        
2464
                        else:
-
 
2465
                            resp.body = "{\"result\":\"failed\"}"
-
 
2466
                    else:
-
 
2467
                        print 'Not a valid number to send the message to '+str(retailerContact.mobile_number)
-
 
2468
                        resp.body = "{\"result\":\"failed\"}"
-
 
2469
                else:
-
 
2470
                    print 'No number to send the message for retailer id '+str(identifier)
-
 
2471
                    resp.body = "{\"result\":\"failed\"}"
-
 
2472
            else:
-
 
2473
                if len(str(otherMobileNumber).strip())==10:
-
 
2474
                    smsStatus = generateSms(identifier,str(otherMobileNumber).strip(),agentId)
-
 
2475
                    if smsStatus:
-
 
2476
                        resp.body = "{\"result\":\"success\"}"
-
 
2477
                    else:
-
 
2478
                        resp.body = "{\"result\":\"failed\"}"
-
 
2479
                else:
-
 
2480
                    print 'Not a valid number to send the message to '+str(retailerContact.mobile_number)
-
 
2481
                    resp.body = "{\"result\":\"failed\"}"
-
 
2482
            
-
 
2483
def generateSms(self,identifier,mobile_number,agentId):
-
 
2484
    try:
-
 
2485
        retailerLink = session.query(RetailerLinks).filter_by(retailer_id=identifier).first()
-
 
2486
        retailer = session.query(Retailers).filter_by(id=identifier).first()
-
 
2487
        if retailer is not None:
-
 
2488
            if retailerLink is not None:
-
 
2489
                code = retailerLink.code
-
 
2490
                retailerLink.agent_id = agentId
-
 
2491
            else: 
-
 
2492
                code = self.getNewRandomCode()
-
 
2493
                retailerLink = RetailerLinks()
-
 
2494
                retailerLink.code = code
-
 
2495
                retailerLink.agent_id = self.agentId
-
 
2496
                retailerLink.retailer_id = self.retailerId
-
 
2497
                activationCode=Activation_Codes()
-
 
2498
                activationCode.code = code
-
 
2499
            profitmandiUrl = make_tiny(code)
-
 
2500
            smsText = smsText + profitmandiUrl
-
 
2501
            url_params = { 'ani' : '91'+mobile_number,  'uname' : 'srlsaholic', 'passwd' : 'sr18mar' , 'cli' : 'PROFTM', 'message' : smsText.strip() }
-
 
2502
            encoded_url_params = urllib.urlencode(url_params)
-
 
2503
            print 'Mobile Number :- '+str(mobile_number) +' Url Params:- '+str(encoded_url_params)
-
 
2504
            url = TRANSACTIONAL_SMS_SEND_URL + encoded_url_params
-
 
2505
            response_str = None
-
 
2506
            try:
-
 
2507
                req = urllib2.Request(url)
-
 
2508
                response = urllib2.urlopen(req)
-
 
2509
                response_str = response.read()
-
 
2510
            except:
-
 
2511
                print 'Error while getting response for user id:- Mobile Number:- '+str(mobile_number)
-
 
2512
                traceback.print_exc()
-
 
2513
                return False
-
 
2514
            print 'Mobile Number:- '+str(mobile_number) +' Sent Response:- '+ str(response_str)
-
 
2515
            try:
-
 
2516
                sms = profitmandi_sms()
-
 
2517
                sms.mobile_number = mobile_number
-
 
2518
                sms.sms_type = 'code'
-
 
2519
                sms.identifier = identifier 
-
 
2520
                if "Message sent successfully to " in response_str:
-
 
2521
                    response_str_vals = response_str.split('#')
-
 
2522
                    sms.status = "smsprocessed"
-
 
2523
                    sms.sms_id = response_str_vals[0]
-
 
2524
                else:
-
 
2525
                    sms.status = "smsrejected"
-
 
2526
                    sms.sms_id = None
-
 
2527
            except:
-
 
2528
                print 'Error while getting response for user id:- Mobile Number:- '+str(mobile_number)
-
 
2529
                traceback.print_exc()
-
 
2530
                return False
-
 
2531
            retailer.status='followup'
-
 
2532
            retailer.disposition = 'auto_text_sent'
-
 
2533
            retailer.next_call_time = datetime.now() + timedelta(days=1)
-
 
2534
            session.commit()
-
 
2535
            return True
-
 
2536
        else:
-
 
2537
            return False
-
 
2538
    except:
-
 
2539
        print traceback.print_exc()
-
 
2540
        return False
-
 
2541
    finally:
-
 
2542
        session.close()
-
 
2543
                
2451
def main():
2544
def main():
2452
    a = RetailerDetail()
2545
    a = RetailerDetail()
2453
    retailer = a.getNotActiveRetailer()
2546
    retailer = a.getNotActiveRetailer()
2454
    otherContacts = [r for r, in session.query(RetailerContacts.mobile_number).filter_by(retailer_id=retailer.id).order_by(RetailerContacts.contact_type).all()]
2547
    otherContacts = [r for r, in session.query(RetailerContacts.mobile_number).filter_by(retailer_id=retailer.id).order_by(RetailerContacts.contact_type).all()]
2455
    print json.dumps(todict(getRetailerObj(retailer, otherContacts, 'fresh')), encoding='utf-8')
2548
    print json.dumps(todict(getRetailerObj(retailer, otherContacts, 'fresh')), encoding='utf-8')