| 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')
|