Exemplo n.º 1
0
	def testGetRefer(self):
		user = create_user('practicemgr','yang','peng','demo')
		msg = Message(sender=user, sender_site = None, subject="pandas")
		msg.urgent = False
		msg.callback_number = 2561234561
		msg.save()
		refer = MessageRefer()
		refer.message = msg
		refer.gender = 'M'
		refer.status = 'AC'
		refer.phone_number = 8529631475
		refer.alternative_phone_number = 1472583695
		refer.home_phone_number = 8472583695
		refer.save()
		refer_list=[refer]
		self.assertEqual(get_refer(refer_list),refer.status)
		with self.assertRaises(TypeError):get_refer(refer)

#class Get_attachment_filenameTest(TestCase):
#	def test_get_attachment_filename(self):
#		user = create_user('practicemgr','yang','peng','demo')
#		msg = Message(sender=user, sender_site = None, subject="pandas")
#		msg.urgent = False
#		msg.callback_number = 2561234561
#		msg.save()
#		request = generateHttpRequest()
#		msgCon = MessageContent()
#		msgCon.message=msg
#		msgCon.save()
#		attachment = MessageAttachment(msgCon)
#		attachment.size = '12'
#		attachment.save()
#		
#		_get_attachment_filename(request,msg)
Exemplo n.º 2
0
	def test_delete_message(self):
		request = generateHttpRequest()

		#not find message
		result = delete_message(request, '20fc43b89e97484aba6fc1870f026a2e')
		self.assertEqual(result.status_code, 400)
		msg = json.loads(result.content)
		self.assertEqual(msg['errno'], 'IN003')

		#find message
		msg = Message(sender=request.user, sender_site=None, subject="pandas")
		msg.urgent = False
		msg.message_type = 'NM'
		msg.callback_number = '2561234561'
		msg.save()
		body = "i am indeed a talking panda. how are you?"
		msg_body = MessageBody(message=msg, body=body)
		msg_body.save()
		mbu = MessageBodyUserStatus(msg_body=msg_body, user=request.user)
		mbu.save()

		result = delete_message(request, msg.uuid)
		self.assertEqual(result.status_code, 200)
		msg = json.loads(result.content)
		self.assertEqual(msg['data'], {})
Exemplo n.º 3
0
	def testGetReferPDF(self):
		sender = self.user
		msg = Message(sender=sender, sender_site=None, subject="pandas")
		msg.urgent = False
		msg.message_type = 'NM'
		msg.callback_number = '2561234561'
		msg.save()

		refer = MessageRefer()
		refer.message = msg
		refer.gender = 'M'
		refer.status = 'AC'
		refer.phone_number = 8529631475
		refer.alternative_phone_number = 1472583695
		refer.home_phone_number = 8472583695
		refer.save()
		response = self.client.get(reverse('MHLogin.api.v1.views_messaging.getReferPDF', \
				args=(refer.uuid,)), **self.extra)
		self.assertEqual(response.content, err_GE002().content, response.status_code)

		response = self.client.post(reverse('MHLogin.api.v1.views_messaging.getReferPDF', \
				args=(refer.uuid,)), **self.extra)
		self.assertEqual(response.status_code, 400, response.status_code)

		with self.assertRaises(Exception):
			self.client.post(reverse(
				'MHLogin.api.v1.views_messaging.getReferPDF', args=(refer.uuid,)), \
				data={'secret': 'ABeohIU4Sy48bQ/w07cLKBJ6gv49ptEF0YY48VXSMr4='}, **self.extra)
Exemplo n.º 4
0
	def testDeleteMessage(self):
		self.user = create_user(get_random_username(), "mhluser", "thj", "demo", 
						"555 Bryant St.", "Palo Alto", "CA", "")
		self.user.mdcom_phone = '9002000001'
		self.user.save()
		sender = self.user
		msg = Message(sender=sender, sender_site=None, subject="pandas")
		msg.urgent = False
		msg.message_type = 'NM'
		msg.callback_number = '2561234561'
		msg.save()
		body = "i am indeed a talking panda. how are you?"
		msg_body = MessageBody(message=msg, body=body)
		msg_body.save()

		msgbus = MessageBodyUserStatus()
		msgbus.user = self.user
		msgbus.msg_body = msg_body
		msgbus.save()
		self.msgbus = msgbus

		self.extra['HTTP_MDCOM_USER_UUID'] = self.user.uuid

		message_id = msg.uuid
		response = self.client.get(reverse(
			'MHLogin.api.v1.views_messaging.deleteMessage', 
				args=(message_id,)), **self.extra)
		self.assertEqual(response.status_code, 200, response.status_code)
Exemplo n.º 5
0
 def testGetMessageLogic(self):
     request = generateHttpRequest()
     user = create_user('yangpeng', 'yang', 'peng', 'demo')
     msg = Message(sender=user, sender_site=None, subject="pandas")
     msg.urgent = False
     msg.message_type = 'NM'
     msg.callback_number = '2561234561'
     msg.save()
     message_id = msg.uuid
     request.method = "get"
     response = getMessageLogic(request, message_id)
     self.assertEqual(json.loads(response.content)['errno'], 'GE002')
     request.method = "POST"
     with self.assertRaises(Http404):
         getMessageLogic(request, message_id)
Exemplo n.º 6
0
	def testUpdateRefer(self):
		provider = Provider(username="******", first_name="upre", 
								last_name="test", office_lat=0.0, office_longit=0.0)
		provider.set_password("maestro")
		provider.save()
		provider2 = Provider(username="******", first_name="doc", 
								last_name="holiday", office_lat=0.0, office_longit=0.0)
		provider2.set_password("holiday")
		provider2.save()
		sender = provider
		msg = Message(sender=sender, sender_site=None, subject="pandas")
		msg.urgent = False
		msg.message_type = 'NM'
		msg.callback_number = '2561234561'
		msg.save()
		body = "i am indeed a talking panda. how are you?"
		msg_body = MessageBody(message=msg, body=body)
		msg_body.save()
		refer = MessageRefer()
		refer.message = msg
		refer.first_name = 'msg'
		refer.middle_name = 'refer'
		refer.last_name = 'again'
		refer.gender = 'M'
		refer.status = 'NO'
		refer.phone_number = 8529631475
		refer.alternative_phone_number = 1472583695
		refer.save()
		msgRe = MessageRecipient()
		msgRe.message = msg
		msgRe.user = provider2
		msgRe.save()

		generate_keys_for_users(output=DevNull())

		VMBox_Config(owner=provider).save()
		VMBox_Config(owner=provider2).save()

		response = self.client.get(reverse(
				'MHLogin.api.v1.views_messaging.updateRefer', args=(refer.uuid,)), **self.extra)
		self.assertEqual(response.content, err_GE002().content, response.status_code)

		response = self.client.post(reverse(
				'MHLogin.api.v1.views_messaging.updateRefer', args=(refer.uuid,)), \
				data={'status': 'NO'}, **self.extra)
		self.assertEqual(response.status_code, 200, response.status_code)
		m = json.loads(response.content)
		self.assertEqual(len(m), 2)
Exemplo n.º 7
0
	def testGetAttachment(self):
		sender = self.user
		msg = Message(sender=sender, sender_site=None, subject="pandas")
		msg.urgent = False
		msg.draft = True
		msg.message_type = 'NM'
		msg.callback_number = '2561234561'
		msg.save()
#		attachment = MessageAttachment()
#		attachment.size = '12'
#		attachment.save()
#		attachment.uuid
#		
		response = self.client.get(reverse('MHLogin.api.v1.views_messaging.getAttachment', 
			args=(msg.uuid, msg.uuid)), **self.extra)
		self.assertEqual(response.content, err_GE002().content, response.status_code)
Exemplo n.º 8
0
	def testMarkMessageUnread(self):
		response = self.client.get(reverse(
			'MHLogin.api.v1.views_messaging.markMessageUnread'), **self.extra)
		self.assertEqual(response.content, err_GE002().content, response.status_code)

		sender = self.user
		msg = Message(sender=sender, sender_site=None, subject="pandas")
		msg.urgent = False
		msg.message_type = 'NM'
		msg.callback_number = '2561234561'
		msg.save()
		message_id = msg.uuid
		data = {'message_ids': [message_id]}
		response = self.client.post(reverse(
			'MHLogin.api.v1.views_messaging.markMessageUnread'), data, **self.extra)
		self.assertEqual(response.status_code, 200, response.status_code)
		msg = json.loads(response.content)
		self.assertEqual(len(msg), 2)
Exemplo n.º 9
0
	def testMarkMessageRead(self):

		response = self.client.get(reverse(
			'MHLogin.api.v1.views_messaging.markMessageRead'), **self.extra)
		self.assertEqual(response.content, err_GE002().content, response.status_code)

		self.user = create_user(get_random_username(), "mhluser", "thj", "demo", 
						"555 Bryant St.", "Palo Alto", "CA", "")
		self.user.mdcom_phone = '9002000001'
		self.user.save()
		sender = self.user
		msg = Message(sender=sender, sender_site=None, subject="pandas")
		msg.urgent = False
		msg.message_type = 'NM'
		msg.callback_number = '2561234561'
		msg.save()
		message_id = msg.uuid
		data = {'message_ids': [message_id]}
		response = self.client.post(reverse(
			'MHLogin.api.v1.views_messaging.markMessageRead'), data, **self.extra)
		self.assertEqual(response.status_code, 200, response.status_code)
		msg = json.loads(response.content)
		self.assertEqual(len(msg), 2)
Exemplo n.º 10
0
	def testGetMessage(self):
		sender = self.user
		msg = Message(sender=sender, sender_site=None, subject="pandas")
		msg.urgent = False
		msg.message_type = 'NM'
		msg.callback_number = '2561234561'
		msg.save()
		body = "i am indeed a talking panda. how are you?"
		msg_body = MessageBody(message=msg, body=body)
		msg_body.save()

		msgbus = MessageBodyUserStatus()
		msgbus.user = self.user
		msgbus.msg_body = msg_body
		msgbus.save()
		self.msgbus = msgbus

		self.object_type = ContentType.objects.get_for_model(msg_body)
		self.extra['HTTP_MDCOM_USER_UUID'] = self.user.uuid

		response = self.client.get(reverse(
			'MHLogin.api.v1.views_messaging.getMessage', args=(msg.uuid,)), **self.extra)
		self.assertEqual(response.content, err_GE002().content, response.status_code)
Exemplo n.º 11
0
    def testGetRefer(self):
        user = create_user('practicemgr', 'yang', 'peng', 'demo')
        msg = Message(sender=user, sender_site=None, subject="pandas")
        msg.urgent = False
        msg.callback_number = 2561234561
        msg.save()
        refer = MessageRefer()
        refer.message = msg
        refer.gender = 'M'
        refer.status = 'AC'
        refer.phone_number = 8529631475
        refer.alternative_phone_number = 1472583695
        refer.home_phone_number = 8472583695
        refer.save()
        refer_list = [refer]
        self.assertEqual(get_refer(refer_list), refer.status)
        with self.assertRaises(TypeError):
            get_refer(refer)


#class Get_attachment_filenameTest(TestCase):
#	def test_get_attachment_filename(self):
#		user = create_user('practicemgr','yang','peng','demo')
#		msg = Message(sender=user, sender_site = None, subject="pandas")
#		msg.urgent = False
#		msg.callback_number = 2561234561
#		msg.save()
#		request = generateHttpRequest()
#		msgCon = MessageContent()
#		msgCon.message=msg
#		msgCon.save()
#		attachment = MessageAttachment(msgCon)
#		attachment.size = '12'
#		attachment.save()
#
#		_get_attachment_filename(request,msg)
Exemplo n.º 12
0
def _convertVoicemails(output=sys.stderr):
    from models import VMMessage
    from django.db.models import Model
    vms = VMMessage.objects.all()
    for vm in vms:
        try:
            oldconfig = VMBox_Config.objects.get(owner_id=vm.owner_id)
            config = VMBox_Config.objects.get(owner_id=vm.owner_id)

            #url = vm.recording
            msg = Message(sender=None, sender_site=None, subject="Voice mail")
            msg.urgent = False
            msg.message_type = 'VM'
            msg.callback_number = vm.callbacknumber
            msg.read_flag = vm.read_flag
            msg.delete_flag = vm.deleted
            msg.save()
            MessageRecipient(message=msg, user=vm.owner).save()
            request = _FauxRequest()
            request.session['ivr_makeRecording_recording'] = vm.recording
            request.session[
                'ivr_makeRecording_callbacknumber'] = vm.callbacknumber
            attachment = save_voice_attachment(request, msg)
            msg_body = msg.save_body("Message from %s." % msg.callback_number)
            config.notification_page = False
            config.notification_sms = False
            config.save()
            msg.send(request, msg_body, [attachment])
            msg.send_timestamp = time.mktime(vm.timestamp.timetuple())
            Model.save(msg)
            oldconfig.save()
        except Exception as e:
            err_msg = "Warning no VMBoxConfig found for: %s, Exception: %s\n" \
                % (repr(vm.owner), str(e))
            output.write(err_msg)
            logger.warning(err_msg)
Exemplo n.º 13
0
def save_message(request,
                 subject,
                 recipients,
                 cc=None,
                 message_type='VM',
                 urgent=False):
    #now that we live about 1.5ms away from twilio instead of 100ms,
    #we sometimes end up requesting recordings before twilio has put them up.
    #so we sleep for 100ms as a workaround
    time.sleep(.1)
    cc = cc or []
    msg = Message(sender=None, sender_site=None, subject=subject)
    msg.urgent = urgent
    msg.message_type = message_type
    msg.callback_number = request.session['ivr_makeRecording_callbacknumber']
    msg.save()
    attachments = []
    all_recipients = recipients[:]

    for recipient in all_recipients:
        MessageRecipient(message=msg, user=recipient).save()
    if isinstance(cc, collections.Iterable):
        for recipient in cc:
            MessageCC(message=msg, user=recipient).save()
    if ('ivr_makeRecording_recording' in request.session):
        #make a file out of twilio recording
        attachment = save_voice_attachment(request, msg)
        if (attachment):
            attachments.append(attachment)

    #'For ANS ONLY! ivr_caller_id_area_code' present means the call back number contained no area code,
    #and we saved twillio's caller id are code
    if (message_type == 'ANS'
            and 'ivr_caller_id_area_code' in request.session):
        caller_id_area_code = " Area Code From Caller Id :%s." % \
         request.session['ivr_caller_id_area_code']
    else:
        caller_id_area_code = ""

    if ('ivr_only_callbacknumber' in request.session
            and request.session['ivr_only_callbacknumber']):
        if ('ivr_no_pound' in request.session
                and request.session['ivr_no_pound'] == True):
            formatted_body = _(
                "Caller hung up from CONFIRMED %s before leaving message. "
                "No attachment."
            ) % request.session['ivr_makeRecording_callbacknumber']
            msg.vmstatus = 'C'
        else:
            formatted_body = _(
                "Caller hung up from unconfirmed %s before leaving message. "
                "No attachment."
            ) % request.session['ivr_makeRecording_callbacknumber']
            msg.vmstatus = 'U'
    else:
        msg.vmstatus = 'R'
        if (attachments):
            formatted_body = "Message from %s.%s" % (
                request.session['ivr_makeRecording_callbacknumber'],
                caller_id_area_code)
        else:
            # There was a recording, but Twilio must have errored when we
            # tried to get it.
            formatted_body = _("Message from %(callbacknumber)s. Unfortunately, an error occurred "
                "downloading the recording from our telephone company. We will "
                "automatically retry the download and you will receive a new "
                "message once the recording is successfully retrieved. This call "
                "will be referenced using the following ID: %(CallSid)s.\nWe "
                "apologize for any inconvenience.\nDoctorCom Staff") % \
                {'callbacknumber': request.session['ivr_makeRecording_callbacknumber'],
                 'CallSid': request.REQUEST['CallSid']}

            url = request.session['ivr_makeRecording_recording']
            log = AnsSvcDLFailure(
                practice_id=request.session.get('practice_id', 0),
                error_message_uuid=msg.uuid,
                recording_url=url,
                callback_number=request.
                session['ivr_makeRecording_callbacknumber'],
                failure_type='DL',
            )
            log.init_from_post_data(request.REQUEST)
            log.save()
    msg_body = msg.save_body(formatted_body)

    event = callEvent(callSID=request.POST['CallSid'], event='V_NMG')
    target = callEventTarget(event=event, target=msg)
    # Send the message
    msg.send(request, msg_body, attachments)