def test_cancel_invite(self): invitation_id = 0 email = '*****@*****.**' request = generateHttpRequest() #an office staff login staff = OfficeStaff(user=request.user) staff.save() assn = SmartPhoneAssn.all_objects.get(device_id=request.REQUEST['DCOM_DEVICE_ID']) assn.user_type = 101 assn.save(request) result = cancel_invite(request, invitation_id) self.assertEqual(result.status_code, 403) #a provider login assn = SmartPhoneAssn.all_objects.get(device_id=request.REQUEST['DCOM_DEVICE_ID']) assn.user_type = 1 assn.save(request) #404 not found invitation try: cancel_invite(request, invitation_id) except Http404: self.assertRaises(Http404()) code = 'abcdefg' usertype = 1 invite = Invitation(code=code, sender=request.user, recipient=email, userType=usertype) invite.save() result = cancel_invite(request, invite.pk) self.assertEqual(result.status_code, 200) msg = json.loads(result.content) self.assertEqual(msg['data'], {}) self.assertEqual(Invitation.objects.count(), 0)
def test_views_invites(self): request = generateHttpRequest() #an office staff login staff = OfficeStaff(user=request.user) staff.save() assn = SmartPhoneAssn.all_objects.get( device_id=request.REQUEST['DCOM_DEVICE_ID']) assn.user_type = 101 assn.save(request) result = list_invites(request) self.assertEqual(result.status_code, 403) #a provider login assn = SmartPhoneAssn.all_objects.get( device_id=request.REQUEST['DCOM_DEVICE_ID']) assn.user_type = 1 assn.save(request) #find 0 invitation result = list_invites(request) self.assertEqual(result.status_code, 200) msg = json.loads(result.content) self.assertEqual(len(msg['data']['invitations']), 0) usertype = 1 #invite has assignPractice organization_type = create_org_type() practice = ct_practice('name', organization_type) code = '12345' email = '*****@*****.**' invite = Invitation(code=code, sender=request.user, recipient=email, userType=usertype, assignPractice=practice) invite.save() result = list_invites(request) self.assertEqual(result.status_code, 200) msg = json.loads(result.content) self.assertEqual(len(msg['data']['invitations']), 1)
def test_resend_invite(self): email = '*****@*****.**' invitation_id = 0 request = generateHttpRequest() #get method request.method = 'GET' result = resend_invite(request, invitation_id) self.assertEqual(result.status_code, 400) msg = json.loads(result.content) self.assertEqual(msg['errno'], 'GE002') #post method request.method = 'POST' #an office staff login staff = OfficeStaff(user=request.user) staff.save() assn = SmartPhoneAssn.all_objects.get(device_id=request.REQUEST['DCOM_DEVICE_ID']) assn.user_type = 101 assn.save(request) result = resend_invite(request, invitation_id) self.assertEqual(result.status_code, 403) #a provider login assn = SmartPhoneAssn.all_objects.get(device_id=request.REQUEST['DCOM_DEVICE_ID']) assn.user_type = 1 assn.save(request) #invalid invitation id note = 'test' request.POST['note'] = note try: resend_invite(request, invitation_id) except Http404: self.assertRaises(Http404()) usertype = 1 #another email errEmail = '*****@*****.**' code = '12345' invite = Invitation(code=code, sender=request.user, recipient=errEmail, userType=usertype) invite.save() result = resend_invite(request, invite.pk) self.assertEqual(result.status_code, 200) msg = json.loads(result.content) self.assertEqual(msg['data']['id'], invite.id) #use time setting request.POST['use_time_setting'] = True errEmail = '*****@*****.**' code = '12wsxs' invite = Invitation(code=code, sender=request.user, recipient=errEmail, userType=usertype) invite.save() result = resend_invite(request, invite.pk) self.assertEqual(result.status_code, 200) msg = json.loads(result.content) self.assertEqual(msg['data']['id'], invite.id)
def test_cancel_invite(self): invitation_id = 0 email = '*****@*****.**' request = generateHttpRequest() #an office staff login staff = OfficeStaff(user=request.user) staff.save() assn = SmartPhoneAssn.all_objects.get( device_id=request.REQUEST['DCOM_DEVICE_ID']) assn.user_type = 101 assn.save(request) result = cancel_invite(request, invitation_id) self.assertEqual(result.status_code, 403) #a provider login assn = SmartPhoneAssn.all_objects.get( device_id=request.REQUEST['DCOM_DEVICE_ID']) assn.user_type = 1 assn.save(request) #404 not found invitation try: cancel_invite(request, invitation_id) except Http404: self.assertRaises(Http404()) code = 'abcdefg' usertype = 1 invite = Invitation(code=code, sender=request.user, recipient=email, userType=usertype) invite.save() result = cancel_invite(request, invite.pk) self.assertEqual(result.status_code, 200) msg = json.loads(result.content) self.assertEqual(msg['data'], {}) self.assertEqual(Invitation.objects.count(), 0)
def test_views_invites(self): request = generateHttpRequest() #an office staff login staff = OfficeStaff(user=request.user) staff.save() assn = SmartPhoneAssn.all_objects.get(device_id=request.REQUEST['DCOM_DEVICE_ID']) assn.user_type = 101 assn.save(request) result = list_invites(request) self.assertEqual(result.status_code, 403) #a provider login assn = SmartPhoneAssn.all_objects.get(device_id=request.REQUEST['DCOM_DEVICE_ID']) assn.user_type = 1 assn.save(request) #find 0 invitation result = list_invites(request) self.assertEqual(result.status_code, 200) msg = json.loads(result.content) self.assertEqual(len(msg['data']['invitations']), 0) usertype = 1 #invite has assignPractice organization_type = create_org_type() practice = ct_practice('name', organization_type) code = '12345' email = '*****@*****.**' invite = Invitation(code=code, sender=request.user, recipient=email, userType=usertype, assignPractice=practice) invite.save() result = list_invites(request) self.assertEqual(result.status_code, 200) msg = json.loads(result.content) self.assertEqual(len(msg['data']['invitations']), 1)
def setUpClass(cls): clean_db_datas() cls.user = create_user('practicemgr1', 'lin', 'xing', 'demo') cls.user1 = create_user('practicemgr2', 'lin', 'xing', 'demo') practice = PracticeLocation(practice_name='test', practice_longit='0.1', practice_lat='0.0',) practice.save() practice1 = PracticeLocation(practice_name='test1', practice_longit='0.1', practice_lat='0.0',) practice1.save() OrganizationRelationship.objects.create(organization=practice,\ parent=practice1,create_time=int(time.time()),billing_flag=True) cls.practice = practice cls.practice1 = practice1 staff = OfficeStaff() staff.user = cls.user staff.office_lat = 0.0 staff.office_longit = 0.0 staff.current_practice = practice staff.save() staff.practices.add(practice) usertype = 1 code = '12345' email = '*****@*****.**' invite = Invitation(code=code, sender=cls.user1, recipient=email, userType=usertype, assignPractice=practice) invite.save() cls.invite = invite mgr = Office_Manager(user=staff, practice=practice, manager_role=2) mgr.save()
def invite_user_email(email, user_type, msg, user, practice): invite = Invitation.objects.filter(recipient=email, userType=user_type,\ assignPractice=practice) if invite: invite.resend_invite(msg) else: invite = Invitation() invite.recipient = email invite.assignPractice = practice invite.sender = user invite.userType = user_type invite.save_invitation(msg) if hasattr(invite, 'error'): raise invite.error
def new_invites(request): context = get_context(request) if (request.method == 'POST'): context['form'] = multiUserSendForm(request.POST, request.user) if (context['form'].is_valid()): mass_mail_msgs = [] test_flag = False if ('test' in context['form'].cleaned_data): test_flag = context['form'].cleaned_data['test'] for addr in context['form'].cleaned_data['emailAddresses']: invit = Invitation.objects.filter( sender=request.user, recipient=addr, userType=context['form'].cleaned_data['userType']) if invit: i = invit[0] i.requestTimestamp = datetime.datetime.now() else: i = Invitation( sender=request.user, recipient=addr, userType=context['form'].cleaned_data['userType'], testFlag=test_flag, ) i.generate_code() i.save() #msg_tuple = i.massmail_tuple(context['mhl_user_displayName'], #context['form'].cleaned_data['msg']) msg_tuple = i.massmail_tuple( context['form'].cleaned_data['msg']) if (msg_tuple): mass_mail_msgs.append(msg_tuple) if len(mass_mail_msgs): send_mass_mail(mass_mail_msgs, fail_silently=False) return HttpResponseRedirect(reverse('Sales_Dashboard')) else: context['form'] = multiUserSendForm() return render_to_response('invite_issue.html', context)
def new_invites(request): context = get_context(request) if (request.method == 'POST'): context['form'] = multiUserSendForm(request.POST, request.user) if (context['form'].is_valid()): mass_mail_msgs = [] test_flag = False if ('test' in context['form'].cleaned_data): test_flag = context['form'].cleaned_data['test'] for addr in context['form'].cleaned_data['emailAddresses']: invit = Invitation.objects.filter(sender=request.user, recipient=addr, userType=context['form'].cleaned_data['userType']) if invit: i = invit[0] i.requestTimestamp = datetime.datetime.now() else: i = Invitation( sender=request.user, recipient=addr, userType=context['form'].cleaned_data['userType'], testFlag=test_flag, ) i.generate_code() i.save() #msg_tuple = i.massmail_tuple(context['mhl_user_displayName'], #context['form'].cleaned_data['msg']) msg_tuple = i.massmail_tuple(context['form'].cleaned_data['msg']) if (msg_tuple): mass_mail_msgs.append(msg_tuple) if len(mass_mail_msgs): send_mass_mail(mass_mail_msgs, fail_silently=False) return HttpResponseRedirect(reverse('Sales_Dashboard')) else: context['form'] = multiUserSendForm() return render_to_response('invite_issue.html', context)
def test_cancelInvitation(self): #user is a manager staff = OfficeStaff(user=self.user) staff.current_practice = self.practice staff.save() staff.practices.add(self.practice) manager = Office_Manager(user=staff, practice=self.practice, manager_role=2) manager.save() #get method response = self.client.get( reverse('MHLogin.MHLPractices.views_ajax.cancelInvitation')) self.assertEqual(response.status_code, 200) msg = json.loads(response.content) self.assertEqual(msg[1], _('A server error has occured.')) #post method email = '*****@*****.**' user_type = 1 invite = Invitation(sender=self.user, recipient=email, assignPractice=self.practice, userType=user_type) invite.save() #there is no invite find data = {'email': '*****@*****.**', 'type': '0'} response = self.client.post( reverse('MHLogin.MHLPractices.views_ajax.cancelInvitation'), data=data) self.assertEqual(response.status_code, 200) msg = json.loads(response.content) self.assertEqual(msg[1], _('A server error has occured.')) #there is 1 invite find data = {'email': email, 'type': user_type} response = self.client.post( reverse('MHLogin.MHLPractices.views_ajax.cancelInvitation'), data=data) self.assertEqual(response.status_code, 200) msg = json.loads(response.content) self.assertEqual(msg[0], 'ok') self.assertEqual(Invitation.objects.count(), 0) #a new invite email2 = '*****@*****.**' invite2 = Invitation(sender=self.user, recipient=email2, assignPractice=self.practice, userType=user_type) invite2.save() data = {'email': email2, 'type': user_type} response = self.client.post( reverse('MHLogin.MHLPractices.views_ajax.cancelInvitation'), data=data) self.assertEqual(response.status_code, 200) msg = json.loads(response.content) self.assertEqual(msg[0], 'ok')
def new_invite(request): if (request.method != 'POST'): return err_GE002() user_type = int(request.user_type) role_user = request.role_user if USER_TYPE_OFFICE_STAFF == user_type: return err403(request) form = NewInviteForm(request.POST) if (not form.is_valid()): return err_GE031(form) invite_user_type = int(form.cleaned_data['invite_user_type']) invite_type = int(form.cleaned_data['invite_type']) recipient = form.cleaned_data['email'] if USER_TYPE_OFFICE_MANAGER != user_type and 2 == invite_type: return err403(request) if User.objects.filter(email=recipient).exists(): return err_IN002() note = '' if ('note' in form.cleaned_data and form.cleaned_data['note']): note = form.cleaned_data['note'] # if (Invitation.objects.filter(recipient=form.cleaned_data['email']).exists()): # err_obj = { # 'errno': 'IN001', # 'descr': _('Recipient already has an outstanding invitation'), # } # return HttpResponseBadRequest(content=json.dumps(err_obj), mimetype='application/json') current_practice = role_user.current_practice invites = Invitation.objects.filter(sender=request.user, recipient=form.cleaned_data['email'], userType=invite_user_type) if 2 == invite_type and current_practice: invites = invites.filter(assignPractice=current_practice) else: invites = invites.filter(assignPractice=None) if (len(invites) > 0): invite = invites[0] invite.resend_invite(msg=note) else: invite = Invitation( sender=request.user, recipient=recipient, userType=invite_user_type, ) if 2 == invite_type and current_practice: invite.assignPractice = current_practice invite.save() invite.email_invite(msg=note) use_time_setting = False if 'use_time_setting' in request.POST and request.POST['use_time_setting'] == 'true': use_time_setting = True user = request.user local_tz = getCurrentTimeZoneForUser(user) response = { 'data': { 'id':invite.id, 'timestamp': formatTimeSetting(user, invite.requestTimestamp, local_tz, use_time_setting), 'request_timestamp': convertDatetimeToUTCTimestamp(invite.requestTimestamp), }, 'warnings': {}, } return HttpResponse(content=json.dumps(response), mimetype='application/json')
def test_new_invite(self): usertype = 1 email = '*****@*****.**' email2 = '*****@*****.**' email3 = '*****@*****.**' email4 = '*****@*****.**' request = generateHttpRequest() #get method request.method = 'GET' result = new_invite(request) self.assertEqual(result.status_code, 400) msg = json.loads(result.content) self.assertEqual(msg['errno'], 'GE002') #post method request.method = 'POST' #an office staff login staff = OfficeStaff(user=request.user) staff.save() assn = SmartPhoneAssn.all_objects.get(device_id=request.REQUEST['DCOM_DEVICE_ID']) assn.user_type = 101 assn.save(request) result = new_invite(request) self.assertEqual(result.status_code, 403) #a provider login assn = SmartPhoneAssn.all_objects.get(device_id=request.REQUEST['DCOM_DEVICE_ID']) assn.user_type = 1 assn.save(request) #invalid form data request.POST['email'] = email request.POST['note'] = '2sxc' request.POST['invite_user_type'] = usertype request.POST['invite_type'] = 'sfsdf' result = new_invite(request) self.assertEqual(result.status_code, 400) msg = json.loads(result.content) self.assertEqual(msg['errno'], 'GE031') #valid form data but invite type is 2 request.POST['email'] = email request.POST['note'] = 'test' request.POST['invite_user_type'] = usertype request.POST['invite_type'] = 2 result = new_invite(request) self.assertEqual(result.status_code, 403) request.user.email = email request.user.save() #valid form data but user not exist request.POST['invite_type'] = 1 result = new_invite(request) self.assertEqual(result.status_code, 400) msg = json.loads(result.content) self.assertEqual(msg['errno'], 'IN002') #valid form data and not exist email request.POST['email'] = '*****@*****.**' result = new_invite(request) self.assertEqual(result.status_code, 200) msg = json.loads(result.content) id = Invitation.objects.all()[0].id self.assertEqual(msg['data']['id'], id) #manager and has current practice assn = SmartPhoneAssn.all_objects.get(device_id=request.REQUEST['DCOM_DEVICE_ID']) assn.user_type = 100 assn.save(request) request.POST['invite_type'] = 2 request.POST['email'] = email2 organization_type = create_org_type() practice = PracticeLocation(practice_name='test', practice_longit='0.1', practice_lat='0.0', mdcom_phone='8005550085', organization_type=organization_type) practice.save() user = OfficeStaff.objects.get(user=request.user) user.current_practice = practice user.save() result = new_invite(request) self.assertEqual(result.status_code, 200) msg = json.loads(result.content) id = Invitation.objects.get(recipient=email2).id self.assertEqual(msg['data']['id'], id) #resend invitation invite = Invitation(sender=request.user, recipient=email, userType=usertype) invite.save() request.POST['email'] = email3 result = new_invite(request) self.assertEqual(result.status_code, 200) msg = json.loads(result.content) id = Invitation.objects.get(recipient=email3).id self.assertEqual(msg['data']['id'], id) #user time setting request.POST['use_time_setting'] = True request.POST['email'] = email4 result = new_invite(request) self.assertEqual(result.status_code, 200) msg = json.loads(result.content) id = Invitation.objects.get(recipient=email4).id self.assertEqual(msg['data']['id'], id)
def test_new_invite(self): usertype = 1 email = '*****@*****.**' email2 = '*****@*****.**' email3 = '*****@*****.**' email4 = '*****@*****.**' request = generateHttpRequest() #get method request.method = 'GET' result = new_invite(request) self.assertEqual(result.status_code, 400) msg = json.loads(result.content) self.assertEqual(msg['errno'], 'GE002') #post method request.method = 'POST' #an office staff login staff = OfficeStaff(user=request.user) staff.save() assn = SmartPhoneAssn.all_objects.get( device_id=request.REQUEST['DCOM_DEVICE_ID']) assn.user_type = 101 assn.save(request) result = new_invite(request) self.assertEqual(result.status_code, 403) #a provider login assn = SmartPhoneAssn.all_objects.get( device_id=request.REQUEST['DCOM_DEVICE_ID']) assn.user_type = 1 assn.save(request) #invalid form data request.POST['email'] = email request.POST['note'] = '2sxc' request.POST['invite_user_type'] = usertype request.POST['invite_type'] = 'sfsdf' result = new_invite(request) self.assertEqual(result.status_code, 400) msg = json.loads(result.content) self.assertEqual(msg['errno'], 'GE031') #valid form data but invite type is 2 request.POST['email'] = email request.POST['note'] = 'test' request.POST['invite_user_type'] = usertype request.POST['invite_type'] = 2 result = new_invite(request) self.assertEqual(result.status_code, 403) request.user.email = email request.user.save() #valid form data but user not exist request.POST['invite_type'] = 1 result = new_invite(request) self.assertEqual(result.status_code, 400) msg = json.loads(result.content) self.assertEqual(msg['errno'], 'IN002') #valid form data and not exist email request.POST['email'] = '*****@*****.**' result = new_invite(request) self.assertEqual(result.status_code, 200) msg = json.loads(result.content) id = Invitation.objects.all()[0].id self.assertEqual(msg['data']['id'], id) #manager and has current practice assn = SmartPhoneAssn.all_objects.get( device_id=request.REQUEST['DCOM_DEVICE_ID']) assn.user_type = 100 assn.save(request) request.POST['invite_type'] = 2 request.POST['email'] = email2 organization_type = create_org_type() practice = PracticeLocation(practice_name='test', practice_longit='0.1', practice_lat='0.0', mdcom_phone='8005550085', organization_type=organization_type) practice.save() user = OfficeStaff.objects.get(user=request.user) user.current_practice = practice user.save() result = new_invite(request) self.assertEqual(result.status_code, 200) msg = json.loads(result.content) id = Invitation.objects.get(recipient=email2).id self.assertEqual(msg['data']['id'], id) #resend invitation invite = Invitation(sender=request.user, recipient=email, userType=usertype) invite.save() request.POST['email'] = email3 result = new_invite(request) self.assertEqual(result.status_code, 200) msg = json.loads(result.content) id = Invitation.objects.get(recipient=email3).id self.assertEqual(msg['data']['id'], id) #user time setting request.POST['use_time_setting'] = True request.POST['email'] = email4 result = new_invite(request) self.assertEqual(result.status_code, 200) msg = json.loads(result.content) id = Invitation.objects.get(recipient=email4).id self.assertEqual(msg['data']['id'], id)
def test_resend_invite(self): email = '*****@*****.**' invitation_id = 0 request = generateHttpRequest() #get method request.method = 'GET' result = resend_invite(request, invitation_id) self.assertEqual(result.status_code, 400) msg = json.loads(result.content) self.assertEqual(msg['errno'], 'GE002') #post method request.method = 'POST' #an office staff login staff = OfficeStaff(user=request.user) staff.save() assn = SmartPhoneAssn.all_objects.get( device_id=request.REQUEST['DCOM_DEVICE_ID']) assn.user_type = 101 assn.save(request) result = resend_invite(request, invitation_id) self.assertEqual(result.status_code, 403) #a provider login assn = SmartPhoneAssn.all_objects.get( device_id=request.REQUEST['DCOM_DEVICE_ID']) assn.user_type = 1 assn.save(request) #invalid invitation id note = 'test' request.POST['note'] = note try: resend_invite(request, invitation_id) except Http404: self.assertRaises(Http404()) usertype = 1 #another email errEmail = '*****@*****.**' code = '12345' invite = Invitation(code=code, sender=request.user, recipient=errEmail, userType=usertype) invite.save() result = resend_invite(request, invite.pk) self.assertEqual(result.status_code, 200) msg = json.loads(result.content) self.assertEqual(msg['data']['id'], invite.id) #use time setting request.POST['use_time_setting'] = True errEmail = '*****@*****.**' code = '12wsxs' invite = Invitation(code=code, sender=request.user, recipient=errEmail, userType=usertype) invite.save() result = resend_invite(request, invite.pk) self.assertEqual(result.status_code, 200) msg = json.loads(result.content) self.assertEqual(msg['data']['id'], invite.id)
def new_invite(request): if (request.method != 'POST'): return err_GE002() user_type = int(request.user_type) role_user = request.role_user if USER_TYPE_OFFICE_STAFF == user_type: return err403(request) form = NewInviteForm(request.POST) if (not form.is_valid()): return err_GE031(form) invite_user_type = int(form.cleaned_data['invite_user_type']) invite_type = int(form.cleaned_data['invite_type']) recipient = form.cleaned_data['email'] if USER_TYPE_OFFICE_MANAGER != user_type and 2 == invite_type: return err403(request) if User.objects.filter(email=recipient).exists(): return err_IN002() note = '' if ('note' in form.cleaned_data and form.cleaned_data['note']): note = form.cleaned_data['note'] # if (Invitation.objects.filter(recipient=form.cleaned_data['email']).exists()): # err_obj = { # 'errno': 'IN001', # 'descr': _('Recipient already has an outstanding invitation'), # } # return HttpResponseBadRequest(content=json.dumps(err_obj), mimetype='application/json') current_practice = role_user.current_practice invites = Invitation.objects.filter(sender=request.user, recipient=form.cleaned_data['email'], userType=invite_user_type) if 2 == invite_type and current_practice: invites = invites.filter(assignPractice=current_practice) else: invites = invites.filter(assignPractice=None) if (len(invites) > 0): invite = invites[0] invite.resend_invite(msg=note) else: invite = Invitation( sender=request.user, recipient=recipient, userType=invite_user_type, ) if 2 == invite_type and current_practice: invite.assignPractice = current_practice invite.save() invite.email_invite(msg=note) use_time_setting = False if 'use_time_setting' in request.POST and request.POST[ 'use_time_setting'] == 'true': use_time_setting = True user = request.user local_tz = getCurrentTimeZoneForUser(user) response = { 'data': { 'id': invite.id, 'timestamp': formatTimeSetting(user, invite.requestTimestamp, local_tz, use_time_setting), 'request_timestamp': convertDatetimeToUTCTimestamp(invite.requestTimestamp), }, 'warnings': {}, } return HttpResponse(content=json.dumps(response), mimetype='application/json')