def test_org_user_who_doesnt_need_prebuilt_gets_printout(self): app_ids = intake_factories.make_app_ids_for('a_pubdef') profile = user_accounts_factories.app_reviewer('a_pubdef') printout_url = query_params.get_url_for_ids( 'intake-pdf_printout_for_apps', app_ids) login(self.client, profile) response = self.client.get( query_params.get_url_for_ids(self.view_name, app_ids)) self.assertContains(response, printout_url)
def test_followup_user_can_access(self): app_ids = intake_factories.make_app_ids_for('sf_pubdef') profile = user_accounts_factories.followup_user() login(self.client, profile) response = self.client.get( query_params.get_url_for_ids(self.view_name, app_ids)) self.assertEqual(200, response.status_code)
def test_org_user_from_correct_org_can_access(self): app_ids = intake_factories.make_app_ids_for('cc_pubdef') profile = user_accounts_factories.app_reviewer('cc_pubdef') login(self.client, profile) response = self.client.get( query_params.get_url_for_ids(self.view_name, app_ids)) self.assertEqual(200, response.status_code)
def test_if_invalid_ids(self, email_alert): app_ids = intake_factories.make_app_ids_for('cc_pubdef') profile = user_accounts_factories.app_reviewer('cc_pubdef') login(self.client, profile) response = self.client.get( query_params.get_url_for_ids(self.view_name, app_ids + [918274])) self.assertEqual(200, response.status_code) email_alert.assert_not_called()
def test_monitor_user_gets_not_allowed(self, email_alert): app_ids = intake_factories.make_app_ids_for('sf_pubdef') profile = user_accounts_factories.monitor_user() login(self.client, profile) response = self.client.get( query_params.get_url_for_ids(self.view_name, app_ids)) self.assertRedirects(response, reverse('user_accounts-profile')) self.assertEqual(1, email_alert.call_count)
def get_context_data(self): context = super().get_context_data() context['organization'] = self.organization context['app_count'] = AppsService.get_valid_application_ids_from_set( self.app_ids).count() # check for fillable pdfs needs_prebuilt = self.organization.pdfs.count() > 0 if needs_prebuilt: context['pdf_url'] = query_params.get_url_for_ids( 'intake-pdf_bundle_file_view', self.app_ids) else: context['pdf_url'] = query_params.get_url_for_ids( 'intake-pdf_printout_for_apps', self.app_ids) AppsService.handle_apps_opened(self, self.app_ids) MessagesService.flash_success( self.request, get_multiple_apps_read_flash(context['app_count'])) return context
def build_redirect_url(self, request): key_set = request.GET.get('keys') uuids = [key for key in key_set.split('|')] submissions = models.FormSubmission.objects.filter( old_uuid__in=uuids) return get_url_for_ids( self.redirect_view_name, [s.id for s in submissions])
def test_shows_flash_message(self): app_ids = intake_factories.make_app_ids_for('sf_pubdef', count=3) profile = user_accounts_factories.app_reviewer('sf_pubdef') login(self.client, profile) response = self.client.get( query_params.get_url_for_ids(self.view_name, app_ids)) self.assertContains(response, str( '3 applications have been marked as “Read” and moved to the ' '“Needs Status Update” folder'))
def test_marks_apps_as_opened(self): app_ids = intake_factories.make_app_ids_for('sf_pubdef') profile = user_accounts_factories.app_reviewer('sf_pubdef') login(self.client, profile) self.client.get( query_params.get_url_for_ids(self.view_name, app_ids)) all_apps_opened = all(models.Application.objects.filter( id__in=app_ids).values_list('has_been_opened', flat=True)) self.assertTrue(all_apps_opened)
def test_followup_user_can_access(self, get_bundle): get_bundle.return_value.pdf = b'bytez' app_ids = intake_factories.make_app_ids_for('sf_pubdef') prebuilt_pdf_for_ids(app_ids) profile = user_accounts_factories.followup_user() login(self.client, profile) response = self.client.get( query_params.get_url_for_ids(self.view_name, app_ids)) self.assertEqual(200, response.status_code)
def test_invalid_query_params_returns_not_allowed(self, email_alert): prebuilt = intake_factories.PrebuiltPDFBundleFactory() app_ids = intake_factories.make_app_ids_for('sf_pubdef') prebuilt.applications.add(*app_ids) profile = user_accounts_factories.app_reviewer('sf_pubdef') login(self.client, profile) response = self.client.get( query_params.get_url_for_ids(self.view_name, app_ids + ['omg'])) self.assertRedirects(response, reverse('user_accounts-profile')) self.assertEqual(1, email_alert.call_count)
def test_org_user_who_needs_prebuilt_sees_prebuilt_link(self): intake_factories.FillablePDFFactory() prebuilt = intake_factories.PrebuiltPDFBundleFactory() app_ids = intake_factories.make_app_ids_for('sf_pubdef') prebuilt.applications.add(*app_ids) profile = user_accounts_factories.app_reviewer('sf_pubdef') login(self.client, profile) response = self.client.get( query_params.get_url_for_ids(self.view_name, app_ids)) self.assertContains(response, prebuilt.get_absolute_url())
def test_ignores_invalid_ids(self, email_alert, get_bundle): app_ids = intake_factories.make_app_ids_for('sf_pubdef') prebuilt_pdf_for_ids(app_ids) get_bundle.return_value.pdf = b'bytez' profile = user_accounts_factories.app_reviewer('sf_pubdef') login(self.client, profile) response = self.client.get( query_params.get_url_for_ids(self.view_name, app_ids + [918274])) self.assertEqual(200, response.status_code) email_alert.assert_not_called()
def test_fires_expected_mixpanel_events(self): app_ids = intake_factories.make_app_ids_for('sf_pubdef') profile = user_accounts_factories.app_reviewer('sf_pubdef') login(self.client, profile) with self.assertLogs( 'project.services.logging_service', logging.INFO) as logs: response = self.client.get( query_params.get_url_for_ids(self.view_name, app_ids)) assertInLogsCount(logs, {'event_name=app_opened': len(app_ids)}) assertInLogsCount(logs, {'event_name=user_app_opened': len(app_ids)})
def get_context_data(self, *args, **kwargs): context = super().get_context_data(*args, **kwargs) context['results'] = AppsService.get_unread_applications_for_org_user( self.request.user, self.request.GET.get('page')) context['app_index_tabs'], count = get_tabs_for_org_user( self.request.user.profile.organization, 'Unread') context['app_index_scope_title'] = "{} Unread Applications".format( count) if count == 0: context['print_all_link'] = None context['no_results'] = "You have read all new applications!" else: context['print_all_link'] = get_url_for_ids( 'intake-pdf_bundle_wrapper_view', AppsService.get_unread_applications_for_org( self.request.user.profile.organization).values_list( 'id', flat=True)) context['csv_download_link'] = None return context
def get_context_data(self, *args, **kwargs): context = super().get_context_data(*args, **kwargs) context['results'] = AppsService.get_unread_applications_for_org_user( self.request.user, self.request.GET.get('page')) context['app_index_tabs'], count = get_tabs_for_org_user( self.request.user.profile.organization, 'Unread') context['app_index_scope_title'] = "{} Unread Applications".format( count) if count == 0: context['print_all_link'] = None context['no_results'] = "You have read all new applications!" else: context['print_all_link'] = get_url_for_ids( 'intake-pdf_bundle_wrapper_view', AppsService.get_unread_applications_for_org( self.request.user.profile.organization ).values_list('id', flat=True) ) context['csv_download_link'] = None return context
def get_submissions(self, group): ids = [s.id for s in group] url = get_url_for_ids('intake-app_bundle', ids) return self.client.get(url)
def get_absolute_url(self): return query_params.get_url_for_ids( 'intake-pdf_bundle_file_view', self.applications.values_list('id', flat=True))
def build_redirect_url(self, request): key_set = request.GET.get('keys') uuids = [key for key in key_set.split('|')] submissions = models.FormSubmission.objects.filter(old_uuid__in=uuids) return get_url_for_ids(self.redirect_view_name, [s.id for s in submissions])