Subversion Repositories SmartDukaan

Rev

Rev 19259 | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
19107 manish.sha 1
import MySQLdb
2
from elixir import *
3
from sqlalchemy.orm.exc import NoResultFound, MultipleResultsFound
4
from sqlalchemy.sql import func
5
from sqlalchemy.sql.expression import and_, or_, desc, not_, distinct, cast, \
6
    between
7
import optparse
8
import urllib2
9
import base64
10
import urllib
11
import logging
12
from dtr.utils.utils import get_mongo_connection, to_java_date, num_encode
13
from datetime import datetime, timedelta
14
from dtr.storage import DataService
15
from dtr.storage.DataService import Users
16
import traceback
17
import time
18
 
19
DataService.initialize(db_hostname="192.168.158.89")
20
logging.basicConfig(level=logging.DEBUG)
21
mongoHost = 'localhost'
22
 
23
def main():
24
    global mongoHost
25
    parser = optparse.OptionParser()
26
    parser.add_option("-M", "--mongo_host", dest="mongo_host",
27
                      default="localhost",
28
                      type="str", help="The requsets a single thread handles",
29
                      metavar="MONGOHOST")
30
    (options, args) = parser.parse_args()
31
    mongoHost = options.mongo_host
32
    timeCondition = datetime.now()-timedelta(hours=2)
33
    eligibleSmsNotficationCampaigns = list(get_mongo_connection(host=mongoHost).User.notificationcampaigns.find({'smsprocessed':1,'created':{'$lte':to_java_date(timeCondition)}}))
34
    for notificationCampaign in eligibleSmsNotficationCampaigns:
35
        logging.debug('Notification_Campign_Id:- '+str(notificationCampaign.get('_id')))
36
 
19259 manish.sha 37
        jsonSentList = list(get_mongo_connection(host=mongoHost).User.pushnotificationsnew.find({'notification_campaign_id':notificationCampaign.get('_id'),'smstype':'SMS_SENT_OPERATOR'}))
19478 manish.sha 38
        logging.debug('Total Promotional Entries to Processed.....'+str(len(jsonSentList))+' Current Time:- '+str(datetime.now()))
19107 manish.sha 39
 
40
        for smsResponse in jsonSentList:
41
            del_det_params = {'user' : 'srlsaholicP', 'password' : 'srp8oct' , 'apimsgid' : smsResponse.get('sms_id')}
42
            encoded_del_det_params = urllib.urlencode(del_det_params)
43
            del_det_url = 'http://103.15.179.45:8085/MessagingGateway/http/querymsg?' + encoded_del_det_params
44
            logging.debug('User Id:- '+str(smsResponse.get('user_id'))+ ' Delivery Report Url:- '+del_det_url)
45
 
46
            try:
47
                status = ""
48
                del_req = urllib2.Request(del_det_url)
49
                del_response = urllib2.urlopen(del_req)
50
                del_response_str = del_response.read()
51
                logging.debug('Delivery Report Response:- '+str(del_response_str))
52
                if 'STATUS' in del_response_str:
53
                    status = del_response_str.split(' ')[3]
54
                    if status=='DELIVRD':
55
                        status = 'SMS_DELIVRD'
56
                    elif status=='SENT':
57
                        status = 'SMS_SENT_OPERATOR'
58
                    elif status=='REJECTD' or status== 'FAILED':
59
                        status = 'SMS_FAILED'
60
                    elif 'EXP_' in status:
61
                        status = 'SMS_EXPIRED'
62
                    else:
63
                        status = 'SMS_'+status
64
 
19259 manish.sha 65
                get_mongo_connection(host=mongoHost).User.pushnotificationsnew.update({'_id':smsResponse.get('_id')},{"$set":{'sms_type':status,'sms_timestamp':to_java_date(datetime.now())}})
19107 manish.sha 66
 
67
            except Exception as e:
68
                logging.debug('Error while getting response for message id:- '+ str(smsResponse.get("sms_id")))
69
                traceback.print_exc()
70
                continue
71
 
19259 manish.sha 72
        jsonSentList = list(get_mongo_connection(host=mongoHost).User.pushnotificationsnew.find({'notification_campaign_id':notificationCampaign.get('_id'),'smstype':'SMS_INPROCESS'}))
19478 manish.sha 73
        logging.debug('Total Transactional Entries to Processed.....'+str(len(jsonSentList))+' Current Time:- '+str(datetime.now()))
19107 manish.sha 74
 
75
        for smsResponse in jsonSentList:
76
            del_det_params = {'uname' : 'srlsaholic', 'passwd' : 'sr18mar' , 'messageid' : str(smsResponse.get('sms_id'))}
77
            encoded_del_det_params = urllib.urlencode(del_det_params)
78
            del_det_url = 'http://103.15.179.45:8085/SMSGateway/getApiReport?' + encoded_del_det_params
79
            logging.debug('User Id:- '+str(smsResponse.get('user_id'))+ ' Delivery Report Url:- '+del_det_url) 
80
 
81
            try:
82
                del_req = urllib2.Request(del_det_url)
83
                del_response = urllib2.urlopen(del_req)
84
                del_response_str = del_response.read()
85
                logging.debug('Delivery Report Response:- '+str(del_response_str))
86
 
87
                del_response_vals = del_response_str.split(' ')
88
 
89
                status = ''
90
                if len(del_response_vals) == 8 and del_response_vals[7][:-2] == '0':
91
                    status = 'SMS_DELIVRD'
92
                elif "Submitted to SMSC" in del_response_str:
93
                    status = 'SMS_INPROCESS'
94
                else:
95
                    status = 'SMS_FAILED'
96
 
19259 manish.sha 97
                get_mongo_connection(host=mongoHost).User.pushnotificationsnew.update({'_id':smsResponse.get('_id')},{"$set":{'sms_type':status,'sms_timestamp':to_java_date(datetime.now())}})
19107 manish.sha 98
 
99
            except Exception as e:
100
                logging.debug('Error while getting response for message id:- '+ str(smsResponse.get("sms_id")))
101
                traceback.print_exc()
102
                continue          
103
 
104
if __name__=='__main__':
105
    main()
106
    try:
107
        session.close()
108
    except:
109
        print 'Error while closing session'