def test_doesnt_qualify_for_fee_waiver_with_income_and_no_benefits(self): sub = models.FormSubmission( answers=mock.fake.ebclc_answers( on_public_benefits=NO, household_size=11)) sub.answers['monthly_income'] = (FEE_WAIVER_LEVELS[12] / 12) + 1 self.assertEqual( SubmissionsService.qualifies_for_fee_waiver(sub), False)
def save_submission_and_send_notifications(self, form): submission = models.FormSubmission(answers=form.cleaned_data) submission.save() submission.counties = self.get_counties() number = models.FormSubmission.objects.count() notifications.slack_new_submission.send( submission=submission, request=self.request, submission_count=number) self.confirmation(submission)
def create_submission(form, organizations, applicant_id): """Save the submission data """ submission = models.FormSubmission(answers=form.cleaned_data, applicant_id=applicant_id) submission.save() submission.organizations.add_orgs_to_sub(*organizations) link_with_any_duplicates(submission, applicant_id) models.ApplicationEvent.log_app_submitted(applicant_id) return submission
def save_submission(self, form, organizations): """Save the submission data """ applicant_id = self.get_applicant_id() submission = models.FormSubmission(answers=form.cleaned_data, applicant_id=applicant_id) submission.save() submission.organizations.add(*organizations) models.ApplicationEvent.log_app_submitted(applicant_id) # TODO: check for cerrect org in view tests return submission
def create_submission(form, organizations, applicant_id): """Save the submission data """ submission = models.FormSubmission(answers=form.cleaned_data, applicant_id=applicant_id) # extract out fields from answers (searchable and other) copy_answers_data_to_model_fields(submission) submission.save() submission.organizations.add_orgs_to_sub(*organizations) link_with_any_duplicates(submission, applicant_id) return submission
def test_records_all_fields(self): data = mock.fake.declaration_letter_answers() input_form = self.base_form(data) self.assertTrue(input_form.is_valid()) submission = models.FormSubmission(answers=input_form.cleaned_data) submission.save() output_form = self.base_form(submission.answers) self.assertTrue(output_form.is_valid()) for key in data: field = output_form.get_field_by_input_name(key) self.assertFalse(field.is_empty(), "couldn't find" + field.context_key)
def test_displays_all_fields(self): data = mock.fake.declaration_letter_answers() input_form = self.base_form(data) self.assertTrue(input_form.is_valid()) submission = models.FormSubmission(answers=input_form.cleaned_data) submission.save() output_form = self.base_form(submission.answers) self.assertTrue(output_form.is_valid()) page_data = output_form.display() for key in data: field = output_form.get_field_by_input_name(key) self.assertIn(field.get_html_class_name(), page_data, "couldn't find " + field.get_html_class_name())
def create_submission(form, organizations, applicant_id): """Save the submission data """ submission = models.FormSubmission(answers=form.cleaned_data, applicant_id=applicant_id) # extract out fields from answers (searchable and other) keys = (FORMSUBMISSION_TEXT_SEARCH_FIELDS + QUERYABLE_ANSWER_FIELDS + DOLLAR_FIELDS) for key in keys: existing = submission.answers.get(key, None) if existing: setattr(submission, key, existing) address = submission.answers['address'] for component in address: existing = address.get(component, None) if existing: setattr(submission, component, existing) submission.save() submission.organizations.add_orgs_to_sub(*organizations) link_with_any_duplicates(submission, applicant_id) return submission
def build_seed_submissions(): create_seed_users() from user_accounts.models import Organization from formation.forms import county_form_selector cc_pubdef = Organization.objects.get( slug=constants.Organizations.COCO_PUBDEF) a_pubdef = Organization.objects.get( slug=constants.Organizations.ALAMEDA_PUBDEF) ebclc = Organization.objects.get( slug=constants.Organizations.EBCLC) sf_pubdef = Organization.objects.get( slug=constants.Organizations.SF_PUBDEF) monterey_pubdef = Organization.objects.get( slug=constants.Organizations.MONTEREY_PUBDEF) solano_pubdef = Organization.objects.get( slug=constants.Organizations.SOLANO_PUBDEF) san_diego_pubdef = Organization.objects.get( slug=constants.Organizations.SAN_DIEGO_PUBDEF) san_joaquin_pubdef = Organization.objects.get( slug=constants.Organizations.SAN_JOAQUIN_PUBDEF) santa_clara_pubdef = Organization.objects.get( slug=constants.Organizations.SANTA_CLARA_PUBDEF) fresno_pubdef = Organization.objects.get( slug=constants.Organizations.FRESNO_PUBDEF) receiving_orgs = [ cc_pubdef, a_pubdef, ebclc, sf_pubdef, monterey_pubdef, solano_pubdef, san_diego_pubdef, san_joaquin_pubdef, santa_clara_pubdef, fresno_pubdef] answer_pairs = { sf_pubdef.slug: fake.sf_county_form_answers, cc_pubdef.slug: fake.contra_costa_county_form_answers, ebclc.slug: fake.ebclc_answers, a_pubdef.slug: fake.alameda_pubdef_answers, monterey_pubdef.slug: fake.monterey_pubdef_answers, solano_pubdef.slug: fake.solano_pubdef_answers, san_diego_pubdef.slug: fake.san_diego_pubdef_answers, san_joaquin_pubdef.slug: fake.san_joaquin_pubdef_answers, santa_clara_pubdef.slug: fake.santa_clara_pubdef_answers, fresno_pubdef.slug: fake.fresno_pubdef_answers, } form_pairs = { org.slug: county_form_selector.get_combined_form_class( counties=[org.county.slug]) for org in receiving_orgs } # make 2 submissions to each org applicants = [] subs = [] for org in receiving_orgs: for i in range(2): raw_answers = answer_pairs[org.slug]() Form = form_pairs[org.slug] form = Form(raw_answers, validate=True) applicant = models.Applicant() applicant.save() applicants.append(applicant) sub = models.FormSubmission( applicant=applicant, answers=form.cleaned_data ) if org in (a_pubdef, santa_clara_pubdef, monterey_pubdef): letter = fake.declaration_letter_answers() sub.answers.update(letter) sub.save() application = models.Application( organization=org, form_submission=sub) application.save() StatusUpdateFactory.create( application=application, author=org.profiles.first().user) subs.append(sub) # make 1 submission to multiple orgs target_orgs = [ a_pubdef, cc_pubdef, sf_pubdef, monterey_pubdef, solano_pubdef, san_diego_pubdef, san_joaquin_pubdef, santa_clara_pubdef, fresno_pubdef] answers = fake.all_county_answers() Form = county_form_selector.get_combined_form_class( counties=[org.county.slug for org in target_orgs]) form = Form(answers, validate=True) applicant = models.Applicant() applicant.save() applicants.append(applicant) multi_org_sub = models.FormSubmission( applicant=applicant, answers=form.cleaned_data) multi_org_sub.answers.update(fake.declaration_letter_answers()) multi_org_sub.save() applications = [ models.Application(organization=org, form_submission=multi_org_sub) for org in target_orgs ] models.Application.objects.bulk_create(applications) subs.append(multi_org_sub) # fake the date received for each sub for sub in subs: sub.date_received = local(fake.date_time_between('-2w', 'now')) sub.save() # make a bundle for each org for org in receiving_orgs: org_subs = [] for sub in subs: has_app = sub.applications.filter(organization=org).exists() if has_app and sub != multi_org_sub: org_subs.append(sub) bundle = BundlesService.create_bundle_from_submissions( organization=org, submissions=org_subs, skip_pdf=True) # save bundle filename = 'mock_1_bundle_to_' + org.slug + ".json" dump_as_json([bundle], fixture_path(filename)) filename = 'mock_{}_submissions_to_{}.json'.format( len(org_subs), org.slug) serialize_subs(org_subs, fixture_path(filename)) serialize_subs( [multi_org_sub], fixture_path('mock_1_submission_to_multiple_orgs.json')) events = [] for applicant in applicants: events.extend( make_mock_submission_event_sequence(applicant)) dump_as_json(events, fixture_path('mock_application_events.json'))
def create_for_organizations(organizations, **kwargs): submission = models.FormSubmission(**kwargs) submission.save() submission.organizations.add_orgs_to_sub(*organizations) return submission
def test_qualifies_for_fee_waiver_with_no_income(self): sub = models.FormSubmission( answers=mock.fake.ebclc_answers( household_size=0, monthly_income=0)) self.assertTrue(sub.qualifies_for_fee_waiver())
def test_qualifies_for_fee_waiver_with_public_benefits(self): sub = models.FormSubmission( answers=mock.fake.ebclc_answers( on_public_benefits=field_types.YES)) self.assertEqual(sub.qualifies_for_fee_waiver(), True)
def test_doesnt_qualify_for_fee_waiver_without_valid_inputs(self): sub = models.FormSubmission(answers={}) self.assertEqual(sub.qualifies_for_fee_waiver(), None)
def test_qualifies_for_fee_waiver_with_public_benefits(self): sub = models.FormSubmission( answers=mock.fake.ebclc_answers(on_public_benefits=YES)) self.assertEqual( SubmissionsService.qualifies_for_fee_waiver(sub), True)
def parse_submission(self, record): return models.FormSubmission(old_uuid=record['uuid'], date_received=gmt.localize( record['date_received']), answers=record['answers'])