예제 #1
0
def getAttachmentLogic(request, message_id, attachment_id, ss=None):
	if (request.method != 'POST'):
		return err_GE002()

	attachment = get_object_or_404(MessageAttachment, message__uuid=message_id, uuid=attachment_id)
	message = attachment.message

	if ((message.sender and request.user.pk != message.sender.pk) and 
		not ((request.user.pk,) in message.recipients.values_list('id') or (request.user.pk,) 
			in message.ccs.values_list('id'))):
		return err403(request, err_msg="You don't seem to be a valid recipient for this file.")

	# Get/set up data for KMS.
	request.session['key'] = request.device_assn.secret
	try:
		clearkey = decrypt_cipherkey(request, attachment, ss=ss)
	except KeyInvalidException:
		return err_GE021()

	url = attachment.decrypt_url(request, key=clearkey)
	if (url[0:4] == 'file'):
		response = HttpResponse(content_type=attachment.content_type)
		attachment.get_file(request, response, key=clearkey)
		return response

	elif (url[0:4] == 'http'):
		# This is likely a fully qualified URL
		if (not attachment.encrypted):
			return HttpResponseRedirect(url)
		else:
			# Download and decrypt this attachment.
			pass
	else:
		raise Exception('A seemingly invalid URL has been stored: %s, for '
			'MessageAttachment %s.' % (url, attachment_id,))
예제 #2
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)
예제 #3
0
def brokerEditProfileLogic(request):
	if (request.method != 'POST'):
		return err_GE002()

	old_url = None
	broker = request.role_user
	if broker.user.photo:
		old_url = broker.user.photo.name

	broker_form = BrokerForm(request.POST, instance=broker)
	if not broker_form.is_valid():
		return err_GE031(broker_form)

	user_form = BrokerUserForm(request.POST, request.FILES, instance=broker.user)
	if not user_form.is_valid():
		return err_GE031(user_form)

	broker_form.save()
	user_form.save()

	new_url = None
	if broker.user.photo:
		new_url = broker.user.photo.name
	ImageHelper.generate_image(old_url, new_url)

	return HttpJSONSuccessResponse()
예제 #4
0
def brokerEditProfileLogic(request):
    if (request.method != 'POST'):
        return err_GE002()

    old_url = None
    broker = request.role_user
    if broker.user.photo:
        old_url = broker.user.photo.name

    broker_form = BrokerForm(request.POST, instance=broker)
    if not broker_form.is_valid():
        return err_GE031(broker_form)

    user_form = BrokerUserForm(request.POST,
                               request.FILES,
                               instance=broker.user)
    if not user_form.is_valid():
        return err_GE031(user_form)

    broker_form.save()
    user_form.save()

    new_url = None
    if broker.user.photo:
        new_url = broker.user.photo.name
    ImageHelper.generate_image(old_url, new_url)

    return HttpJSONSuccessResponse()
예제 #5
0
	def testCreateOfficeStaff(self):
		data = {
			'username':get_random_username(),
			'first_name':'c',
			'last_name':'tian',
			'mobile_phone':9001111111,
			'gender':'M',
			'email':'*****@*****.**',
			'lat':0.0, 
			'longit':0.0, 
			'address1':'address1', 
			'address2':'address2', 
			'city':'Chicago', 
			'state':'IL', 
			'zip':60601,
			'user_type':1,
			'office_lat':41.885805,
			'office_longit':-87.6229106,
			'staff_type':3,
		}

		response = self.client.post(reverse('MHLogin.api.v1.views_users.createOfficeStaff'), data, **self.extra)
		self.assertEqual(response.status_code, 200, response.status_code)
		self.assertEqual(response.content, HttpJSONSuccessResponse().content, response.status_code)

		response = self.client.post(reverse('MHLogin.api.v1.views_users.createOfficeStaff'), **self.extra)
		self.assertEqual(json.loads(response.content)['errno'], 'GE031', response.status_code)
	
		response = self.client.get(reverse('MHLogin.api.v1.views_users.createOfficeStaff'), data, **self.extra)
		self.assertEqual(response.content, err_GE002().content, response.status_code)
예제 #6
0
def composeReferLogic(request, api_secret=None, ss=None):
    if (request.method != 'POST'):
        return err_GE002()

    form = MessageReferForm(request.POST, request.FILES)
    if (not form.is_valid()):
        return err_GE031(form)

    sender = request.user
    sender_role_user = request.role_user
    subject = u'Refer'
    body = form.cleaned_data['reason_of_refer']
    recipients = form.cleaned_data['user_recipients']
    attachments = []
    if ('attachments' in request.FILES):
        attachments = request.FILES.getlist('attachments')

    createNewMessage(request,
                     sender,
                     sender_role_user,
                     recipients,
                     body,
                     ccs=None,
                     subject=subject,
                     uploads=attachments,
                     file_data_list=None,
                     refer_data=form.cleaned_data,
                     api_secret=api_secret,
                     ss=ss)
    return HttpJSONSuccessResponse()
예제 #7
0
	def testComposeRefer(self):
		response = self.client.get(reverse(
			'MHLogin.api.v1.views_messaging.composeRefer'), **self.extra)
		self.assertEqual(response.content, err_GE002().content, response.status_code)

		response = self.client.post(reverse(
			'MHLogin.api.v1.views_messaging.composeRefer'), **self.extra)
		self.assertEqual(response.status_code, 400, response.status_code)
예제 #8
0
	def testPracticeSearch(self):
		response = self.client.post(reverse\
				('MHLogin.api.v1.views_practices.practiceSearch'), **self.extra)
		self.assertEqual(response.status_code, 200, response.status_code)

		response = self.client.get\
				(reverse('MHLogin.api.v1.views_practices.practiceSearch'), **self.extra)
		self.assertEqual(response.content, err_GE002().content, response.status_code)
예제 #9
0
def changePasswordLogic(request):
	if (request.method != 'POST'):
		return err_GE002()
	form = ChangePasswordForm(request.mhluser, request.POST)
	if (not form.is_valid()):
		return err_GE031(form)
	change_pass_common(form, request)
	return HttpJSONSuccessResponse()
예제 #10
0
def changePasswordLogic(request):
    if (request.method != 'POST'):
        return err_GE002()
    form = ChangePasswordForm(request.mhluser, request.POST)
    if (not form.is_valid()):
        return err_GE031(form)
    change_pass_common(form, request)
    return HttpJSONSuccessResponse()
예제 #11
0
def smartPhoneCallLogic(request, *args, **kwargs):
	if (request.method != 'POST'):
		return err_GE002()
	if (not request.mhluser.mobile_phone):
		return err_TE005()
	called_number = ''
	called_mhluser = None
	form = USNumberForm(request.POST)
	if(not form.is_valid()):
		return err_GE031(form)

	if('user_id' in kwargs):
		user_id = kwargs['user_id']
		called_mhluser = MHLUser.objects.filter(pk=user_id)
		if (not called_mhluser):
			return err_GE010()
	
		called_mhluser = called_mhluser[0]
	
		if (not called_mhluser.mobile_phone):
			return err_TE005()
		called_number = called_mhluser.mobile_phone
	if('practice_id' in kwargs):
		practice_id = kwargs['practice_id']
		called_practice = PracticeLocation.objects.filter(id=practice_id)
		if not called_practice:
			return err_GE010()

		called_number = called_practice[0].practice_phone
		if called_practice[0].backline_phone:
			called_number = called_practice[0].backline_phone

		if (not called_number):
			return err_TE006()
	elif('number' in request.POST):
		called_number = form.cleaned_data['number']
	elif('number' in kwargs):
		called_number = kwargs['number']
	if not called_mhluser and not called_number:
		return err_TE003()

	log = Click2Call_Log()
	log.caller = request.mhluser
	log.called_user = called_mhluser
	log.called_number = called_number
	log.caller_number = form.cleaned_data['caller_number']
	role_user = request.role_user
	if role_user and hasattr(role_user, "current_site") and role_user.current_site:
		log.current_site = role_user.current_site
	log.source = 'APP'
	log.save()

	data = {
		'number': ''.join(['+1',str(settings.TWILIO_C2C_NUMBER)])
	}

	return HttpJSONSuccessResponse(data=data)
예제 #12
0
def practiceSearch(request):
	if (request.method != 'POST'):
		return err_GE002()
	form = PracticeSearchForm(request.POST)
	if (not form.is_valid()):
		return err_GE031(form)

	data = getPracticeList(form.cleaned_data, org_type_id=RESERVED_ORGANIZATION_TYPE_ID_PRACTICE)
	return HttpJSONSuccessResponse(data=data)
예제 #13
0
def siteSearch(request):
	if (request.method != 'POST'):
		return err_GE002()
	form = SiteSearchForm(request.POST)
	if (not form.is_valid()):
		return err_GE031(form)

	data = getSiteList(form.cleaned_data)
	return HttpJSONSuccessResponse(data=data)
예제 #14
0
def createProvider(request):
	if (request.method != 'POST'):
		return err_GE002()
	form = CreateProviderForm(request.POST)
	if (not form.is_valid()):
		return err_GE031(form)

	createNewProvider(form, request.role_user)
	return HttpJSONSuccessResponse()
예제 #15
0
    def testSiteSearch(self):
        response = self.client.post(
            reverse('MHLogin.api.v1.views_sites.siteSearch'), **self.extra)
        self.assertEqual(response.status_code, 200, response.status_code)

        response = self.client.get(
            reverse('MHLogin.api.v1.views_sites.siteSearch'), **self.extra)
        self.assertEqual(response.content,
                         err_GE002().content, response.status_code)
예제 #16
0
def searchStaff(request):
	if (request.method != 'POST'):
		return err_GE002()
	form = StaffSearchForm(request.POST)
	if (not form.is_valid()):
		return err_GE031(form)

	data = getStaffList(form.cleaned_data)
	return HttpJSONSuccessResponse(data=data)
예제 #17
0
def listTasksLogic(request):
	if (request.method != 'POST'):
		return err_GE002()
	form = TaskListForm(request.POST)
	if (not form.is_valid()):
		return err_GE031(form)

	data = getFollowUpList(form.cleaned_data, request.mhluser.id)
	return HttpJSONSuccessResponse(data=data)
예제 #18
0
def updateTaskLogic(request, task_id):
	if (request.method != 'POST'):
		return err_GE002()
	form = UpdateTaskForm(request.POST)
	if (not form.is_valid()):
		return err_GE031(form)

	updateFollowUp(form.cleaned_data, task_id, request.mhluser.id)
	return HttpJSONSuccessResponse()
예제 #19
0
	def testListTasks(self):
		response = self.client.post(reverse(
			'MHLogin.api.v1.views_followups.listTasks'), **self.extra)
		self.assertEqual(response.status_code, 200, response.status_code)
		msg = json.loads(response.content)
		self.assertEqual(len(msg), 2)
		
		response = self.client.get(reverse(
			'MHLogin.api.v1.views_followups.listTasks'), **self.extra)
		self.assertEqual(response.content, err_GE002().content, response.status_code)
예제 #20
0
	def testGetSentMessages(self):
		response = self.client.get(reverse(
			'MHLogin.api.v1.views_messaging.getReceivedMessages'), **self.extra)
		self.assertEqual(response.content, err_GE002().content, response.status_code)

		response = self.client.post(reverse(
			'MHLogin.api.v1.views_messaging.getSentMessages'), **self.extra)
		self.assertEqual(response.status_code, 200, response.status_code)
		msg = json.loads(response.content)
		self.assertEqual(len(msg), 2)
예제 #21
0
def newTaskLogic(request):
	if (request.method != 'POST'):
		return err_GE002()
	form = NewTaskForm(request.POST)
	if (not form.is_valid()):
		return err_GE031(form)

	task = createFollowUp(form.cleaned_data, request.mhluser.id)
	data = {'id': task.id}
	return HttpJSONSuccessResponse(data=data)
예제 #22
0
    def testListTasks(self):
        response = self.client.post(
            reverse('MHLogin.api.v1.views_followups.listTasks'), **self.extra)
        self.assertEqual(response.status_code, 200, response.status_code)
        msg = json.loads(response.content)
        self.assertEqual(len(msg), 2)

        response = self.client.get(
            reverse('MHLogin.api.v1.views_followups.listTasks'), **self.extra)
        self.assertEqual(response.content,
                         err_GE002().content, response.status_code)
예제 #23
0
	def testUpdateTask(self):
		task = FollowUps(user=self.user, priority=1)
		task.save()
		response = self.client.get(reverse(
			'MHLogin.api.v1.views_followups.updateTask',args=(task.id,)), **self.extra)
		self.assertEqual(response.content, err_GE002().content, response.status_code)

		response = self.client.post(reverse(
			'MHLogin.api.v1.views_followups.updateTask',args=(task.id,)), **self.extra)
		self.assertEqual(response.status_code, 200, response.status_code)
		msg = json.loads(response.content)
		self.assertEqual(len(msg), 2)
예제 #24
0
def updateMobilePhoneLogic(request):
	if (request.method != 'POST'):
		return err_GE002()
	form = UpdateMobileForm(request.POST)
	if (not form.is_valid()):
		return err_GE031(form)
	mhluser_id = request.mhluser.id
	mobile_phone = form.cleaned_data["mobile_phone"]
	if has_mhluser_with_mobile_phone(mobile_phone, mhluser_id): 
		return err_AM020()

	MHLUser.objects.filter(id=mhluser_id).update(mobile_phone=mobile_phone)
	return HttpJSONSuccessResponse()
예제 #25
0
def createBroker(request):
	if (request.method != 'POST'):
		return err_GE002()

	broker_form = CreateBrokerForm(request.POST)
	mhluser_form = CreateBrokerMHLUserForm(request.POST, request.FILES)
	if (not mhluser_form.is_valid()):
		return err_GE031(mhluser_form)
	if (not broker_form.is_valid()):
		return err_GE031(broker_form)

	createNewBroker(mhluser_form, broker_form, request.role_user)
	return HttpJSONSuccessResponse()
예제 #26
0
def updateMobilePhoneLogic(request):
    if (request.method != 'POST'):
        return err_GE002()
    form = UpdateMobileForm(request.POST)
    if (not form.is_valid()):
        return err_GE031(form)
    mhluser_id = request.mhluser.id
    mobile_phone = form.cleaned_data["mobile_phone"]
    if has_mhluser_with_mobile_phone(mobile_phone, mhluser_id):
        return err_AM020()

    MHLUser.objects.filter(id=mhluser_id).update(mobile_phone=mobile_phone)
    return HttpJSONSuccessResponse()
예제 #27
0
def createOfficeStaff(request):
	if (request.method != 'POST'):
		return err_GE002()

	staff_form = CreateOfficeStaffForm(request.POST)
	mhluser_form = CreateMHLUserForm(request.POST, request.FILES)
	if (not mhluser_form.is_valid()):
		return err_GE031(mhluser_form)
	if (not staff_form.is_valid()):
		return err_GE031(staff_form)

	createNewOfficeStaff(mhluser_form, staff_form, request.role_user)
	return HttpJSONSuccessResponse()
예제 #28
0
	def testNewTask(self):
		data={'description':'the test is test newTask',
			'due':'20',
			'priority':'1'}
		response = self.client.post(reverse(
			'MHLogin.api.v1.views_followups.newTask'), data, **self.extra)
		self.assertEqual(response.status_code, 200, response.status_code)
		msg = json.loads(response.content)
		self.assertEqual(len(msg), 2)
		
		response = self.client.get(reverse(
			'MHLogin.api.v1.views_followups.newTask'), **self.extra)
		self.assertEqual(response.content, err_GE002().content, response.status_code)
예제 #29
0
def getReferPDFLogic(request, refer_id, ss=None):
    """
	get_refer_pdf

	:param request: Request info
	:type request: django.core.handlers.wsgi.WSGIRequest
	:param refer_id: referall id
	:type refer_id: uuid
	:returns: django.http.HttpResponse -- the result in an HttpResonse object
	"""
    if (request.method != 'POST'):
        return err_GE002()
    form = MsgGetForm(request.POST)
    if (not form.is_valid()):
        return err_GE031(form)

    refer = get_object_or_404(MessageRefer, uuid=refer_id)

    message = refer.message
    if ((message.sender and request.user.pk != message.sender.pk) and
            not ((request.user.pk, ) in message.recipients.values_list('id') or
                 (request.user.pk, ) in message.ccs.values_list('id'))):
        return err403(
            request,
            err_msg=_("You don't seem to be a valid recipient for this file."))

    # special for mobile app api
    # Get/set up data for KMS.
    request.session['key'] = request.device_assn.secret
    try:
        clearkey = decrypt_cipherkey(request, refer, ss=ss)
    except KeyInvalidException:
        return err_GE021()

    try:
        response = refer.get_file(request, key=clearkey)
        return response
    except Exception as e:
        err_email_body = '\n'.join([
            ('PDF file not exist!'),
            ''.join(['Server: ', settings.SERVER_ADDRESS]),
            ''.join(['Session: ',
                     str(request.session.session_key)]),
            ''.join(['Message: ', (u'PDF file not exist in media/refer/pdf')]),
            ''.join(['Exception: ', str(e)]),
            ''.join(['Exception data: ', str(e.args)]),
        ])
        mail_admins(_('PDF folder not exist'), err_email_body)
        raise Exception(
            _('A seemingly invalid URL has been stored for Refer Pdf.'))
예제 #30
0
def markMessageLogic(request, read_flag=True):
    if (request.method != 'POST'):
        return err_GE002()
    form = MsgBatchIDForm(request.POST)
    if (not form.is_valid()):
        return err_GE031(form)
    read_timestamp = 0
    if read_flag:
        read_timestamp = int(time.time())
    message_ids = form.cleaned_data['message_ids']
    MessageBodyUserStatus.objects.filter(user=request.user,
     read_flag=not read_flag, msg_body__message__uuid__in=message_ids).\
      update(read_flag=read_flag, read_timestamp=read_timestamp)
    return HttpJSONSuccessResponse()
예제 #31
0
def markMessageLogic(request, read_flag=True):
	if (request.method != 'POST'):
		return err_GE002()
	form = MsgBatchIDForm(request.POST)
	if (not form.is_valid()):
		return err_GE031(form)
	read_timestamp = 0
	if read_flag:
		read_timestamp = int(time.time())
	message_ids = form.cleaned_data['message_ids']
	MessageBodyUserStatus.objects.filter(user=request.user, 
		read_flag=not read_flag, msg_body__message__uuid__in=message_ids).\
			update(read_flag=read_flag, read_timestamp=read_timestamp)
	return HttpJSONSuccessResponse()
예제 #32
0
    def testUpdateTask(self):
        task = FollowUps(user=self.user, priority=1)
        task.save()
        response = self.client.get(
            reverse('MHLogin.api.v1.views_followups.updateTask',
                    args=(task.id, )), **self.extra)
        self.assertEqual(response.content,
                         err_GE002().content, response.status_code)

        response = self.client.post(
            reverse('MHLogin.api.v1.views_followups.updateTask',
                    args=(task.id, )), **self.extra)
        self.assertEqual(response.status_code, 200, response.status_code)
        msg = json.loads(response.content)
        self.assertEqual(len(msg), 2)
예제 #33
0
def providerEditProfileLogic(request):
    if (request.method != 'POST'):
        return err_GE002()
    provider = request.role_user
    phys = Physician.objects.filter(user=provider)
    if phys and len(phys):
        phys = phys[0]
    else:
        phys = None

    old_url = None
    if provider.photo:
        old_url = provider.photo.name
    provider_form = ProviderForm(data=request.POST,
                                 files=request.FILES,
                                 instance=provider)
    if (not provider_form.is_valid()):
        return err_GE031(provider_form)

    physician_form = None
    if (phys):
        physician_form = PhysicianForm(request.POST, instance=phys)
        if (not physician_form.is_valid()):
            return err_GE031(physician_form)

    provider = provider_form.save(commit=False)
    provider.lat = provider_form.cleaned_data['lat']
    provider.longit = provider_form.cleaned_data['longit']
    provider.licensure_states = provider_form.cleaned_data['licensure_states']
    #add by xlin in 20120611 for issue897 that add city, address, zip into database
    provider.address1 = provider_form.cleaned_data['address1']
    provider.address2 = provider_form.cleaned_data['address2']
    provider.city = provider_form.cleaned_data['city']
    provider.state = provider_form.cleaned_data['state']
    provider.zip = provider_form.cleaned_data['zip']
    provider.save()
    if (physician_form):
        physician_form.save()

    new_url = None
    if provider.photo:
        new_url = provider.photo.name

    #thumbnail creating code moved from here to save method of provider mode
    #use common method to generate
    ImageHelper.generate_image(old_url, new_url)

    return HttpJSONSuccessResponse()
예제 #34
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)
예제 #35
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)
예제 #36
0
def getReferPDFLogic(request, refer_id, ss=None):
	"""
	get_refer_pdf

	:param request: Request info
	:type request: django.core.handlers.wsgi.WSGIRequest
	:param refer_id: referall id
	:type refer_id: uuid
	:returns: django.http.HttpResponse -- the result in an HttpResonse object
	"""
	if (request.method != 'POST'):
		return err_GE002()
	form = MsgGetForm(request.POST)
	if (not form.is_valid()):
		return err_GE031(form)

	refer = get_object_or_404(MessageRefer, uuid=refer_id)

	message = refer.message
	if ((message.sender and request.user.pk != message.sender.pk) and 
		not ((request.user.pk,) in message.recipients.values_list('id') or 
			(request.user.pk,) in message.ccs.values_list('id'))):
		return err403(request, err_msg=_("You don't seem to be a valid recipient for this file."))

	# special for mobile app api
	# Get/set up data for KMS.
	request.session['key'] = request.device_assn.secret
	try:
		clearkey = decrypt_cipherkey(request, refer, ss=ss)
	except KeyInvalidException:
		return err_GE021()

	try:
		response = refer.get_file(request, key=clearkey)
		return response
	except Exception as e: 
		err_email_body = '\n'.join([
				('PDF file not exist!'),
				''.join(['Server: ', settings.SERVER_ADDRESS]),
				''.join(['Session: ', str(request.session.session_key)]),
				''.join(['Message: ', (u'PDF file not exist in media/refer/pdf')]),
				''.join(['Exception: ', str(e)]),
				''.join(['Exception data: ', str(e.args)]),
			])
		mail_admins(_('PDF folder not exist'), err_email_body)
		raise Exception(_('A seemingly invalid URL has been stored for Refer Pdf.'))
예제 #37
0
    def testNewTask(self):
        data = {
            'description': 'the test is test newTask',
            'due': '20',
            'priority': '1'
        }
        response = self.client.post(
            reverse('MHLogin.api.v1.views_followups.newTask'), data,
            **self.extra)
        self.assertEqual(response.status_code, 200, response.status_code)
        msg = json.loads(response.content)
        self.assertEqual(len(msg), 2)

        response = self.client.get(
            reverse('MHLogin.api.v1.views_followups.newTask'), **self.extra)
        self.assertEqual(response.content,
                         err_GE002().content, response.status_code)
예제 #38
0
def providerEditProfileLogic(request):
	if (request.method != 'POST'):
		return err_GE002()
	provider = request.role_user
	phys = Physician.objects.filter(user=provider)
	if phys and len(phys):
		phys = phys[0]
	else:
		phys = None

	old_url = None
	if provider.photo:
		old_url = provider.photo.name
	provider_form = ProviderForm(data=request.POST, files=request.FILES, instance=provider)
	if (not provider_form.is_valid()):
		return err_GE031(provider_form)

	physician_form = None
	if (phys):
		physician_form = PhysicianForm(request.POST, instance=phys)
		if (not physician_form.is_valid()):
			return err_GE031(physician_form)
	
	provider = provider_form.save(commit=False)
	provider.lat = provider_form.cleaned_data['lat']
	provider.longit = provider_form.cleaned_data['longit']
	provider.licensure_states = provider_form.cleaned_data['licensure_states']
	#add by xlin in 20120611 for issue897 that add city, address, zip into database
	provider.address1 = provider_form.cleaned_data['address1']
	provider.address2 = provider_form.cleaned_data['address2']
	provider.city = provider_form.cleaned_data['city']
	provider.state = provider_form.cleaned_data['state']
	provider.zip = provider_form.cleaned_data['zip']
	provider.save()
	if (physician_form):
		physician_form.save()
	
	new_url = None
	if provider.photo:
		new_url = provider.photo.name
	
	#thumbnail creating code moved from here to save method of provider mode
	#use common method to generate
	ImageHelper.generate_image(old_url, new_url)

	return HttpJSONSuccessResponse()
예제 #39
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)
예제 #40
0
def getAttachmentLogic(request, message_id, attachment_id, ss=None):
    if (request.method != 'POST'):
        return err_GE002()

    attachment = get_object_or_404(MessageAttachment,
                                   message__uuid=message_id,
                                   uuid=attachment_id)
    message = attachment.message

    if ((message.sender and request.user.pk != message.sender.pk) and
            not ((request.user.pk, ) in message.recipients.values_list('id') or
                 (request.user.pk, ) in message.ccs.values_list('id'))):
        return err403(
            request,
            err_msg="You don't seem to be a valid recipient for this file.")

    # Get/set up data for KMS.
    request.session['key'] = request.device_assn.secret
    try:
        clearkey = decrypt_cipherkey(request, attachment, ss=ss)
    except KeyInvalidException:
        return err_GE021()

    url = attachment.decrypt_url(request, key=clearkey)
    if (url[0:4] == 'file'):
        response = HttpResponse(content_type=attachment.content_type)
        attachment.get_file(request, response, key=clearkey)
        return response

    elif (url[0:4] == 'http'):
        # This is likely a fully qualified URL
        if (not attachment.encrypted):
            return HttpResponseRedirect(url)
        else:
            # Download and decrypt this attachment.
            pass
    else:
        raise Exception('A seemingly invalid URL has been stored: %s, for '
                        'MessageAttachment %s.' % (
                            url,
                            attachment_id,
                        ))
예제 #41
0
	def testPageUser(self):
		response = self.client.get(
			reverse('MHLogin.api.v1.views_dcom.pageUser', args=(0,)), **self.extra)
		self.assertEqual(response.content, err_GE002().content, response.status_code)

		response = self.client.post(
			reverse('MHLogin.api.v1.views_dcom.pageUser', args=(0,)), **self.extra)
		self.assertEqual(json.loads(response.content)['errno'], 'GE031', response.status_code)

		data = {'number': '2561234566'}
		response = self.client.post(
			reverse('MHLogin.api.v1.views_dcom.pageUser', args=(0,)), data, **self.extra)
		self.assertEqual(json.loads(response.content)['errno'], 'GE010', response.status_code)

		provider1 = create_user(get_random_username(), 
			"provider_first", "provider_last", "demo", "555 Bryant St.",
				"Palo Alto", "CA", "94306", uklass=Provider)
		provider1.address2 = 'suzhou china'
		provider1.user.save()
		provider1.save()
		response = self.client.post(reverse('MHLogin.api.v1.views_dcom.pageUser',
			args=(provider1.id,)), data, **self.extra)
		self.assertEqual(json.loads(response.content)['errno'], 'TE002', response.status_code)

		provider1.pager = 2561234567
		provider1.save()
		response = self.client.post(reverse('MHLogin.api.v1.views_dcom.pageUser', 
			args=(provider1.id,)), data, **self.extra)
		self.assertEqual(response.content, HttpJSONSuccessResponse().content, response.status_code)

		staff1 = create_office_staff(get_random_username(), "staff_first1", "staff_last1", 
			"demo", "suzhou china", "suzhou", "AB", "25011", uklass=OfficeStaff)
		staff1.save()
		response = self.client.post(reverse('MHLogin.api.v1.views_dcom.pageUser', 
			args=(staff1.user.id,)), data, **self.extra)
		self.assertEqual(json.loads(response.content)['errno'], 'TE002', response.status_code)

		staff1.pager = 2561234568
		staff1.save()
		response = self.client.post(reverse('MHLogin.api.v1.views_dcom.pageUser',
			args=(staff1.user.id,)), data, **self.extra)
		self.assertEqual(response.content, HttpJSONSuccessResponse().content, response.status_code)
예제 #42
0
def updateReferLogic(request, refer_id):
    """
	update_refer

	:param request: Recipient info
	:type request: django.core.handlers.wsgi.WSGIRequest
	:param refer_id: The refferal's id
	:type refer_id: uuid
	:returns: {
		'data': {},
		'warnings': {},
		}
	"""
    if (request.method != 'POST'):
        return err_GE002()
    form = ReferEditForm(request.POST)
    if (not form.is_valid()):
        return err_GE031(form)

    updateRefer(request, form, refer_id)
    return HttpJSONSuccessResponse()
예제 #43
0
def getReceivedMessagesLogic(request, return_python=False):
    """
	Gets a list of the received message headers.

	If return_python is true, this will just return the object that would have
	been converted to JSON format.
	"""

    if (request.method != 'POST'):
        return err_GE002()
    form = MsgListForm(request.POST)
    if (not form.is_valid()):
        return err_GE031(form)
    data = getReceivedMessageListData(request.user, form.cleaned_data)

    if (return_python):
        return {
            'data': data,
            'warnings': {},
        }
    return HttpJSONSuccessResponse(data=data)
예제 #44
0
def composeReferLogic(request, api_secret=None, ss=None):
	if (request.method != 'POST'):
		return err_GE002()

	form = MessageReferForm(request.POST, request.FILES)
	if (not form.is_valid()):
		return err_GE031(form)

	sender = request.user
	sender_role_user = request.role_user
	subject = u'Refer'
	body = form.cleaned_data['reason_of_refer']
	recipients = form.cleaned_data['user_recipients']
	attachments = []
	if ('attachments' in request.FILES):
		attachments = request.FILES.getlist('attachments')

	createNewMessage(request, sender, sender_role_user, recipients, body,
					ccs=None, subject=subject, uploads=attachments, file_data_list=None,
					refer_data=form.cleaned_data, api_secret=api_secret, ss=ss)
	return HttpJSONSuccessResponse()
예제 #45
0
def updateReferLogic(request, refer_id):
	"""
	update_refer

	:param request: Recipient info
	:type request: django.core.handlers.wsgi.WSGIRequest
	:param refer_id: The refferal's id
	:type refer_id: uuid
	:returns: {
		'data': {},
		'warnings': {},
		}
	"""
	if (request.method != 'POST'):
		return err_GE002()
	form = ReferEditForm(request.POST)
	if (not form.is_valid()):
		return err_GE031(form)

	updateRefer(request, form, refer_id)
	return HttpJSONSuccessResponse()
예제 #46
0
def getReceivedMessagesLogic(request, return_python=False):
	"""
	Gets a list of the received message headers.

	If return_python is true, this will just return the object that would have
	been converted to JSON format.
	"""

	if (request.method != 'POST'):
		return err_GE002()
	form = MsgListForm(request.POST)
	if (not form.is_valid()):
		return err_GE031(form)
	data = getReceivedMessageListData(request.user, form.cleaned_data)

	if (return_python):
		return {
			'data': data,
			'warnings': {},
		}
	return HttpJSONSuccessResponse(data=data)
예제 #47
0
def pageUserLogic(request, user_id):
	if (request.method != 'POST'):
		return err_GE002()
	form = PagerNumberForm(request.POST)
	if (not form.is_valid()):
		return err_GE031(form)
	
	if (not MHLUser.objects.filter(pk=user_id).exists()):
		return err_GE010()
	
	provider = None
	try:
		provider = Provider.objects.get(user=user_id)
	except Provider.DoesNotExist:
		# This is ok.
		pass
	
	office_staff = None
	try:
		office_staff = OfficeStaff.objects.get(user=user_id)
	except OfficeStaff.DoesNotExist:
		# this is okay.
		pass
	
	paged = None # The user getting paged.
	if (provider):
		paged = provider
		if (not provider.pager):
			return err_TE002()
	elif (office_staff):
		paged = office_staff
		if (not office_staff.pager):
			return err_TE002()
	else:
		# Error! User doesn't appear to be a provider or an office staffer.
		return err_GE010()
	
	send_page(request.mhluser, paged, form.cleaned_data['number'])
	return HttpJSONSuccessResponse()
예제 #48
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)
예제 #49
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)