Skip to content

Commit

Permalink
Merge pull request #461 from raft-tech/release/v3.1.1-73
Browse files Browse the repository at this point in the history
Release/v3.1.1 73
  • Loading branch information
ADPennington authored May 25, 2023
2 parents ea5a870 + 987fba8 commit 77d2fa2
Show file tree
Hide file tree
Showing 18 changed files with 1,399 additions and 402 deletions.
4 changes: 2 additions & 2 deletions tdrs-backend/tdpservice/parsers/parse.py
Original file line number Diff line number Diff line change
Expand Up @@ -141,8 +141,8 @@ def get_schema_options(program_type):
return {
'A': {
'T1': schema_defs.tanf.t1,
# 'T2': schema_options.t2,
# 'T3': schema_options.t3,
'T2': schema_defs.tanf.t2,
'T3': schema_defs.tanf.t3,
},
'C': {
# 'T4': schema_options.t4,
Expand Down
4 changes: 4 additions & 0 deletions tdrs-backend/tdpservice/parsers/schema_defs/tanf/__init__.py
Original file line number Diff line number Diff line change
@@ -1,3 +1,7 @@
from .t1 import t1
from .t2 import t2
from .t3 import t3

t1 = t1
t2 = t2
t3 = t3
103 changes: 103 additions & 0 deletions tdrs-backend/tdpservice/parsers/schema_defs/tanf/t2.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,103 @@
"""Schema for HEADER row of all submission types."""


from ...util import RowSchema, Field
from ... import validators
from tdpservice.search_indexes.models.tanf import TANF_T2


t2 = RowSchema(
model=TANF_T2,
preparsing_validators=[
validators.hasLength(156),
],
postparsing_validators=[],
fields=[
Field(name='RecordType', type='string', startIndex=0, endIndex=2, required=True, validators=[]),
Field(name='RPT_MONTH_YEAR', type='number', startIndex=2, endIndex=8, required=True, validators=[]),
Field(name='CASE_NUMBER', type='string', startIndex=8, endIndex=19, required=True, validators=[]),
Field(name='FAMILY_AFFILIATION', type='number', startIndex=19, endIndex=20, required=True, validators=[]),
Field(name='NONCUSTODIAL_PARENT', type='number', startIndex=20, endIndex=21, required=True, validators=[]),
Field(name='DATE_OF_BIRTH', type='number', startIndex=21, endIndex=29, required=True, validators=[]),
Field(name='SSN', type='string', startIndex=29, endIndex=38, required=True, validators=[]),
Field(name='RACE_HISPANIC', type='string', startIndex=38, endIndex=39, required=True, validators=[]),
Field(name='RACE_AMER_INDIAN', type='string', startIndex=39, endIndex=40, required=True, validators=[]),
Field(name='RACE_ASIAN', type='string', startIndex=40, endIndex=41, required=True, validators=[]),
Field(name='RACE_BLACK', type='string', startIndex=41, endIndex=42, required=True, validators=[]),
Field(name='RACE_HAWAIIAN', type='string', startIndex=42, endIndex=43, required=True, validators=[]),
Field(name='RACE_WHITE', type='string', startIndex=43, endIndex=44, required=True, validators=[]),
Field(name='GENDER', type='number', startIndex=44, endIndex=45, required=True, validators=[]),
Field(name='FED_OASDI_PROGRAM', type='string', startIndex=45, endIndex=46, required=True, validators=[]),
Field(name='FED_DISABILITY_STATUS', type='string', startIndex=46, endIndex=47, required=True, validators=[]),
Field(name='DISABLED_TITLE_XIVAPDT', type='string', startIndex=47, endIndex=48, required=True, validators=[]),
Field(name='AID_AGED_BLIND', type='string', startIndex=48, endIndex=49, required=True, validators=[]),
Field(name='RECEIVE_SSI', type='string', startIndex=49, endIndex=50, required=True, validators=[]),
Field(name='MARITAL_STATUS', type='string', startIndex=50, endIndex=51, required=True, validators=[]),
Field(name='RELATIONSHIP_HOH', type='number', startIndex=51, endIndex=53, required=True, validators=[]),
Field(name='PARENT_WITH_MINOR_CHILD', type='string', startIndex=53, endIndex=54, required=True, validators=[]),
Field(name='NEEDS_PREGNANT_WOMAN', type='string', startIndex=54, endIndex=55, required=True, validators=[]),
Field(name='EDUCATION_LEVEL', type='string', startIndex=55, endIndex=57, required=True, validators=[]),
Field(name='CITIZENSHIP_STATUS', type='string', startIndex=57, endIndex=58, required=True, validators=[]),
Field(name='COOPERATION_CHILD_SUPPORT', type='string', startIndex=58, endIndex=59, required=True,
validators=[]),
Field(name='MONTHS_FED_TIME_LIMIT', type='string', startIndex=59, endIndex=62, required=True,
validators=[]),
Field(name='MONTHS_STATE_TIME_LIMIT', type='string', startIndex=62, endIndex=64, required=True,
validators=[]),
Field(name='CURRENT_MONTH_STATE_EXEMPT', type='string', startIndex=64, endIndex=65, required=True,
validators=[]),
Field(name='EMPLOYMENT_STATUS', type='string', startIndex=65, endIndex=66, required=True, validators=[]),
Field(name='WORK_ELIGIBLE_INDICATOR', type='string', startIndex=66, endIndex=68, required=True, validators=[]),
Field(name='WORK_PART_STATUS', type='string', startIndex=68, endIndex=70, required=True, validators=[]),
Field(name='UNSUB_EMPLOYMENT', type='string', startIndex=70, endIndex=72, required=True, validators=[]),
Field(name='SUB_PRIVATE_EMPLOYMENT', type='string', startIndex=72, endIndex=74, required=True, validators=[]),
Field(name='SUB_PUBLIC_EMPLOYMENT', type='string', startIndex=74, endIndex=76, required=True, validators=[]),
Field(name='WORK_EXPERIENCE_HOP', type='string', startIndex=76, endIndex=78, required=True, validators=[]),
Field(name='WORK_EXPERIENCE_EA', type='string', startIndex=78, endIndex=80, required=True, validators=[]),
Field(name='WORK_EXPERIENCE_HOL', type='string', startIndex=80, endIndex=82, required=True, validators=[]),
Field(name='OJT', type='string', startIndex=82, endIndex=84, required=True, validators=[]),
Field(name='JOB_SEARCH_HOP', type='string', startIndex=84, endIndex=86, required=True, validators=[]),
Field(name='JOB_SEARCH_EA', type='string', startIndex=86, endIndex=88, required=True, validators=[]),
Field(name='JOB_SEARCH_HOL', type='string', startIndex=88, endIndex=90, required=True, validators=[]),
Field(name='COMM_SERVICES_HOP', type='string', startIndex=90, endIndex=92, required=True, validators=[]),
Field(name='COMM_SERVICES_EA', type='string', startIndex=92, endIndex=94, required=True, validators=[]),
Field(name='COMM_SERVICES_HOL', type='string', startIndex=94, endIndex=96, required=True, validators=[]),
Field(name='VOCATIONAL_ED_TRAINING_HOP', type='string', startIndex=96, endIndex=98, required=False,
validators=[]),
Field(name='VOCATIONAL_ED_TRAINING_EA', type='string', startIndex=98, endIndex=100, required=False,
validators=[]),
Field(name='VOCATIONAL_ED_TRAINING_HOL', type='string', startIndex=100, endIndex=102, required=False,
validators=[]),
Field(name='JOB_SKILLS_TRAINING_HOP', type='string', startIndex=102, endIndex=104, required=False,
validators=[]),
Field(name='JOB_SKILLS_TRAINING_EA', type='string', startIndex=104, endIndex=106, required=False,
validators=[]),
Field(name='JOB_SKILLS_TRAINING_HOL', type='string', startIndex=106, endIndex=108, required=False,
validators=[]),
Field(name='ED_NO_HIGH_SCHOOL_DIPL_HOP', type='string', startIndex=108, endIndex=110, required=False,
validators=[]),
Field(name='ED_NO_HIGH_SCHOOL_DIPL_EA', type='string', startIndex=110, endIndex=112, required=False,
validators=[]),
Field(name='ED_NO_HIGH_SCHOOL_DIPL_HOL', type='string', startIndex=112, endIndex=114, required=False,
validators=[]),
Field(name='SCHOOL_ATTENDENCE_HOP', type='string', startIndex=114, endIndex=116, required=False, validators=[]),
Field(name='SCHOOL_ATTENDENCE_EA', type='string', startIndex=116, endIndex=118, required=False, validators=[]),
Field(name='SCHOOL_ATTENDENCE_HOL', type='string', startIndex=118, endIndex=120, required=False, validators=[]),
Field(name='PROVIDE_CC_HOP', type='string', startIndex=120, endIndex=122, required=False, validators=[]),
Field(name='PROVIDE_CC_EA', type='string', startIndex=122, endIndex=124, required=False, validators=[]),
Field(name='PROVIDE_CC_HOL', type='string', startIndex=124, endIndex=126, required=False, validators=[]),
Field(name='OTHER_WORK_ACTIVITIES', type='string', startIndex=126, endIndex=128, required=False, validators=[]),
Field(name='DEEMED_HOURS_FOR_OVERALL', type='string', startIndex=128, endIndex=130, required=False,
validators=[]),
Field(name='DEEMED_HOURS_FOR_TWO_PARENT', type='string', startIndex=130, endIndex=132, required=False,
validators=[]),
Field(name='EARNED_INCOME', type='string', startIndex=132, endIndex=136, required=False, validators=[]),
Field(name='UNEARNED_INCOME_TAX_CREDIT', type='string', startIndex=136, endIndex=140, required=False,
validators=[]),
Field(name='UNEARNED_SOCIAL_SECURITY', type='string', startIndex=140, endIndex=144, required=False,
validators=[]),
Field(name='UNEARNED_SSI', type='string', startIndex=144, endIndex=148, required=False, validators=[]),
Field(name='UNEARNED_WORKERS_COMP', type='string', startIndex=148, endIndex=152, required=False, validators=[]),
Field(name='OTHER_UNEARNED_INCOME', type='string', startIndex=152, endIndex=156, required=False, validators=[]),
],
)
77 changes: 77 additions & 0 deletions tdrs-backend/tdpservice/parsers/schema_defs/tanf/t3.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,77 @@
"""Schema for HEADER row of all submission types."""


from ...util import MultiRecordRowSchema, RowSchema, Field
from ... import validators
from tdpservice.search_indexes.models.tanf import TANF_T3


child_one = RowSchema(
model=TANF_T3,
preparsing_validators=[
validators.notEmpty(start=19, end=60),
],
postparsing_validators=[],
fields=[
Field(name='RecordType', type='string', startIndex=0, endIndex=2, required=True, validators=[]),
Field(name='RPT_MONTH_YEAR', type='number', startIndex=2, endIndex=8, required=True, validators=[]),
Field(name='CASE_NUMBER', type='string', startIndex=8, endIndex=19, required=True, validators=[]),
Field(name='FAMILY_AFFILIATION', type='number', startIndex=19, endIndex=20, required=True, validators=[]),
Field(name='DATE_OF_BIRTH', type='number', startIndex=20, endIndex=28, required=True, validators=[]),
Field(name='SSN', type='string', startIndex=28, endIndex=37, required=True, validators=[]),
Field(name='RACE_HISPANIC', type='string', startIndex=37, endIndex=38, required=True, validators=[]),
Field(name='RACE_AMER_INDIAN', type='string', startIndex=38, endIndex=39, required=True, validators=[]),
Field(name='RACE_ASIAN', type='string', startIndex=39, endIndex=40, required=True, validators=[]),
Field(name='RACE_BLACK', type='string', startIndex=40, endIndex=41, required=True, validators=[]),
Field(name='RACE_HAWAIIAN', type='string', startIndex=41, endIndex=42, required=True, validators=[]),
Field(name='RACE_WHITE', type='string', startIndex=42, endIndex=43, required=True, validators=[]),
Field(name='GENDER', type='number', startIndex=43, endIndex=44, required=True, validators=[]),
Field(name='RECEIVE_NONSSA_BENEFITS', type='string', startIndex=44, endIndex=45, required=True, validators=[]),
Field(name='RECEIVE_SSI', type='string', startIndex=45, endIndex=46, required=True, validators=[]),
Field(name='RELATIONSHIP_HOH', type='number', startIndex=46, endIndex=48, required=True, validators=[]),
Field(name='PARENT_MINOR_CHILD', type='string', startIndex=48, endIndex=49, required=True, validators=[]),
Field(name='EDUCATION_LEVEL', type='string', startIndex=49, endIndex=51, required=True, validators=[]),
Field(name='CITIZENSHIP_STATUS', type='string', startIndex=51, endIndex=52, required=True, validators=[]),
Field(name='UNEARNED_SSI', type='string', startIndex=52, endIndex=56, required=False, validators=[]),
Field(name='OTHER_UNEARNED_INCOME', type='string', startIndex=56, endIndex=60, required=False, validators=[]),
],
)

child_two = RowSchema(
model=TANF_T3,
quiet_preparser_errors=True,
preparsing_validators=[
validators.notEmpty(start=60, end=101),
],
postparsing_validators=[],
fields=[
Field(name='RecordType', type='string', startIndex=0, endIndex=2, required=True, validators=[]),
Field(name='RPT_MONTH_YEAR', type='number', startIndex=2, endIndex=8, required=True, validators=[]),
Field(name='CASE_NUMBER', type='string', startIndex=8, endIndex=19, required=True, validators=[]),
Field(name='FAMILY_AFFILIATION', type='number', startIndex=60, endIndex=61, required=True, validators=[]),
Field(name='DATE_OF_BIRTH', type='number', startIndex=61, endIndex=69, required=True, validators=[]),
Field(name='SSN', type='string', startIndex=69, endIndex=78, required=True, validators=[]),
Field(name='RACE_HISPANIC', type='string', startIndex=78, endIndex=79, required=True, validators=[]),
Field(name='RACE_AMER_INDIAN', type='string', startIndex=79, endIndex=80, required=True, validators=[]),
Field(name='RACE_ASIAN', type='string', startIndex=80, endIndex=81, required=True, validators=[]),
Field(name='RACE_BLACK', type='string', startIndex=81, endIndex=82, required=True, validators=[]),
Field(name='RACE_HAWAIIAN', type='string', startIndex=82, endIndex=83, required=True, validators=[]),
Field(name='RACE_WHITE', type='string', startIndex=83, endIndex=84, required=True, validators=[]),
Field(name='GENDER', type='number', startIndex=84, endIndex=85, required=True, validators=[]),
Field(name='RECEIVE_NONSSA_BENEFITS', type='string', startIndex=85, endIndex=86, required=True, validators=[]),
Field(name='RECEIVE_SSI', type='string', startIndex=86, endIndex=87, required=True, validators=[]),
Field(name='RELATIONSHIP_HOH', type='number', startIndex=87, endIndex=89, required=True, validators=[]),
Field(name='PARENT_MINOR_CHILD', type='string', startIndex=89, endIndex=90, required=True, validators=[]),
Field(name='EDUCATION_LEVEL', type='string', startIndex=90, endIndex=92, required=True, validators=[]),
Field(name='CITIZENSHIP_STATUS', type='string', startIndex=92, endIndex=93, required=True, validators=[]),
Field(name='UNEARNED_SSI', type='string', startIndex=93, endIndex=97, required=False, validators=[]),
Field(name='OTHER_UNEARNED_INCOME', type='string', startIndex=97, endIndex=101, required=False, validators=[]),
],
)

t3 = MultiRecordRowSchema(
schemas=[
child_one,
child_two
]
)
97 changes: 0 additions & 97 deletions tdrs-backend/tdpservice/parsers/tanf_parser.py

This file was deleted.

17 changes: 17 additions & 0 deletions tdrs-backend/tdpservice/parsers/test/data/small_tanf_section1.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
HEADER20204A06 TAN1 N
T12020101111111111223003403361110213120000300000000000008730010000000000000000000000000000000000222222000000002229012
T2202010111111111121219740114WTTTTTY@W2221222222221012212110014722011400000000000000000000000000000000000000000000000000000000000000000000000000000000000291
T320201011111111112120190127WTTTT90W022212222204398100000000
T12020101111111111524503401311110233110374300000000000005450320000000000000000000000000000000000222222000000002229021
T2202010111111111152219730113WTTTT@#Z@2221222122211012210110630023080700000000000000000000000000000000000000000000000000000000000000000000000551019700000000
T320201011111111115120160401WTTTT@BTB22212212204398100000000
T12020101111111114023001401101120213110336300000000000002910410000000000000000000000000000000000222222000000002229012
T2202010111111111401219910501WTTTT@9#T2221222222221012212210421322011400000000000000000000000000000000000000000000000000000000000000000000000000000000000000
T320201011111111140120170423WTTTT@@T#22212222204398100000000
T12020101111111114721801401711120212110374300000000000003820060000000000000000000000000000000000222222000000002229012
T2202010111111111471219800223WTTTT@TTW2222212222221012212110065423010700000000000000000000000000000000000000000000000000000000000000000000000000000000000000
T320201011111111147120201101WTTTTTZWY22222112204398100000000
T12020101111111115124501404961120313110384300000000000002560420000000000000003000000000000050000222222000000002229012
T2202010111111111511219970201WTTTT@Y0Y1222212222221012211110421021011932000000000000000000000000000000000000000000000000000000000000124800000000000000000000
T320201011111111151120170525WTTTT@B#Y12222112204398100000000120151113WTTTT9TT#12222122204398100000000
TRAILER0002643
Loading

0 comments on commit 77d2fa2

Please sign in to comment.