Browse Source

Added MD5 hash to the package

pull/172/head
Michael Olund 5 years ago
parent
commit
01daa73b30
4 changed files with 63 additions and 38 deletions
  1. +3
    -9
      edivorce/apps/core/efilinghub.py
  2. +3
    -3
      edivorce/apps/core/templatetags/format_utils.py
  3. +35
    -17
      edivorce/apps/core/tests/test_efiling_hub.py
  4. +22
    -9
      edivorce/apps/core/views/main.py

+ 3
- 9
edivorce/apps/core/efilinghub.py View File

@ -166,13 +166,7 @@ class EFilingHub:
return str(uuid.UUID(guid))
return guid
def _format_package(self, request, files, doc_types, parties, location):
documents = []
for index, file in enumerate(files):
document = PACKAGE_DOCUMENT_FORMAT.copy()
document['type'] = doc_types[index]
document['name'] = file[1][0]
documents.append(document)
def _format_package(self, request, files, documents, parties, location):
package = PACKAGE_FORMAT.copy()
package['filingPackage']['court']['location'] = location
package['filingPackage']['documents'] = documents
@ -190,7 +184,7 @@ class EFilingHub:
# -- EFILING HUB INTERFACE --
def upload(self, request, files, doc_types=None, parties=None, location=None):
def upload(self, request, files, documents=None, parties=None, location=None):
"""
Does an initial upload of documents and gets the generated eFiling Hub url.
:param parties:
@ -218,7 +212,7 @@ class EFilingHub:
headers = {
'Content-Type': 'application/json'
}
package_data = self._format_package(request, files, doc_types, parties, location)
package_data = self._format_package(request, files, documents, parties, location)
url = f"{self.api_base_url}/submission/{response['submissionId']}/generateUrl"
response = self._get_api(request, url, transaction_id, bce_id, headers=headers,
data=json.dumps(package_data))


+ 3
- 3
edivorce/apps/core/templatetags/format_utils.py View File

@ -83,13 +83,13 @@ def checkbox(context, *args, **kwargs):
args_pass = all(args)
kwargs_list = []
for question, value in kwargs.items():
dict_with_question = None
if question in context['responses']:
dict_with_question = context['responses']
elif question in context['derived']:
dict_with_question = context['derived']
else:
raise KeyError(f'{question} not found in responses or derived')
kwargs_list.append(str(value) in str(dict_with_question[question]))
if dict_with_question:
kwargs_list.append(str(value) in str(dict_with_question[question]))
kwargs_pass = all(kwargs_list)
return mark_safe('<i class="fa fa%s-square-o" aria-hidden="true"></i>' %


+ 35
- 17
edivorce/apps/core/tests/test_efiling_hub.py View File

@ -7,7 +7,7 @@ from django.test import TransactionTestCase
from django.test.client import RequestFactory
from django.core.files.uploadedfile import SimpleUploadedFile
from edivorce.apps.core.efilinghub import EFilingHub, PACKAGE_PARTY_FORMAT
from edivorce.apps.core.efilinghub import EFilingHub, PACKAGE_PARTY_FORMAT, PACKAGE_DOCUMENT_FORMAT
SAMPLE_TOKEN_RESPONSE = {
"access_token": "klkadlfjadsfkj",
@ -64,48 +64,58 @@ class EFilingHubTests(TransactionTestCase):
@mock.patch('requests.post')
def test_get_token(self, mock_request_post):
mock_request_post.return_value = self._mock_response(text=json.dumps(SAMPLE_TOKEN_RESPONSE))
mock_request_post.return_value = self._mock_response(
text=json.dumps(SAMPLE_TOKEN_RESPONSE))
self.assertTrue(self.hub._get_token(self.request))
self.assertEqual(self.request.session['access_token'], SAMPLE_TOKEN_RESPONSE['access_token'])
self.assertEqual(self.request.session['access_token'],
SAMPLE_TOKEN_RESPONSE['access_token'])
@mock.patch('requests.post')
def test_get_token_error(self, mock_request_post):
mock_request_post.return_value = self._mock_response(text=json.dumps(SAMPLE_TOKEN_RESPONSE), status=401)
mock_request_post.return_value = self._mock_response(
text=json.dumps(SAMPLE_TOKEN_RESPONSE), status=401)
self.assertFalse(self.hub._get_token(self.request))
self.assertFalse("access_token" in self.request.session)
@mock.patch('requests.post')
def test_renew_token(self, mock_request_post):
mock_request_post.return_value = self._mock_response(text=json.dumps(SAMPLE_TOKEN_RESPONSE))
mock_request_post.return_value = self._mock_response(
text=json.dumps(SAMPLE_TOKEN_RESPONSE))
self.request.session['refresh_token'] = 'alskdfjadlfads'
self.assertTrue(self.hub._refresh_token(self.request))
self.assertEqual(self.request.session['access_token'], SAMPLE_TOKEN_RESPONSE['access_token'])
self.assertEqual(self.request.session['access_token'],
SAMPLE_TOKEN_RESPONSE['access_token'])
@mock.patch('requests.post')
def test_renew_token_anon(self, mock_request_post):
# if we don't have a refresh token in session, this should fail
mock_request_post.return_value = self._mock_response(text=json.dumps(SAMPLE_TOKEN_RESPONSE))
mock_request_post.return_value = self._mock_response(
text=json.dumps(SAMPLE_TOKEN_RESPONSE))
self.assertFalse(self.hub._refresh_token(self.request))
self.assertFalse("access_token" in self.request.session)
@mock.patch('requests.post')
def test_renew_token_error(self, mock_request_post):
mock_request_post.return_value = self._mock_response(text=json.dumps(SAMPLE_TOKEN_RESPONSE), status=401)
mock_request_post.return_value = self._mock_response(
text=json.dumps(SAMPLE_TOKEN_RESPONSE), status=401)
self.request.session['refresh_token'] = 'alskdfjadlfads'
self.assertTrue(self.hub._refresh_token(self.request))
self.assertEqual(self.request.session['access_token'], SAMPLE_TOKEN_RESPONSE['access_token'])
self.assertEqual(self.request.session['access_token'],
SAMPLE_TOKEN_RESPONSE['access_token'])
@mock.patch('requests.post')
def test_get_api_success(self, mock_request_post):
mock_request_post.return_value = self._mock_response(text=json.dumps(INITIAL_DOC_UPLOAD_RESPONSE))
mock_request_post.return_value = self._mock_response(
text=json.dumps(INITIAL_DOC_UPLOAD_RESPONSE))
self.request.session['access_token'] = 'aslkfjadskfjd'
response = self.hub._get_api(self.request, 'https://somewhere.com', 'alksdjfa', 'kasdkfd', {})
response = self.hub._get_api(
self.request, 'https://somewhere.com', 'alksdjfa', 'kasdkfd', {})
self.assertTrue(response)
self.assertEqual(response.status_code, 200)
@ -124,7 +134,8 @@ class EFilingHubTests(TransactionTestCase):
self._mock_response(text=json.dumps(INITIAL_DOC_UPLOAD_RESPONSE))
]
response = self.hub._get_api(self.request, 'https://somewhere.com', 'alksdjfa', 'kasdkfd', {})
response = self.hub._get_api(
self.request, 'https://somewhere.com', 'alksdjfa', 'kasdkfd', {})
self.assertTrue(response)
self.assertEqual(response.status_code, 200)
@ -133,10 +144,12 @@ class EFilingHubTests(TransactionTestCase):
@mock.patch('requests.post')
def test_get_api_no_token(self, mock_request_post):
mock_request_post.return_value = self._mock_response(text=json.dumps(INITIAL_DOC_UPLOAD_RESPONSE))
mock_request_post.return_value = self._mock_response(
text=json.dumps(INITIAL_DOC_UPLOAD_RESPONSE))
with self.assertRaises(Exception):
response = self.hub._get_api(self.request, 'https://somewhere.com', 'alksdjfa', 'kasdkfd', {})
response = self.hub._get_api(
self.request, 'https://somewhere.com', 'alksdjfa', 'kasdkfd', {})
def test_transaction_id_current(self):
self.request.session['transaction_id'] = 'alksdjflaskdjf'
@ -163,18 +176,23 @@ class EFilingHubTests(TransactionTestCase):
def test_format_package(self):
files = []
documents = []
for i in range(0, 2):
file = SimpleUploadedFile('form_{}.pdf'.format(i), b'test content')
document = PACKAGE_DOCUMENT_FORMAT.copy()
filename = 'form_{}.pdf'.format(i)
document['name'] = filename
file = SimpleUploadedFile(filename, b'test content')
files.append(('files', (file.name, file.read())))
documents.append(document)
parties = []
for i in range(0, 2):
party = PACKAGE_PARTY_FORMAT.copy()
party['firstName'] = 'Party {}'.format(i)
party['lastName'] = 'Test'
parties.append(party)
doc_types = ['MC', 'RDP']
location = '6011'
package = self.hub._format_package(self.request, files, doc_types, parties, location)
package = self.hub._format_package(self.request, files, documents, parties, location)
self.assertTrue(package)
self.assertEqual(package['filingPackage']['documents'][0]['name'], 'form_0.pdf')


+ 22
- 9
edivorce/apps/core/views/main.py View File

@ -1,4 +1,5 @@
import datetime
import hashlib
from django.conf import settings
from django.contrib import messages
@ -235,35 +236,47 @@ def _submit_files(request, initial=False):
# todo: refactor this!!!!
post_files = []
doc_types = []
documents = []
(uploaded, generated) = forms_to_file(responses_dict, initial)
for form in generated:
pdf_response = pdf_form(request, str(form['form_number']))
document = PACKAGE_DOCUMENT_FORMAT.copy()
filename = get_filename(form['doc_type'], 0)
document['name'] = filename
document['type'] = form['doc_type']
document['md5'] = hashlib.md5(pdf_response.content).hexdigest()
post_files.append(('files', (filename, pdf_response.content)))
doc_types.append(form['doc_type'])
documents.append(document)
for document in uploaded:
pdf_response = images_to_pdf(request, document['doc_type'], document['party_code'])
for form in uploaded:
pdf_response = images_to_pdf(request, form['doc_type'], form['party_code'])
if pdf_response.status_code == 200:
filename = get_filename(document['doc_type'], document['party_code'])
document = PACKAGE_DOCUMENT_FORMAT.copy()
filename = get_filename(form['doc_type'], 0)
document['name'] = filename
document['type'] = form['doc_type']
document['md5'] = hashlib.md5(pdf_response.content).hexdigest()
post_files.append(('files', (filename, pdf_response.content)))
doc_types.append(document['doc_type'])
documents.append(document)
# generate the list of parties to send to eFiling Hub
parties = []
party1 = PACKAGE_PARTY_FORMAT.copy()
party1['firstName'] = responses_dict.get('given_name_1_you', '').strip()
party1['middleName'] = (responses_dict.get('given_name_2_you', '') + ' ' + responses_dict.get('given_name_3_you', '')).strip()
party1['middleName'] = (responses_dict.get('given_name_2_you', '') +
' ' +
responses_dict.get('given_name_3_you', '')).strip()
party1['lastName'] = responses_dict.get('last_name_you', '').strip()
parties.append(party1)
party2 = PACKAGE_PARTY_FORMAT.copy()
party2['firstName'] = responses_dict.get('given_name_1_spouse', '').strip()
party2['middleName'] = (responses_dict.get('given_name_2_spouse', '') + ' ' + responses_dict.get('given_name_3_spouse', '')).strip()
party2['middleName'] = (responses_dict.get('given_name_2_spouse', '') +
' ' +
responses_dict.get('given_name_3_spouse', '')).strip()
party2['lastName'] = responses_dict.get('last_name_spouse', '').strip()
parties.append(party2)
@ -271,7 +284,7 @@ def _submit_files(request, initial=False):
location = list_of_registries.get(location_name, '0000')
hub = EFilingHub()
redirect_url, msg = hub.upload(request, post_files, doc_types, parties, location)
redirect_url, msg = hub.upload(request, post_files, documents, parties, location)
if redirect_url:
return redirect(redirect_url)


Loading…
Cancel
Save