From 768961e2bec92abffe2270d61f037af6ac3a175d Mon Sep 17 00:00:00 2001 From: Michael Olund Date: Mon, 26 Oct 2020 10:44:19 -0700 Subject: [PATCH 1/4] eFiling hub json submission --- edivorce/apps/core/efilinghub.py | 94 ++++++++++++++++++++++++-------- 1 file changed, 71 insertions(+), 23 deletions(-) diff --git a/edivorce/apps/core/efilinghub.py b/edivorce/apps/core/efilinghub.py index f618c2aa..8f38ac0f 100644 --- a/edivorce/apps/core/efilinghub.py +++ b/edivorce/apps/core/efilinghub.py @@ -97,7 +97,8 @@ NJF_JSON_FORMAT = { }, "dateOfMarriage": "", "reasonForDivorce": "S", - "act": "", + "childSupportAct": [], + "spouseSupportAct": "", "ordersSought": [] } @@ -267,6 +268,19 @@ class EFilingHub: except: return '' + def get_aliases(str): + aliases = [] + names = json.loads(str) + for name in names: + if len(name) == 5 and name[1] != '' and name[2] != '': + alias = NJF_ALIAS_FORMAT.copy() + alias["surname"] = name[1] + alias["given1"] = name[2] + alias["given2"] = name[3] + alias["given3"] = name[4] + aliases.append(alias) + return aliases + r = responses d = NJF_JSON_FORMAT.copy() @@ -281,36 +295,70 @@ class EFilingHub: signing_location_spouse = r.get('signing_location_spouse') party1 = d["parties"][0] - party1["surname"] = r.get('last_name_you', '').strip() - party1["given1"] = r.get('given_name_1_you', '').strip() - party1["given2"] = r.get('given_name_2_you', '').strip() - party1["given3"] = r.get('given_name_3_you', '').strip() + party1["surname"] = r.get('last_name_you', '') + party1["given1"] = r.get('given_name_1_you', '') + party1["given2"] = r.get('given_name_2_you', '') + party1["given3"] = r.get('given_name_3_you', '') party1["birthDate"] = format_date(r.get('birthday_you')) - party1["surnameAtBirth"] = r.get('last_name_born_you', '').strip() - party1["surnameBeforeMarriage"] = r.get('last_name_before_married_you', '').strip() - email = r.get('email_you', '').strip() + party1["surnameAtBirth"] = r.get('last_name_born_you', '') + party1["surnameBeforeMarriage"] = r.get('last_name_before_married_you', '') + email = r.get('email_you', '') if not email: - email = r.get('address_to_send_official_document_email_you', '').strip() + email = r.get('address_to_send_official_document_email_you', '') party1["email"] = email party1["signingVirtually"] = signing_location_you == 'Virtual' - party1["aliases"] = [] + if r.get('any_other_name_you') == 'YES': + party1["aliases"] = get_aliases(r.get('other_name_you')) party2 = d["parties"][1] - party2["surname"] = r.get('last_name_spouse', '').strip() - party2["given1"] = r.get('given_name_1_spouse', '').strip() - party2["given2"] = r.get('given_name_2_spouse', '').strip() - party2["given3"] = r.get('given_name_3_spouse', '').strip() + party2["surname"] = r.get('last_name_spouse', '') + party2["given1"] = r.get('given_name_1_spouse', '') + party2["given2"] = r.get('given_name_2_spouse', '') + party2["given3"] = r.get('given_name_3_spouse', '') party2["birthDate"] = format_date(r.get('birthday_spouse')) - party2["surnameAtBirth"] = r.get('last_name_born_spouse', '').strip() - party2["surnameBeforeMarriage"] = r.get('last_name_before_married_spouse', '').strip() - email = r.get('email_spouse', '').strip() + party2["surnameAtBirth"] = r.get('last_name_born_spouse', '') + party2["surnameBeforeMarriage"] = r.get('last_name_before_married_spouse', '') + email = r.get('email_spouse', '') if not email: - email = r.get('address_to_send_official_document_email_spouse', '').strip() + email = r.get('address_to_send_official_document_email_spouse', '') party2["email"] = email party2["signingVirtually"] = signing_location_spouse == 'Virtual' - party2["aliases"] = [] + if r.get('any_other_name_spouse') == 'YES': + party2["aliases"] = get_aliases(r.get('other_name_spouse')) d["dateOfMarriage"] = format_date(r.get('when_were_you_married')) + d["placeOfMarriage"]["country"] = r.get('where_were_you_married_country', '') + d["placeOfMarriage"]["province"] = r.get('where_were_you_married_prov', '') + d["placeOfMarriage"]["city"] = r.get('where_were_you_married_city', '') + + d["childSupportAct"] = json.loads(r.get('child_support_act', '[]')) + d["spouseSupportAct"] = r.get('spouse_support_act', '') + + orders_sought = json.load(r.get('want_which_orders', '[]')) + + if 'A legal end to the marriage' in orders_sought: + d["ordersSought"].append('DIV') + + if 'Spousal support' in orders_sought: + d["ordersSought"].append('SSU') + + if 'Division of property and debts' in orders_sought: + division = r.get('deal_with_property_debt', '') + if division == 'Equal division': + d["ordersSought"].append('DFA') + if division == 'Unequal division': + d["ordersSought"].append('RFA') + if re.sub(r'\W+', '', r.get('other_property_claims', '')) != '': + d["ordersSought"].append('PRO') + + if 'Child support' in orders_sought: + d["ordersSought"].append('CSU') + + if 'Other orders' in orders_sought: + if r.get('name_change_you') == 'YES' or r.get('name_change_spouse') == 'YES': + d["ordersSought"].append('NAM') + if re.sub(r'\W+', '', r.get('other_orders_detail ', '')) != '': + d["ordersSought"].append('OTH') return d @@ -348,19 +396,19 @@ class EFilingHub: parties = [] party1 = PACKAGE_PARTY_FORMAT.copy() - party1['firstName'] = responses.get('given_name_1_you', '').strip() + party1['firstName'] = responses.get('given_name_1_you', '') party1['middleName'] = (responses.get('given_name_2_you', '') + ' ' + responses.get('given_name_3_you', '')).strip() - party1['lastName'] = responses.get('last_name_you', '').strip() + party1['lastName'] = responses.get('last_name_you', '') parties.append(party1) party2 = PACKAGE_PARTY_FORMAT.copy() - party2['firstName'] = responses.get('given_name_1_spouse', '').strip() + party2['firstName'] = responses.get('given_name_1_spouse', '') party2['middleName'] = (responses.get('given_name_2_spouse', '') + ' ' + responses.get('given_name_3_spouse', '')).strip() - party2['lastName'] = responses.get('last_name_spouse', '').strip() + party2['lastName'] = responses.get('last_name_spouse', '') parties.append(party2) return parties From 172cc8ffe563865c48b35de0d1c4262959879396 Mon Sep 17 00:00:00 2001 From: Michael Olund Date: Mon, 26 Oct 2020 11:36:37 -0700 Subject: [PATCH 2/4] Hooked up after_submit calls for efiling --- edivorce/apps/core/efilinghub.py | 8 ++++--- edivorce/apps/core/urls.py | 2 ++ edivorce/apps/core/utils/cso_filing.py | 29 +++++++++++++++++++------- edivorce/apps/core/views/efiling.py | 28 ++++++++++++++++++++++++- 4 files changed, 56 insertions(+), 11 deletions(-) diff --git a/edivorce/apps/core/efilinghub.py b/edivorce/apps/core/efilinghub.py index 8f38ac0f..ffd9dc20 100644 --- a/edivorce/apps/core/efilinghub.py +++ b/edivorce/apps/core/efilinghub.py @@ -230,16 +230,18 @@ class EFilingHub: if parties: package['filingPackage']['parties'] = parties # update return urls - package['navigationUrls']['success'] = request.build_absolute_uri( - reverse('dashboard_nav', args=['check_with_registry'])) package['navigationUrls']['error'] = request.build_absolute_uri( reverse('dashboard_nav', args=['check_with_registry'])) if self.initial_filing: package['navigationUrls']['cancel'] = request.build_absolute_uri( reverse('dashboard_nav', args=['initial_filing'])) + package['navigationUrls']['success'] = request.build_absolute_uri( + reverse('after_submit_initial_files')) else: package['navigationUrls']['cancel'] = request.build_absolute_uri( reverse('dashboard_nav', args=['final_filing'])) + package['navigationUrls']['success'] = request.build_absolute_uri( + reverse('after_submit_final_files')) return package @@ -334,7 +336,7 @@ class EFilingHub: d["childSupportAct"] = json.loads(r.get('child_support_act', '[]')) d["spouseSupportAct"] = r.get('spouse_support_act', '') - orders_sought = json.load(r.get('want_which_orders', '[]')) + orders_sought = json.loads(r.get('want_which_orders', '[]')) if 'A legal end to the marriage' in orders_sought: d["ordersSought"].append('DIV') diff --git a/edivorce/apps/core/urls.py b/edivorce/apps/core/urls.py index fb749177..e566956c 100644 --- a/edivorce/apps/core/urls.py +++ b/edivorce/apps/core/urls.py @@ -23,6 +23,8 @@ urlpatterns = [ url(r'^dashboard/(?P.*)', main.dashboard_nav, name="dashboard_nav"), path('submit/initial', efiling.submit_initial_files, name="submit_initial_files"), path('submit/final', efiling.submit_final_files, name="submit_final_files"), + path('after-submit/initial', efiling.after_submit_initial_files, name="after_submit_initial_files"), + path('after-submit/final', efiling.after_submit_final_files, name="after_submit_final_files"), url(r'^health$', system.health), url(r'^legal$', main.legal, name="legal"), url(r'^acknowledgements$', main.acknowledgements, name="acknowledgements"), diff --git a/edivorce/apps/core/utils/cso_filing.py b/edivorce/apps/core/utils/cso_filing.py index 5e87620b..a9f165df 100644 --- a/edivorce/apps/core/utils/cso_filing.py +++ b/edivorce/apps/core/utils/cso_filing.py @@ -12,7 +12,8 @@ def file_documents(request, responses, initial=False): (uploaded, generated) = forms_to_file(responses, initial) missing_forms = [] for form in uploaded: - docs = Document.objects.filter(bceid_user=user, doc_type=form['doc_type'], party_code=form.get('party_code', 0)) + docs = Document.objects.filter( + bceid_user=user, doc_type=form['doc_type'], party_code=form.get('party_code', 0)) if docs.count() == 0: missing_forms.append(Document.form_types[form['doc_type']]) @@ -25,11 +26,20 @@ def file_documents(request, responses, initial=False): location = hub.get_location(responses) parties = hub.get_parties(responses) - redirect_url, msg = hub.upload(request, post_files, documents, parties, location) + redirect_url, msg = hub.upload(request, post_files, documents, parties, location) if redirect_url: return None, redirect_url + if msg: + return msg, None + + return None, None + + +def after_file_documents(request, responses, initial=False): + user = request.user + # Save dummy data for now. Eventually replace with data from CSO prefix = 'initial' if initial else 'final' _save_response(user, f'{prefix}_filing_submitted', True) @@ -71,14 +81,19 @@ def forms_to_file(responses_dict, initial=False): how_to_file = responses_dict.get('how_to_file') how_to_sign = responses_dict.get('how_to_sign') - signing_location_both = responses_dict.get('signing_location') if how_to_sign == 'Together' else None - signing_location_you = responses_dict.get('signing_location_you') if how_to_sign == 'Separately' else None - signing_location_spouse = responses_dict.get('signing_location_spouse') if how_to_sign == 'Separately' else None + signing_location_both = responses_dict.get( + 'signing_location') if how_to_sign == 'Together' else None + signing_location_you = responses_dict.get( + 'signing_location_you') if how_to_sign == 'Separately' else None + signing_location_spouse = responses_dict.get( + 'signing_location_spouse') if how_to_sign == 'Separately' else None derived = responses_dict.get('derived', get_derived_data(responses_dict)) - name_change_you = derived['wants_other_orders'] and responses_dict.get('name_change_you') == 'YES' - name_change_spouse = derived['wants_other_orders'] and responses_dict.get('name_change_spouse') == 'YES' + name_change_you = derived['wants_other_orders'] and responses_dict.get( + 'name_change_you') == 'YES' + name_change_spouse = derived['wants_other_orders'] and responses_dict.get( + 'name_change_spouse') == 'YES' has_children = derived['has_children_of_marriage'] provide_marriage_certificate = responses_dict.get('original_marriage_certificate') == 'YES' diff --git a/edivorce/apps/core/views/efiling.py b/edivorce/apps/core/views/efiling.py index 30b3231b..ee64488c 100644 --- a/edivorce/apps/core/views/efiling.py +++ b/edivorce/apps/core/views/efiling.py @@ -4,7 +4,7 @@ from django.urls import reverse from django.contrib.auth.decorators import login_required from ..decorators import prequal_completed -from ..utils.cso_filing import file_documents +from ..utils.cso_filing import file_documents, after_file_documents from ..utils.user_response import get_data_for_user @@ -41,3 +41,29 @@ def _submit_files(request, initial=False): responses_dict['active_page'] = next_page return redirect(reverse('dashboard_nav', kwargs={'nav_step': next_page}), context=responses_dict) + + +@login_required +@prequal_completed +def after_submit_initial_files(request): + return _after_submit_files(request, initial=True) + + +@login_required +@prequal_completed +def after_submit_final_files(request): + return _after_submit_files(request, initial=False) + + +def _after_submit_files(request, initial=False): + responses_dict = get_data_for_user(request.user) + if initial: + next_page = 'wait_for_number' + else: + next_page = 'next_steps' + + after_file_documents(request, responses_dict, initial=initial) + + responses_dict['active_page'] = next_page + + return redirect(reverse('dashboard_nav', kwargs={'nav_step': next_page}), context=responses_dict) From 69513b99f992a27cbbbd196540da30e1ba7bc383 Mon Sep 17 00:00:00 2001 From: Michael Olund Date: Mon, 26 Oct 2020 11:42:25 -0700 Subject: [PATCH 3/4] Removed unused parameter and undid automatic code formatting --- edivorce/apps/core/utils/cso_filing.py | 17 ++++++----------- edivorce/apps/core/views/efiling.py | 2 +- 2 files changed, 7 insertions(+), 12 deletions(-) diff --git a/edivorce/apps/core/utils/cso_filing.py b/edivorce/apps/core/utils/cso_filing.py index a9f165df..6a9d8371 100644 --- a/edivorce/apps/core/utils/cso_filing.py +++ b/edivorce/apps/core/utils/cso_filing.py @@ -37,7 +37,7 @@ def file_documents(request, responses, initial=False): return None, None -def after_file_documents(request, responses, initial=False): +def after_file_documents(request, initial=False): user = request.user # Save dummy data for now. Eventually replace with data from CSO @@ -81,19 +81,14 @@ def forms_to_file(responses_dict, initial=False): how_to_file = responses_dict.get('how_to_file') how_to_sign = responses_dict.get('how_to_sign') - signing_location_both = responses_dict.get( - 'signing_location') if how_to_sign == 'Together' else None - signing_location_you = responses_dict.get( - 'signing_location_you') if how_to_sign == 'Separately' else None - signing_location_spouse = responses_dict.get( - 'signing_location_spouse') if how_to_sign == 'Separately' else None + signing_location_both = responses_dict.get('signing_location') if how_to_sign == 'Together' else None + signing_location_you = responses_dict.get('signing_location_you') if how_to_sign == 'Separately' else None + signing_location_spouse = responses_dict.get('signing_location_spouse') if how_to_sign == 'Separately' else None derived = responses_dict.get('derived', get_derived_data(responses_dict)) - name_change_you = derived['wants_other_orders'] and responses_dict.get( - 'name_change_you') == 'YES' - name_change_spouse = derived['wants_other_orders'] and responses_dict.get( - 'name_change_spouse') == 'YES' + name_change_you = derived['wants_other_orders'] and responses_dict.get('name_change_you') == 'YES' + name_change_spouse = derived['wants_other_orders'] and responses_dict.get('name_change_spouse') == 'YES' has_children = derived['has_children_of_marriage'] provide_marriage_certificate = responses_dict.get('original_marriage_certificate') == 'YES' diff --git a/edivorce/apps/core/views/efiling.py b/edivorce/apps/core/views/efiling.py index ee64488c..d5554f39 100644 --- a/edivorce/apps/core/views/efiling.py +++ b/edivorce/apps/core/views/efiling.py @@ -62,7 +62,7 @@ def _after_submit_files(request, initial=False): else: next_page = 'next_steps' - after_file_documents(request, responses_dict, initial=initial) + after_file_documents(request, initial=initial) responses_dict['active_page'] = next_page From 7cd3425252f38fea3543411e48d3e4c6a61e3357 Mon Sep 17 00:00:00 2001 From: Michael Olund Date: Mon, 26 Oct 2020 12:13:02 -0700 Subject: [PATCH 4/4] Fixed link checker bugs --- edivorce/apps/core/management/commands/link_check.py | 2 +- edivorce/apps/core/templates/legal.html | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/edivorce/apps/core/management/commands/link_check.py b/edivorce/apps/core/management/commands/link_check.py index 6d8dcebe..86e718ee 100644 --- a/edivorce/apps/core/management/commands/link_check.py +++ b/edivorce/apps/core/management/commands/link_check.py @@ -35,7 +35,7 @@ class Command(BaseCommand): if link is None: continue if link['href'].startswith('http'): - filename = str(file_path.name) + filename = str(fs.name) status = self._check_link(link['href']) if status: diff --git a/edivorce/apps/core/templates/legal.html b/edivorce/apps/core/templates/legal.html index 7baa5702..4abe97dd 100644 --- a/edivorce/apps/core/templates/legal.html +++ b/edivorce/apps/core/templates/legal.html @@ -67,7 +67,7 @@

If you think you will want legal help for only part of your separation or divorce, you can look for a lawyer that - offers “unbundled” services. The + offers “unbundled” services. The BC Family Law Unbundling Roster (HelpMap) is a list of legal professionals near you who offer unbundled services. Many also offer their services remotely, through telephone, webconferencing or other tools.