Exemplo n.º 1
0
 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)
Exemplo n.º 2
0
 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)
Exemplo n.º 3
0
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
Exemplo n.º 4
0
 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
Exemplo n.º 5
0
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
Exemplo n.º 6
0
 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)
Exemplo n.º 7
0
 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())
Exemplo n.º 8
0
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
Exemplo n.º 9
0
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'))
Exemplo n.º 10
0
def create_for_organizations(organizations, **kwargs):
    submission = models.FormSubmission(**kwargs)
    submission.save()
    submission.organizations.add_orgs_to_sub(*organizations)
    return submission
Exemplo n.º 11
0
 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())
Exemplo n.º 12
0
 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)
Exemplo n.º 13
0
 def test_doesnt_qualify_for_fee_waiver_without_valid_inputs(self):
     sub = models.FormSubmission(answers={})
     self.assertEqual(sub.qualifies_for_fee_waiver(), None)
Exemplo n.º 14
0
 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)
Exemplo n.º 15
0
 def parse_submission(self, record):
     return models.FormSubmission(old_uuid=record['uuid'],
                                  date_received=gmt.localize(
                                      record['date_received']),
                                  answers=record['answers'])