From 9e7fe0a82bbafc46baa55188abe2c345845b73f6 Mon Sep 17 00:00:00 2001 From: flutistar Date: Mon, 21 Jul 2025 15:13:25 +0000 Subject: [PATCH 01/18] Business filer DRS integration --- queue_services/business-filer/poetry.lock | 50 +++++++++++- queue_services/business-filer/pyproject.toml | 4 +- .../src/business_filer/config.py | 3 + .../src/business_filer/services/filer.py | 3 + .../src/business_filer/services/utils.py | 80 ++++++++++++++++++- 5 files changed, 134 insertions(+), 6 deletions(-) diff --git a/queue_services/business-filer/poetry.lock b/queue_services/business-filer/poetry.lock index cf46b9cabb..5a53734db2 100644 --- a/queue_services/business-filer/poetry.lock +++ b/queue_services/business-filer/poetry.lock @@ -542,6 +542,26 @@ docs = ["myst-parser (==0.18.0)", "sphinx (==5.1.1)"] ssh = ["paramiko (>=2.4.3)"] websockets = ["websocket-client (>=1.3.0)"] +[[package]] +name = "document-record-service" +version = "0.1.0" +description = "" +optional = false +python-versions = ">=3.9" +groups = ["main"] +files = [] +develop = true + +[package.dependencies] +dotenv = ">=0.9.9,<0.10.0" +flask = ">=1.1.2,<4.0.0" +pypdf2 = ">=1.26.0,<4.0.0" +requests = ">=2.32.4,<3.0.0" + +[package.source] +type = "directory" +url = "../../python/common/document-record-service" + [[package]] name = "dotenv" version = "0.9.9" @@ -1850,6 +1870,28 @@ dev = ["coverage[toml] (==5.0.4)", "cryptography (>=3.4.0)", "pre-commit", "pyte docs = ["sphinx", "sphinx-rtd-theme", "zope.interface"] tests = ["coverage[toml] (==5.0.4)", "pytest (>=6.0.0,<7.0.0)"] +[[package]] +name = "pypdf2" +version = "3.0.1" +description = "A pure-python PDF library capable of splitting, merging, cropping, and transforming PDF files" +optional = false +python-versions = ">=3.6" +groups = ["main"] +files = [ + {file = "PyPDF2-3.0.1.tar.gz", hash = "sha256:a74408f69ba6271f71b9352ef4ed03dc53a31aa404d29b5d31f53bfecfee1440"}, + {file = "pypdf2-3.0.1-py3-none-any.whl", hash = "sha256:d16e4205cfee272fbdc0568b68d82be796540b1537508cef59388f839c191928"}, +] + +[package.dependencies] +typing_extensions = {version = ">=3.10.0.0", markers = "python_version < \"3.10\""} + +[package.extras] +crypto = ["PyCryptodome"] +dev = ["black", "flit", "pip-tools", "pre-commit (<2.18.0)", "pytest-cov", "wheel"] +docs = ["myst_parser", "sphinx", "sphinx_rtd_theme"] +full = ["Pillow", "PyCryptodome"] +image = ["Pillow"] + [[package]] name = "pyrfc3339" version = "2.0.1" @@ -2011,19 +2053,19 @@ resolved_reference = "f7f6dc8506e391decb502434dbf06a4da716f5b1" [[package]] name = "requests" -version = "2.32.3" +version = "2.32.4" description = "Python HTTP for Humans." optional = false python-versions = ">=3.8" groups = ["main", "dev"] files = [ - {file = "requests-2.32.3-py3-none-any.whl", hash = "sha256:70761cfe03c773ceb22aa2f671b4757976145175cdfca038c02654d061d6dcc6"}, - {file = "requests-2.32.3.tar.gz", hash = "sha256:55365417734eb18255590a9ff9eb97e9e1da868d4ccd6402399eaf68af20a760"}, + {file = "requests-2.32.4-py3-none-any.whl", hash = "sha256:27babd3cda2a6d50b30443204ee89830707d396671944c998b5975b031ac2b2c"}, + {file = "requests-2.32.4.tar.gz", hash = "sha256:27d0316682c8a29834d3264820024b62a36942083d52caf2f14c0591336d3422"}, ] [package.dependencies] certifi = ">=2017.4.17" -charset-normalizer = ">=2,<4" +charset_normalizer = ">=2,<4" idna = ">=2.5,<4" urllib3 = ">=1.21.1,<3" diff --git a/queue_services/business-filer/pyproject.toml b/queue_services/business-filer/pyproject.toml index 73d8bacdcf..f3464df100 100644 --- a/queue_services/business-filer/pyproject.toml +++ b/queue_services/business-filer/pyproject.toml @@ -22,7 +22,8 @@ dependencies = [ "pg8000 (>=1.31.2,<2.0.0)", # "business-model @ file:///Users/thor/Developer/thorwolpert/ServiceBC/GCP/lear/python/common/business-registry-model", "gunicorn (>=23.0.0,<24.0.0)", - "business-registry-account @ git+https://github.com/bcgov/lear.git@main#subdirectory=python/common/business-registry-account" + "business-registry-account @ git+https://github.com/bcgov/lear.git@main#subdirectory=python/common/business-registry-account", + "document-record-service @ git+https://github.com/bcgov/lear.git@main#subdirectory=python/common/document-record-service", ] @@ -45,6 +46,7 @@ requests-mock = "^1.12.1" [tool.poetry.dependencies] business-model = {develop = true} +document-record-service = {develop = true} [build-system] requires = ["poetry-core>=2.0.0,<3.0.0"] build-backend = "poetry.core.masonry.api" diff --git a/queue_services/business-filer/src/business_filer/config.py b/queue_services/business-filer/src/business_filer/config.py index d21f8c7052..4595aee02a 100644 --- a/queue_services/business-filer/src/business_filer/config.py +++ b/queue_services/business-filer/src/business_filer/config.py @@ -86,6 +86,9 @@ class _Config: # pylint: disable=too-few-public-methods AUDIENCE = os.getenv("AUDIENCE", "https://pubsub.googleapis.com/google.pubsub.v1.Subscriber") PUBLISHER_AUDIENCE = os.getenv("PUBLISHER_AUDIENCE", "https://pubsub.googleapis.com/google.pubsub.v1.Publisher") + DOC_API_URL = os.getenv("DOC_API_URL", "") + DOC_API_ACCOUNT_ID = os.getenv("DOC_API_ACCOUNT_ID", "") + DOC_API_KEY = os.getenv("DOC_API_KEY", "") class DevConfig(_Config): # pylint: disable=too-few-public-methods diff --git a/queue_services/business-filer/src/business_filer/services/filer.py b/queue_services/business-filer/src/business_filer/services/filer.py index 9de0419cbe..48c2dca27a 100644 --- a/queue_services/business-filer/src/business_filer/services/filer.py +++ b/queue_services/business-filer/src/business_filer/services/filer.py @@ -82,6 +82,7 @@ from business_filer.filing_processors.filing_components import business_profile, name_request from business_filer.services import flags from business_filer.services.publish_event import PublishEvent +from business_filer.services.utils import sync_drs def get_filing_types(legal_filings: dict): @@ -277,6 +278,8 @@ def process_filing(filing_message: FilingMessage): # noqa: PLR0915, PLR0912 json.dumps(filing_meta.asjson, default=json_serial) ) + sync_drs(filing_submission) + db.session.add(filing_submission) db.session.commit() diff --git a/queue_services/business-filer/src/business_filer/services/utils.py b/queue_services/business-filer/src/business_filer/services/utils.py index 4580de2978..e53d2da8de 100644 --- a/queue_services/business-filer/src/business_filer/services/utils.py +++ b/queue_services/business-filer/src/business_filer/services/utils.py @@ -13,6 +13,15 @@ # limitations under the License. """Common utilities used by the services.""" from datetime import date +import copy +import json +from http import HTTPStatus + +from business_model.models import Filing +from document_record_service import DocumentRecordService, RequestInfo as DrsRequestInfo, DOCUMENT_TYPES, get_document_class +from flask import current_app + +from business_filer.services import flags import dpath.util @@ -84,4 +93,73 @@ def get_int(filing: dict, path: str) -> str: raw = dpath.util.get(filing, path) return int(raw) except (IndexError, KeyError, TypeError, ValueError): - return None \ No newline at end of file + return None + +def sync_drs(filing_submission: Filing): # noqa: PLR0915, PLR0912 + document_id_state = filing_submission.filing_json['filing']['header'].get('documentIdState', {}) + legal_type = filing_submission.filing_json['filing']['business'].get('legalType') + + if document_id_state and flags.is_on('enable-document-records'): + filing_type = filing_submission.filing_json['filing']['header']['name'] + temp_reg = filing_submission.temp_reg + + if filing_type in ['incorporationApplication', 'continuationIn']: + # Get existing document on DRS + doc_list = DocumentRecordService().get_document( + DrsRequestInfo( + document_class=DOCUMENT_TYPES[filing_type]['class'], + consumer_identifier=temp_reg + ) + ) + + if not isinstance(doc_list, list): + current_app.logger.error( + f"No associated documents found for temporary registration ID: {temp_reg}" + ) + else: + # Update missing consumer document id + if document_id_state['valid'] and document_id_state['consumerDocumentId'] == '': + copied_json = copy.deepcopy(filing_submission.filing_json) + copied_json['filing']['header']['documentIdState']['consumerDocumentId'] = doc_list[0]['consumerDocumentId'] + filing_submission._filing_json = copied_json + # Replace temp registration id with business identifier: + for associated_document in doc_list: + doc_service_id = associated_document['documentServiceId'] + DocumentRecordService().update_document( + DrsRequestInfo( + document_service_id=doc_service_id, + consumer_identifier=filing_submission.filing_json['filing']['business']['identifier'], + consumer_reference_id=str(filing_submission.id) + ) + ) + + else: + if filing_type and document_id_state['valid']: + try: + document_class = get_document_class(legal_type) + if DOCUMENT_TYPES.get(filing_type, ''): + document_type = DOCUMENT_TYPES[filing_type] + else: + document_type = DOCUMENT_TYPES['systemIsTheRecord'] + + response_json = DocumentRecordService().post_class_document( + request_info=DrsRequestInfo( + document_class=document_class, + document_type=document_type, + consumer_reference_id=filing_submission.id, + consumer_doc_id=document_id_state['consumerDocumentId'], + consumer_identifier=filing_submission.filing_json['filing']['business']['identifier'] + ), + has_file=False + ) + if document_id_state['consumerDocumentId'] == '' and response_json: + # Update consumerDocumentId + copied_json = copy.deepcopy(filing_submission.filing_json) + copied_json['filing']['header']['documentIdState']['consumerDocumentId'] = response_json['consumerDocumentId'] + filing_submission._filing_json = copied_json + else: + current_app.logger.error( + f"Document Record Creation Error: {filing_submission.id}, {response_json['rootCause']}", exc_info=True) + + except Exception as error: + current_app.logger.error(f"Document Record Creation Error: {error}") From 288dc1f09abff6a089ac3d7746e11a3f58c1dbdd Mon Sep 17 00:00:00 2001 From: flutistar Date: Tue, 22 Jul 2025 06:46:50 -0700 Subject: [PATCH 02/18] Moved to its own service --- queue_services/business-filer/poetry.lock | 35 +++++---- .../src/business_filer/services/__init__.py | 1 + .../services/document_service.py | 76 ++++++++++++++++++ .../src/business_filer/services/filer.py | 5 +- .../src/business_filer/services/utils.py | 78 ------------------- 5 files changed, 97 insertions(+), 98 deletions(-) create mode 100644 queue_services/business-filer/src/business_filer/services/document_service.py diff --git a/queue_services/business-filer/poetry.lock b/queue_services/business-filer/poetry.lock index 5a53734db2..52a362f6df 100644 --- a/queue_services/business-filer/poetry.lock +++ b/queue_services/business-filer/poetry.lock @@ -547,7 +547,7 @@ name = "document-record-service" version = "0.1.0" description = "" optional = false -python-versions = ">=3.9" +python-versions = ">=3.9,<4" groups = ["main"] files = [] develop = true @@ -555,12 +555,15 @@ develop = true [package.dependencies] dotenv = ">=0.9.9,<0.10.0" flask = ">=1.1.2,<4.0.0" -pypdf2 = ">=1.26.0,<4.0.0" +pypdf = ">=5.7.0,<6.0.0" requests = ">=2.32.4,<3.0.0" [package.source] -type = "directory" -url = "../../python/common/document-record-service" +type = "git" +url = "https://github.com/bcgov/lear.git" +reference = "main" +resolved_reference = "4ef0840cf7a3b59f401f07a85e1b41cb766de981" +subdirectory = "python/common/document-record-service" [[package]] name = "dotenv" @@ -1871,26 +1874,24 @@ docs = ["sphinx", "sphinx-rtd-theme", "zope.interface"] tests = ["coverage[toml] (==5.0.4)", "pytest (>=6.0.0,<7.0.0)"] [[package]] -name = "pypdf2" -version = "3.0.1" +name = "pypdf" +version = "5.8.0" description = "A pure-python PDF library capable of splitting, merging, cropping, and transforming PDF files" optional = false -python-versions = ">=3.6" +python-versions = ">=3.8" groups = ["main"] files = [ - {file = "PyPDF2-3.0.1.tar.gz", hash = "sha256:a74408f69ba6271f71b9352ef4ed03dc53a31aa404d29b5d31f53bfecfee1440"}, - {file = "pypdf2-3.0.1-py3-none-any.whl", hash = "sha256:d16e4205cfee272fbdc0568b68d82be796540b1537508cef59388f839c191928"}, + {file = "pypdf-5.8.0-py3-none-any.whl", hash = "sha256:bfe861285cd2f79cceecefde2d46901e4ee992a9f4b42c56548c4a6e9236a0d1"}, + {file = "pypdf-5.8.0.tar.gz", hash = "sha256:f8332f80606913e6f0ce65488a870833c9d99ccdb988c17bb6c166f7c8e140cb"}, ] -[package.dependencies] -typing_extensions = {version = ">=3.10.0.0", markers = "python_version < \"3.10\""} - [package.extras] -crypto = ["PyCryptodome"] -dev = ["black", "flit", "pip-tools", "pre-commit (<2.18.0)", "pytest-cov", "wheel"] +crypto = ["cryptography"] +cryptodome = ["PyCryptodome"] +dev = ["black", "flit", "pip-tools", "pre-commit", "pytest-cov", "pytest-socket", "pytest-timeout", "pytest-xdist", "wheel"] docs = ["myst_parser", "sphinx", "sphinx_rtd_theme"] -full = ["Pillow", "PyCryptodome"] -image = ["Pillow"] +full = ["Pillow (>=8.0.0)", "cryptography"] +image = ["Pillow (>=8.0.0)"] [[package]] name = "pyrfc3339" @@ -2869,4 +2870,4 @@ type = ["pytest-mypy"] [metadata] lock-version = "2.1" python-versions = ">=3.13,<4" -content-hash = "bfee9d8b300fb00272007978ab9a3528cf5fffc4a6d1beb57cb658bf19d7d309" +content-hash = "8cc7f421a0b49450ea18a5ea95c8d02e960d8320b895de0db4aa0a806729fbb3" diff --git a/queue_services/business-filer/src/business_filer/services/__init__.py b/queue_services/business-filer/src/business_filer/services/__init__.py index 4e52d7b98b..792dcadd0d 100644 --- a/queue_services/business-filer/src/business_filer/services/__init__.py +++ b/queue_services/business-filer/src/business_filer/services/__init__.py @@ -37,6 +37,7 @@ from ..common.services.account_service import AccountService # noqa: TID252 from ..common.services.flag_manager import Flags # noqa: TID252 from .gcp_auth import verify_gcp_jwt +from .document_service import sync_drs flags = Flags() gcp_queue = GcpQueue() diff --git a/queue_services/business-filer/src/business_filer/services/document_service.py b/queue_services/business-filer/src/business_filer/services/document_service.py new file mode 100644 index 0000000000..e20e3e5cc9 --- /dev/null +++ b/queue_services/business-filer/src/business_filer/services/document_service.py @@ -0,0 +1,76 @@ +import copy + +from business_model.models import Filing +from document_record_service import DocumentRecordService, RequestInfo as DrsRequestInfo, DOCUMENT_TYPES, get_document_class +from flask import current_app + +from business_filer.services import Flags + +def sync_drs(filing_submission: Filing, flags: Flags): # noqa: PLR0915, PLR0912 + document_id_state = filing_submission.filing_json['filing']['header'].get('documentIdState', {}) + legal_type = filing_submission.filing_json['filing']['business'].get('legalType') + + if document_id_state and flags.is_on('enable-document-records'): + filing_type = filing_submission.filing_json['filing']['header']['name'] + temp_reg = filing_submission.temp_reg + + if filing_type in ['incorporationApplication', 'continuationIn']: + # Get existing document on DRS + doc_list = DocumentRecordService().get_document( + DrsRequestInfo( + document_class=DOCUMENT_TYPES[filing_type]['class'], + consumer_identifier=temp_reg + ) + ) + + if not isinstance(doc_list, list): + current_app.logger.error( + f"No associated documents found for temporary registration ID: {temp_reg}" + ) + else: + # Update missing consumer document id + if document_id_state['valid'] and document_id_state['consumerDocumentId'] == '': + copied_json = copy.deepcopy(filing_submission.filing_json) + copied_json['filing']['header']['documentIdState']['consumerDocumentId'] = doc_list[0]['consumerDocumentId'] + filing_submission._filing_json = copied_json + # Replace temp registration id with business identifier: + for associated_document in doc_list: + doc_service_id = associated_document['documentServiceId'] + DocumentRecordService().update_document( + DrsRequestInfo( + document_service_id=doc_service_id, + consumer_identifier=filing_submission.filing_json['filing']['business']['identifier'], + consumer_reference_id=str(filing_submission.id) + ) + ) + + else: + if filing_type and document_id_state['valid']: + try: + document_class = get_document_class(legal_type) + if DOCUMENT_TYPES.get(filing_type, ''): + document_type = DOCUMENT_TYPES[filing_type] + else: + document_type = DOCUMENT_TYPES['systemIsTheRecord'] + + response_json = DocumentRecordService().post_class_document( + request_info=DrsRequestInfo( + document_class=document_class, + document_type=document_type, + consumer_reference_id=filing_submission.id, + consumer_doc_id=document_id_state['consumerDocumentId'], + consumer_identifier=filing_submission.filing_json['filing']['business']['identifier'] + ), + has_file=False + ) + if document_id_state['consumerDocumentId'] == '' and response_json: + # Update consumerDocumentId + copied_json = copy.deepcopy(filing_submission.filing_json) + copied_json['filing']['header']['documentIdState']['consumerDocumentId'] = response_json['consumerDocumentId'] + filing_submission._filing_json = copied_json + else: + current_app.logger.error( + f"Document Record Creation Error: {filing_submission.id}, {response_json['rootCause']}", exc_info=True) + + except Exception as error: + current_app.logger.error(f"Document Record Creation Error: {error}") diff --git a/queue_services/business-filer/src/business_filer/services/filer.py b/queue_services/business-filer/src/business_filer/services/filer.py index 48c2dca27a..f08dd32046 100644 --- a/queue_services/business-filer/src/business_filer/services/filer.py +++ b/queue_services/business-filer/src/business_filer/services/filer.py @@ -80,9 +80,8 @@ transparency_register, ) from business_filer.filing_processors.filing_components import business_profile, name_request -from business_filer.services import flags +from business_filer.services import flags, sync_drs from business_filer.services.publish_event import PublishEvent -from business_filer.services.utils import sync_drs def get_filing_types(legal_filings: dict): @@ -278,7 +277,7 @@ def process_filing(filing_message: FilingMessage): # noqa: PLR0915, PLR0912 json.dumps(filing_meta.asjson, default=json_serial) ) - sync_drs(filing_submission) + sync_drs(filing_submission, flags) db.session.add(filing_submission) db.session.commit() diff --git a/queue_services/business-filer/src/business_filer/services/utils.py b/queue_services/business-filer/src/business_filer/services/utils.py index e53d2da8de..df61043e1c 100644 --- a/queue_services/business-filer/src/business_filer/services/utils.py +++ b/queue_services/business-filer/src/business_filer/services/utils.py @@ -13,15 +13,6 @@ # limitations under the License. """Common utilities used by the services.""" from datetime import date -import copy -import json -from http import HTTPStatus - -from business_model.models import Filing -from document_record_service import DocumentRecordService, RequestInfo as DrsRequestInfo, DOCUMENT_TYPES, get_document_class -from flask import current_app - -from business_filer.services import flags import dpath.util @@ -94,72 +85,3 @@ def get_int(filing: dict, path: str) -> str: return int(raw) except (IndexError, KeyError, TypeError, ValueError): return None - -def sync_drs(filing_submission: Filing): # noqa: PLR0915, PLR0912 - document_id_state = filing_submission.filing_json['filing']['header'].get('documentIdState', {}) - legal_type = filing_submission.filing_json['filing']['business'].get('legalType') - - if document_id_state and flags.is_on('enable-document-records'): - filing_type = filing_submission.filing_json['filing']['header']['name'] - temp_reg = filing_submission.temp_reg - - if filing_type in ['incorporationApplication', 'continuationIn']: - # Get existing document on DRS - doc_list = DocumentRecordService().get_document( - DrsRequestInfo( - document_class=DOCUMENT_TYPES[filing_type]['class'], - consumer_identifier=temp_reg - ) - ) - - if not isinstance(doc_list, list): - current_app.logger.error( - f"No associated documents found for temporary registration ID: {temp_reg}" - ) - else: - # Update missing consumer document id - if document_id_state['valid'] and document_id_state['consumerDocumentId'] == '': - copied_json = copy.deepcopy(filing_submission.filing_json) - copied_json['filing']['header']['documentIdState']['consumerDocumentId'] = doc_list[0]['consumerDocumentId'] - filing_submission._filing_json = copied_json - # Replace temp registration id with business identifier: - for associated_document in doc_list: - doc_service_id = associated_document['documentServiceId'] - DocumentRecordService().update_document( - DrsRequestInfo( - document_service_id=doc_service_id, - consumer_identifier=filing_submission.filing_json['filing']['business']['identifier'], - consumer_reference_id=str(filing_submission.id) - ) - ) - - else: - if filing_type and document_id_state['valid']: - try: - document_class = get_document_class(legal_type) - if DOCUMENT_TYPES.get(filing_type, ''): - document_type = DOCUMENT_TYPES[filing_type] - else: - document_type = DOCUMENT_TYPES['systemIsTheRecord'] - - response_json = DocumentRecordService().post_class_document( - request_info=DrsRequestInfo( - document_class=document_class, - document_type=document_type, - consumer_reference_id=filing_submission.id, - consumer_doc_id=document_id_state['consumerDocumentId'], - consumer_identifier=filing_submission.filing_json['filing']['business']['identifier'] - ), - has_file=False - ) - if document_id_state['consumerDocumentId'] == '' and response_json: - # Update consumerDocumentId - copied_json = copy.deepcopy(filing_submission.filing_json) - copied_json['filing']['header']['documentIdState']['consumerDocumentId'] = response_json['consumerDocumentId'] - filing_submission._filing_json = copied_json - else: - current_app.logger.error( - f"Document Record Creation Error: {filing_submission.id}, {response_json['rootCause']}", exc_info=True) - - except Exception as error: - current_app.logger.error(f"Document Record Creation Error: {error}") From b3823f4c321f0fd4e8d8ca46cd11a04b2cd2f666 Mon Sep 17 00:00:00 2001 From: flutistar Date: Tue, 22 Jul 2025 08:24:31 -0700 Subject: [PATCH 03/18] updated sync function --- .../business_filer/services/document_service.py | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/queue_services/business-filer/src/business_filer/services/document_service.py b/queue_services/business-filer/src/business_filer/services/document_service.py index e20e3e5cc9..bf534f7d4d 100644 --- a/queue_services/business-filer/src/business_filer/services/document_service.py +++ b/queue_services/business-filer/src/business_filer/services/document_service.py @@ -1,7 +1,12 @@ import copy from business_model.models import Filing -from document_record_service import DocumentRecordService, RequestInfo as DrsRequestInfo, DOCUMENT_TYPES, get_document_class +from document_record_service import ( + DocumentRecordService, + RequestInfo as DrsRequestInfo, + get_document_class, + get_document_type +) from flask import current_app from business_filer.services import Flags @@ -18,7 +23,7 @@ def sync_drs(filing_submission: Filing, flags: Flags): # noqa: PLR0915, PLR0912 # Get existing document on DRS doc_list = DocumentRecordService().get_document( DrsRequestInfo( - document_class=DOCUMENT_TYPES[filing_type]['class'], + document_class=get_document_class(legal_type), consumer_identifier=temp_reg ) ) @@ -48,10 +53,7 @@ def sync_drs(filing_submission: Filing, flags: Flags): # noqa: PLR0915, PLR0912 if filing_type and document_id_state['valid']: try: document_class = get_document_class(legal_type) - if DOCUMENT_TYPES.get(filing_type, ''): - document_type = DOCUMENT_TYPES[filing_type] - else: - document_type = DOCUMENT_TYPES['systemIsTheRecord'] + document_type = get_document_type(filing_type, legal_type) response_json = DocumentRecordService().post_class_document( request_info=DrsRequestInfo( From dfeacd2f2e811ca9da825616eb13aeb0aa4a8ccb Mon Sep 17 00:00:00 2001 From: flutistar Date: Tue, 22 Jul 2025 08:30:36 -0700 Subject: [PATCH 04/18] added FIRMs doc types --- .../src/document_record_service/__init__.py | 3 +- .../src/document_record_service/constants.py | 77 +++++++++++++++---- .../document_record_service/utils/__init__.py | 4 +- .../document_record_service/utils/common.py | 26 ++++++- 4 files changed, 89 insertions(+), 21 deletions(-) diff --git a/python/common/document-record-service/src/document_record_service/__init__.py b/python/common/document-record-service/src/document_record_service/__init__.py index aa97f20108..9fd73a622d 100644 --- a/python/common/document-record-service/src/document_record_service/__init__.py +++ b/python/common/document-record-service/src/document_record_service/__init__.py @@ -6,7 +6,7 @@ DocumentTypes, ) from document_record_service.document_service import DocumentRecordService -from document_record_service.utils import RequestInfo, get_request_info, get_document_class +from document_record_service.utils import RequestInfo, get_request_info, get_document_class, get_document_type __all__ = [ DocumentClasses, @@ -15,6 +15,7 @@ RequestInfo, get_request_info, get_document_class, + get_document_type, DOCUMENT_TYPES, DOCUMENT_CLASSES, DRS_ID_PATTERN, diff --git a/python/common/document-record-service/src/document_record_service/constants.py b/python/common/document-record-service/src/document_record_service/constants.py index 34e0a50e6d..7cd9f22fc8 100644 --- a/python/common/document-record-service/src/document_record_service/constants.py +++ b/python/common/document-record-service/src/document_record_service/constants.py @@ -11,27 +11,67 @@ class DocumentClasses(Enum): class DocumentTypes(Enum): """Render an Enum of the document service document types.""" + # COOP + COFI = "COFI" # Correction Filing + COOP_MEMORANDUM = "COOP_MEMORANDUM" # Cooperative Memorandum + COOP_MISC = "COOP_MISC" # Cooperatives miscellaneous documents + COOP_RULES = "COOP_RULES" # Cooperative Rules - AFDV = "AFDV" - AMLG = "AMLG" - ANNR = "ANNR" - FRMA = "FRMA" - AMLO = "AMLO" - CNTO = "CNTO" - CNTI = "CNTI" - CNVS = "CNVS" - CORR = "CORR" - CRT = "CRT" - CORP = "CORP" - REGN = "REGN" - REGO = "REGO" - SYSR = "SYSR" + # CORP + AMAL = "AMAL" # Update Due to Amalgamation + AMLG = "AMLG" # Amalgamations + AMLO = "AMLO" # Amalgamation Out + ANNR = "ANNR" # Annual Report + APCO = "APCO" # Application to Correct the Registry + ASNU = "ASNU" # Assumed Name Undertaking + ATTN = "ATTN" # Attorney + CERT = "CERT" # Certificates + CLW = "CLW" # Client Letters + CNTA = "CNTA" # Continuation in Authorization + CNTI = "CNTI" # Continuation In + CNTO = "CNTO" # Continuation Out + CNVS = "CNVS" # Conversions + COFF = "COFF" # CORPS Filed Forms + COMP = "COMP" # CERTIFICATE OF COMPANIES + CORC = "CORC" # Corrections + CORP_AFFIDAVIT = "CORP_AFFIDAVIT" # Affidavit + CORP_MISC = "CORP_MISC" # Corporations miscellaneous documents + COSD = "COSD" # CORPS Supporting Documentation + COU = "COU" # INACTIVE/DEPRECATED Court Order + CRT = "CRT" # INACTIVE/DEPRECATED Court Order + CRTO = "CRTO" # Court Orders + DIRECTOR_AFFIDAVIT = "DIRECTOR_AFFIDAVIT" # Director Affidavit + DIRS = "DIRS" # Directors + DISD = "DISD" # Dissolution Delays + INV = "INV" # INACTIVE/DEPRECATED Investigation + FRMA = "FRMA" # Form 2's Address Change for Corps + LTR = "LTR" # Letter Templates + MNOR = "MNOR" # Minister's Order + NATB = "NATB" # INACTIVE/DEPRECATED Nature of Business + PLNA = "PLNA" # Plan of Arrangements + REGN = "REGN" # Registrar's Notation + REGO = "REGO" # Registrar's Order + RSRI = "RSRI" # Restoration/Reinstatement + SUPP = "SUPP" # Supporting Documents + SYSR = "SYSR" # System is the record + + # FIRM + CNVF = "CNVF" # Conversion of Firm + COPN = "COPN" # Change of Proprietor's Name + DISS = "DISS" # Dissolution Due to Death + FIRM_MISC = "FIRM_MISC" # Firms miscellaneous documents + PART = "PART" # Partnerships + # common + ADDR = "ADDR" # Address CORP/FIRM + CONT = "CONT" # Consent | COOP/CORP/FIRM + CORR = "CORR" # Correspondence | COOP/CORP/FIRM + FILE = "FILE" # COLIN Filing | COOP/CORP/FIRM # Map between filing and DRS document type # SYSR: alteration, appointReceiver, ceaseReceiver, changeOfDirectors, # incorporationApplication, restoration, noticeOfWithdrawal -DOCUMENT_TYPES = { +DOCUMENT_TYPES = { "amalgamationApplication": DocumentTypes.AMLG.value, "amalgamationOut": DocumentTypes.AMLO.value, "annualReport": DocumentTypes.ANNR.value, @@ -40,8 +80,11 @@ class DocumentTypes(Enum): "consentContinuationOut": DocumentTypes.CNTO.value, "continuationIn": DocumentTypes.CNTI.value, "continuationOut": DocumentTypes.CNTO.value, - "conversion": DocumentTypes.CNVS.value, - "correction": DocumentTypes.CORR.value, + "conversion": { + DocumentClasses.CORP.value: DocumentTypes.CNVS.value, + DocumentClasses.FIRM.value: DocumentTypes.CNVF.value + }, + "correction": DocumentTypes.CORC.value, "courtOrder": DocumentTypes.CRT.value, "registrarsNotation": DocumentTypes.REGN.value, "registrarsOrder": DocumentTypes.REGO.value, diff --git a/python/common/document-record-service/src/document_record_service/utils/__init__.py b/python/common/document-record-service/src/document_record_service/utils/__init__.py index bd39bf40c4..f9a94b1ad6 100644 --- a/python/common/document-record-service/src/document_record_service/utils/__init__.py +++ b/python/common/document-record-service/src/document_record_service/utils/__init__.py @@ -1,4 +1,4 @@ from .request_info import RequestInfo, get_request_info -from .common import get_document_class +from .common import get_document_class, get_document_type -__all__ = [get_request_info, RequestInfo, get_document_class] +__all__ = [get_request_info, RequestInfo, get_document_class, get_document_type] diff --git a/python/common/document-record-service/src/document_record_service/utils/common.py b/python/common/document-record-service/src/document_record_service/utils/common.py index f1fbf8fce6..2b71050568 100644 --- a/python/common/document-record-service/src/document_record_service/utils/common.py +++ b/python/common/document-record-service/src/document_record_service/utils/common.py @@ -1,4 +1,4 @@ -from document_record_service import DOCUMENT_CLASSES, DocumentClasses +from document_record_service import DOCUMENT_CLASSES, DOCUMENT_TYPES, DocumentClasses def get_document_class(legal_type): @@ -18,3 +18,27 @@ def get_document_class(legal_type): document_class = DOCUMENT_CLASSES.get(legal_type, "") return document_class if document_class else DocumentClasses.CORP.value + +def get_document_type(filing_type: str, legal_type: str) -> str: + """ + Returns the document type based on the given filing type and legal type. + + If the filing type maps to a string, it returns that string. + If the filing type maps to a dict, it uses the document class derived from the legal type + to look up the corresponding document type. + If no matching document type is found, it falls back to the 'systemIsTheRecord' type. + + Args: + filing_type (str): The type of filing (e.g., 'annualReport', 'correction', etc.). + legal_type (str): The legal entity type (e.g., 'BC', 'ULC', etc.). + + Returns: + str: The resolved document type. + """ + document_type = DOCUMENT_TYPES.get(filing_type, '') + if isinstance(document_type, str): + return document_type if document_type else DOCUMENT_TYPES.get('systemIsTheRecord') + elif isinstance(document_type, dict): + document_class = get_document_class(legal_type) + doc_type = document_type.get(document_class, '') + return doc_type if doc_type else DOCUMENT_TYPES.get('systemIsTheRecord') From de0c5cccd5355abcf386d60bc9f9aab6394c901c Mon Sep 17 00:00:00 2001 From: flutistar Date: Tue, 22 Jul 2025 08:38:46 -0700 Subject: [PATCH 05/18] fixed linting issue --- .../src/business_filer/services/__init__.py | 2 +- .../services/document_service.py | 30 +++++++++---------- 2 files changed, 16 insertions(+), 16 deletions(-) diff --git a/queue_services/business-filer/src/business_filer/services/__init__.py b/queue_services/business-filer/src/business_filer/services/__init__.py index 792dcadd0d..36911b4704 100644 --- a/queue_services/business-filer/src/business_filer/services/__init__.py +++ b/queue_services/business-filer/src/business_filer/services/__init__.py @@ -36,8 +36,8 @@ from ..common.services.account_service import AccountService # noqa: TID252 from ..common.services.flag_manager import Flags # noqa: TID252 -from .gcp_auth import verify_gcp_jwt from .document_service import sync_drs +from .gcp_auth import verify_gcp_jwt flags = Flags() gcp_queue = GcpQueue() diff --git a/queue_services/business-filer/src/business_filer/services/document_service.py b/queue_services/business-filer/src/business_filer/services/document_service.py index bf534f7d4d..18e4271748 100644 --- a/queue_services/business-filer/src/business_filer/services/document_service.py +++ b/queue_services/business-filer/src/business_filer/services/document_service.py @@ -12,14 +12,14 @@ from business_filer.services import Flags def sync_drs(filing_submission: Filing, flags: Flags): # noqa: PLR0915, PLR0912 - document_id_state = filing_submission.filing_json['filing']['header'].get('documentIdState', {}) - legal_type = filing_submission.filing_json['filing']['business'].get('legalType') + document_id_state = filing_submission.filing_json["filing"]["header"].get("documentIdState", {}) + legal_type = filing_submission.filing_json["filing"]["business"].get("legalType") - if document_id_state and flags.is_on('enable-document-records'): - filing_type = filing_submission.filing_json['filing']['header']['name'] + if document_id_state and flags.is_on("enable-document-records"): + filing_type = filing_submission.filing_json["filing"]["header"]["name"] temp_reg = filing_submission.temp_reg - if filing_type in ['incorporationApplication', 'continuationIn']: + if filing_type in ["incorporationApplication", "continuationIn"]: # Get existing document on DRS doc_list = DocumentRecordService().get_document( DrsRequestInfo( @@ -34,23 +34,23 @@ def sync_drs(filing_submission: Filing, flags: Flags): # noqa: PLR0915, PLR0912 ) else: # Update missing consumer document id - if document_id_state['valid'] and document_id_state['consumerDocumentId'] == '': + if document_id_state["valid"] and document_id_state["consumerDocumentId"] == "": copied_json = copy.deepcopy(filing_submission.filing_json) - copied_json['filing']['header']['documentIdState']['consumerDocumentId'] = doc_list[0]['consumerDocumentId'] + copied_json["filing"]["header"]["documentIdState"]["consumerDocumentId"] = doc_list[0]["consumerDocumentId"] filing_submission._filing_json = copied_json # Replace temp registration id with business identifier: for associated_document in doc_list: - doc_service_id = associated_document['documentServiceId'] + doc_service_id = associated_document["documentServiceId"] DocumentRecordService().update_document( DrsRequestInfo( document_service_id=doc_service_id, - consumer_identifier=filing_submission.filing_json['filing']['business']['identifier'], + consumer_identifier=filing_submission.filing_json["filing"]["business"]["identifier"], consumer_reference_id=str(filing_submission.id) ) ) else: - if filing_type and document_id_state['valid']: + if filing_type and document_id_state["valid"]: try: document_class = get_document_class(legal_type) document_type = get_document_type(filing_type, legal_type) @@ -60,19 +60,19 @@ def sync_drs(filing_submission: Filing, flags: Flags): # noqa: PLR0915, PLR0912 document_class=document_class, document_type=document_type, consumer_reference_id=filing_submission.id, - consumer_doc_id=document_id_state['consumerDocumentId'], - consumer_identifier=filing_submission.filing_json['filing']['business']['identifier'] + consumer_doc_id=document_id_state["consumerDocumentId"], + consumer_identifier=filing_submission.filing_json["filing"]["business"]["identifier"] ), has_file=False ) - if document_id_state['consumerDocumentId'] == '' and response_json: + if document_id_state["consumerDocumentId"] == "" and response_json: # Update consumerDocumentId copied_json = copy.deepcopy(filing_submission.filing_json) - copied_json['filing']['header']['documentIdState']['consumerDocumentId'] = response_json['consumerDocumentId'] + copied_json["filing"]["header"]["documentIdState"]["consumerDocumentId"] = response_json["consumerDocumentId"] filing_submission._filing_json = copied_json else: current_app.logger.error( - f"Document Record Creation Error: {filing_submission.id}, {response_json['rootCause']}", exc_info=True) + f"Document Record Creation Error: {filing_submission.id}, {response_json["rootCause"]}", exc_info=True) except Exception as error: current_app.logger.error(f"Document Record Creation Error: {error}") From 5fac055c377d4f07cdc92f862b64c4206daf2ddb Mon Sep 17 00:00:00 2001 From: flutistar Date: Tue, 22 Jul 2025 09:36:11 -0700 Subject: [PATCH 06/18] removed unused doc types --- .../src/document_record_service/constants.py | 2 -- 1 file changed, 2 deletions(-) diff --git a/python/common/document-record-service/src/document_record_service/constants.py b/python/common/document-record-service/src/document_record_service/constants.py index 7cd9f22fc8..102fadc089 100644 --- a/python/common/document-record-service/src/document_record_service/constants.py +++ b/python/common/document-record-service/src/document_record_service/constants.py @@ -76,8 +76,6 @@ class DocumentTypes(Enum): "amalgamationOut": DocumentTypes.AMLO.value, "annualReport": DocumentTypes.ANNR.value, "changeOfAddress": DocumentTypes.FRMA.value, - "consentAmalgamationOut": DocumentTypes.AMLO.value, - "consentContinuationOut": DocumentTypes.CNTO.value, "continuationIn": DocumentTypes.CNTI.value, "continuationOut": DocumentTypes.CNTO.value, "conversion": { From f88dcf19a803711d6e1ce3575d8f621e4f54f397 Mon Sep 17 00:00:00 2001 From: flutistar Date: Thu, 24 Jul 2025 08:05:48 -0700 Subject: [PATCH 07/18] add condition to verify staff filing --- .../src/business_filer/services/document_service.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/queue_services/business-filer/src/business_filer/services/document_service.py b/queue_services/business-filer/src/business_filer/services/document_service.py index 18e4271748..d9a5ea65ff 100644 --- a/queue_services/business-filer/src/business_filer/services/document_service.py +++ b/queue_services/business-filer/src/business_filer/services/document_service.py @@ -1,6 +1,6 @@ import copy -from business_model.models import Filing +from business_model.models import Filing, UserRoles from document_record_service import ( DocumentRecordService, RequestInfo as DrsRequestInfo, @@ -14,6 +14,7 @@ def sync_drs(filing_submission: Filing, flags: Flags): # noqa: PLR0915, PLR0912 document_id_state = filing_submission.filing_json["filing"]["header"].get("documentIdState", {}) legal_type = filing_submission.filing_json["filing"]["business"].get("legalType") + submitter_roles = filing_submission.submitter_roles if document_id_state and flags.is_on("enable-document-records"): filing_type = filing_submission.filing_json["filing"]["header"]["name"] @@ -49,7 +50,7 @@ def sync_drs(filing_submission: Filing, flags: Flags): # noqa: PLR0915, PLR0912 ) ) - else: + elif submitter_roles == UserRoles.staff: if filing_type and document_id_state["valid"]: try: document_class = get_document_class(legal_type) From 743e60a745826d26ad2f0391191e99fef6be7bc9 Mon Sep 17 00:00:00 2001 From: flutistar Date: Thu, 31 Jul 2025 08:50:40 -0700 Subject: [PATCH 08/18] replaced direct http call --- .../services/document_service.py | 46 ++++++------------- .../src/business_filer/services/filer.py | 2 +- .../business_filer/services/publish_event.py | 21 +++++++++ 3 files changed, 35 insertions(+), 34 deletions(-) diff --git a/queue_services/business-filer/src/business_filer/services/document_service.py b/queue_services/business-filer/src/business_filer/services/document_service.py index d9a5ea65ff..3177340b10 100644 --- a/queue_services/business-filer/src/business_filer/services/document_service.py +++ b/queue_services/business-filer/src/business_filer/services/document_service.py @@ -1,4 +1,5 @@ import copy +from flask import current_app from business_model.models import Filing, UserRoles from document_record_service import ( @@ -7,9 +8,9 @@ get_document_class, get_document_type ) -from flask import current_app from business_filer.services import Flags +from business_filer.services.publish_event import PublishEvent def sync_drs(filing_submission: Filing, flags: Flags): # noqa: PLR0915, PLR0912 document_id_state = filing_submission.filing_json["filing"]["header"].get("documentIdState", {}) @@ -19,8 +20,15 @@ def sync_drs(filing_submission: Filing, flags: Flags): # noqa: PLR0915, PLR0912 if document_id_state and flags.is_on("enable-document-records"): filing_type = filing_submission.filing_json["filing"]["header"]["name"] temp_reg = filing_submission.temp_reg - - if filing_type in ["incorporationApplication", "continuationIn"]: + + # Replace temp_reg with business_identifier for static documents(or staff filing) + if (filing_type in ["incorporationApplication", "continuationIn"] + or ( + submitter_roles == UserRoles.staff + and filing_type + and document_id_state["valid"] + and temp_reg + )): # Get existing document on DRS doc_list = DocumentRecordService().get_document( DrsRequestInfo( @@ -42,38 +50,10 @@ def sync_drs(filing_submission: Filing, flags: Flags): # noqa: PLR0915, PLR0912 # Replace temp registration id with business identifier: for associated_document in doc_list: doc_service_id = associated_document["documentServiceId"] - DocumentRecordService().update_document( + PublishEvent.publish_drs_creation_event(current_app, DrsRequestInfo( document_service_id=doc_service_id, consumer_identifier=filing_submission.filing_json["filing"]["business"]["identifier"], consumer_reference_id=str(filing_submission.id) - ) + ).json ) - - elif submitter_roles == UserRoles.staff: - if filing_type and document_id_state["valid"]: - try: - document_class = get_document_class(legal_type) - document_type = get_document_type(filing_type, legal_type) - - response_json = DocumentRecordService().post_class_document( - request_info=DrsRequestInfo( - document_class=document_class, - document_type=document_type, - consumer_reference_id=filing_submission.id, - consumer_doc_id=document_id_state["consumerDocumentId"], - consumer_identifier=filing_submission.filing_json["filing"]["business"]["identifier"] - ), - has_file=False - ) - if document_id_state["consumerDocumentId"] == "" and response_json: - # Update consumerDocumentId - copied_json = copy.deepcopy(filing_submission.filing_json) - copied_json["filing"]["header"]["documentIdState"]["consumerDocumentId"] = response_json["consumerDocumentId"] - filing_submission._filing_json = copied_json - else: - current_app.logger.error( - f"Document Record Creation Error: {filing_submission.id}, {response_json["rootCause"]}", exc_info=True) - - except Exception as error: - current_app.logger.error(f"Document Record Creation Error: {error}") diff --git a/queue_services/business-filer/src/business_filer/services/filer.py b/queue_services/business-filer/src/business_filer/services/filer.py index f08dd32046..dd271a61d0 100644 --- a/queue_services/business-filer/src/business_filer/services/filer.py +++ b/queue_services/business-filer/src/business_filer/services/filer.py @@ -277,7 +277,6 @@ def process_filing(filing_message: FilingMessage): # noqa: PLR0915, PLR0912 json.dumps(filing_meta.asjson, default=json_serial) ) - sync_drs(filing_submission, flags) db.session.add(filing_submission) db.session.commit() @@ -292,6 +291,7 @@ def process_filing(filing_message: FilingMessage): # noqa: PLR0915, PLR0912 ]: # update business id for new business filing_submission.business_id = business.id + sync_drs(filing_submission, flags) db.session.add(filing_submission) db.session.commit() diff --git a/queue_services/business-filer/src/business_filer/services/publish_event.py b/queue_services/business-filer/src/business_filer/services/publish_event.py index 9ea5e7d6fe..2771b73daa 100644 --- a/queue_services/business-filer/src/business_filer/services/publish_event.py +++ b/queue_services/business-filer/src/business_filer/services/publish_event.py @@ -95,3 +95,24 @@ def _create_cloud_event(app: Flask, business: Business, filing: Filing, subject: data=data ) return ce + + @staticmethod + def publish_drs_creation_event(app: Flask, data: dict): + """Publishes a DRS creation event as a SimpleCloudEvent.""" + try: + print(data, 'from publish drs creation') + subject = app.config.get("DOC_API_APP_CREATE_RECORD_TOPIC") + if not subject: + raise PublishException("Missing DOC_API_APP_CREATE_RECORD_TOPIC in config.") + + ce = SimpleCloudEvent( + id=str(uuid.uuid4()), + source="business-filer", + subject=subject, + time=datetime.now(UTC), + data=data + ) + + gcp_queue.publish(subject, to_queue_message(ce)) + except Exception as err: # pylint: disable=broad-except; + raise PublishException(err) from err From 01bd60d2e8adf9a7607d49594e7afcff10fc8c9f Mon Sep 17 00:00:00 2001 From: flutistar Date: Wed, 6 Aug 2025 09:32:19 -0700 Subject: [PATCH 09/18] addressed comment --- queue_services/business-filer/devops/vaults.gcp.env | 4 ++++ queue_services/business-filer/src/business_filer/config.py | 1 + .../business-filer/src/business_filer/services/__init__.py | 1 - .../src/business_filer/services/document_service.py | 4 ++-- .../business-filer/src/business_filer/services/filer.py | 4 ++-- 5 files changed, 9 insertions(+), 5 deletions(-) diff --git a/queue_services/business-filer/devops/vaults.gcp.env b/queue_services/business-filer/devops/vaults.gcp.env index 2e8b305656..f3d5e93574 100644 --- a/queue_services/business-filer/devops/vaults.gcp.env +++ b/queue_services/business-filer/devops/vaults.gcp.env @@ -39,6 +39,10 @@ BUSINESS_MAILER_TOPIC="op://gcp-queue/$APP_ENV/topics/BUSINESS_EMAILER_TOPIC" BUSINESS_PAY_TOPIC="op://gcp-queue/$APP_ENV/topics/BUSINESS_PAY_TOPIC" NAMEX_PAY_TOPIC="op://gcp-queue/$APP_ENV/topics/NAMEX_PAY_TOPIC" VPC_CONNECTOR="op://CD/$APP_ENV/base/VPC_CONNECTOR" +DOC_API_URL = "op://gcp-queue/$APP_ENV/topics/DOC_API_URL" +DOC_API_ACCOUNT_ID = "op://gcp-queue/$APP_ENV/topics/DOC_API_ACCOUNT_ID" +DOC_API_KEY = "op://gcp-queue/$APP_ENV/topics/DOC_API_KEY" +DOC_API_APP_CREATE_RECORD_TOPIC = "op://gcp-queue/$APP_ENV/topics/DOC_ADOC_API_APP_CREATE_RECORD_TOPICPI_KEY" #gunicorn config GUNICORN_PROCESSES="op://entity/$APP_ENV/business-api/GUNICORN_PROCESSES" diff --git a/queue_services/business-filer/src/business_filer/config.py b/queue_services/business-filer/src/business_filer/config.py index 4595aee02a..a56712007f 100644 --- a/queue_services/business-filer/src/business_filer/config.py +++ b/queue_services/business-filer/src/business_filer/config.py @@ -89,6 +89,7 @@ class _Config: # pylint: disable=too-few-public-methods DOC_API_URL = os.getenv("DOC_API_URL", "") DOC_API_ACCOUNT_ID = os.getenv("DOC_API_ACCOUNT_ID", "") DOC_API_KEY = os.getenv("DOC_API_KEY", "") + DOC_API_APP_CREATE_RECORD_TOPIC = os.getenv("DOC_API_APP_CREATE_RECORD_TOPIC", "") class DevConfig(_Config): # pylint: disable=too-few-public-methods diff --git a/queue_services/business-filer/src/business_filer/services/__init__.py b/queue_services/business-filer/src/business_filer/services/__init__.py index 36911b4704..4e52d7b98b 100644 --- a/queue_services/business-filer/src/business_filer/services/__init__.py +++ b/queue_services/business-filer/src/business_filer/services/__init__.py @@ -36,7 +36,6 @@ from ..common.services.account_service import AccountService # noqa: TID252 from ..common.services.flag_manager import Flags # noqa: TID252 -from .document_service import sync_drs from .gcp_auth import verify_gcp_jwt flags = Flags() diff --git a/queue_services/business-filer/src/business_filer/services/document_service.py b/queue_services/business-filer/src/business_filer/services/document_service.py index 3177340b10..fa2d170c36 100644 --- a/queue_services/business-filer/src/business_filer/services/document_service.py +++ b/queue_services/business-filer/src/business_filer/services/document_service.py @@ -18,7 +18,7 @@ def sync_drs(filing_submission: Filing, flags: Flags): # noqa: PLR0915, PLR0912 submitter_roles = filing_submission.submitter_roles if document_id_state and flags.is_on("enable-document-records"): - filing_type = filing_submission.filing_json["filing"]["header"]["name"] + filing_type = filing_submission.filing_type temp_reg = filing_submission.temp_reg # Replace temp_reg with business_identifier for static documents(or staff filing) @@ -38,7 +38,7 @@ def sync_drs(filing_submission: Filing, flags: Flags): # noqa: PLR0915, PLR0912 ) if not isinstance(doc_list, list): - current_app.logger.error( + current_app.logger.info( f"No associated documents found for temporary registration ID: {temp_reg}" ) else: diff --git a/queue_services/business-filer/src/business_filer/services/filer.py b/queue_services/business-filer/src/business_filer/services/filer.py index dd271a61d0..7de77ee456 100644 --- a/queue_services/business-filer/src/business_filer/services/filer.py +++ b/queue_services/business-filer/src/business_filer/services/filer.py @@ -80,8 +80,9 @@ transparency_register, ) from business_filer.filing_processors.filing_components import business_profile, name_request -from business_filer.services import flags, sync_drs +from business_filer.services import flags from business_filer.services.publish_event import PublishEvent +from business_filer.services.document_service import sync_drs def get_filing_types(legal_filings: dict): @@ -277,7 +278,6 @@ def process_filing(filing_message: FilingMessage): # noqa: PLR0915, PLR0912 json.dumps(filing_meta.asjson, default=json_serial) ) - db.session.add(filing_submission) db.session.commit() From 04d64e94dba3d8f660e6de532f9de80b8260d8cc Mon Sep 17 00:00:00 2001 From: flutistar Date: Wed, 6 Aug 2025 09:40:48 -0700 Subject: [PATCH 10/18] added logging block --- .../src/business_filer/services/document_service.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/queue_services/business-filer/src/business_filer/services/document_service.py b/queue_services/business-filer/src/business_filer/services/document_service.py index fa2d170c36..6c568c88c7 100644 --- a/queue_services/business-filer/src/business_filer/services/document_service.py +++ b/queue_services/business-filer/src/business_filer/services/document_service.py @@ -47,6 +47,9 @@ def sync_drs(filing_submission: Filing, flags: Flags): # noqa: PLR0915, PLR0912 copied_json = copy.deepcopy(filing_submission.filing_json) copied_json["filing"]["header"]["documentIdState"]["consumerDocumentId"] = doc_list[0]["consumerDocumentId"] filing_submission._filing_json = copied_json + current_app.logger.info( + f"Updated missing document id {doc_list[0]["consumerDocumentId"]}" + ) # Replace temp registration id with business identifier: for associated_document in doc_list: doc_service_id = associated_document["documentServiceId"] From 56cdcb06014c301999f3854f772f9efdf903ca35 Mon Sep 17 00:00:00 2001 From: flutistar Date: Wed, 6 Aug 2025 19:45:40 +0000 Subject: [PATCH 11/18] addressed comment --- queue_services/business-filer/devops/vaults.gcp.env | 2 +- .../src/business_filer/services/document_service.py | 10 +++++----- .../src/business_filer/services/filer.py | 4 ++-- 3 files changed, 8 insertions(+), 8 deletions(-) diff --git a/queue_services/business-filer/devops/vaults.gcp.env b/queue_services/business-filer/devops/vaults.gcp.env index f3d5e93574..d90fedee51 100644 --- a/queue_services/business-filer/devops/vaults.gcp.env +++ b/queue_services/business-filer/devops/vaults.gcp.env @@ -42,7 +42,7 @@ VPC_CONNECTOR="op://CD/$APP_ENV/base/VPC_CONNECTOR" DOC_API_URL = "op://gcp-queue/$APP_ENV/topics/DOC_API_URL" DOC_API_ACCOUNT_ID = "op://gcp-queue/$APP_ENV/topics/DOC_API_ACCOUNT_ID" DOC_API_KEY = "op://gcp-queue/$APP_ENV/topics/DOC_API_KEY" -DOC_API_APP_CREATE_RECORD_TOPIC = "op://gcp-queue/$APP_ENV/topics/DOC_ADOC_API_APP_CREATE_RECORD_TOPICPI_KEY" +DOC_API_APP_CREATE_RECORD_TOPIC = "op://gcp-queue/$APP_ENV/topics/DOC_API_APP_CREATE_RECORD_TOPIC" #gunicorn config GUNICORN_PROCESSES="op://entity/$APP_ENV/business-api/GUNICORN_PROCESSES" diff --git a/queue_services/business-filer/src/business_filer/services/document_service.py b/queue_services/business-filer/src/business_filer/services/document_service.py index 6c568c88c7..7f33c2a1f8 100644 --- a/queue_services/business-filer/src/business_filer/services/document_service.py +++ b/queue_services/business-filer/src/business_filer/services/document_service.py @@ -5,14 +5,13 @@ from document_record_service import ( DocumentRecordService, RequestInfo as DrsRequestInfo, - get_document_class, - get_document_type + get_document_class ) from business_filer.services import Flags from business_filer.services.publish_event import PublishEvent -def sync_drs(filing_submission: Filing, flags: Flags): # noqa: PLR0915, PLR0912 +def update_drs_with_busienss_id(filing_submission: Filing, flags: Flags): # noqa: PLR0915, PLR0912 document_id_state = filing_submission.filing_json["filing"]["header"].get("documentIdState", {}) legal_type = filing_submission.filing_json["filing"]["business"].get("legalType") submitter_roles = filing_submission.submitter_roles @@ -24,8 +23,9 @@ def sync_drs(filing_submission: Filing, flags: Flags): # noqa: PLR0915, PLR0912 # Replace temp_reg with business_identifier for static documents(or staff filing) if (filing_type in ["incorporationApplication", "continuationIn"] or ( + # If a filing is created by staff on the UI with a temp ID, + # replace it with the business identifier submitter_roles == UserRoles.staff - and filing_type and document_id_state["valid"] and temp_reg )): @@ -56,7 +56,7 @@ def sync_drs(filing_submission: Filing, flags: Flags): # noqa: PLR0915, PLR0912 PublishEvent.publish_drs_creation_event(current_app, DrsRequestInfo( document_service_id=doc_service_id, - consumer_identifier=filing_submission.filing_json["filing"]["business"]["identifier"], + consumer_identifier=filing_submission.business_id, consumer_reference_id=str(filing_submission.id) ).json ) diff --git a/queue_services/business-filer/src/business_filer/services/filer.py b/queue_services/business-filer/src/business_filer/services/filer.py index 7de77ee456..85358dd36d 100644 --- a/queue_services/business-filer/src/business_filer/services/filer.py +++ b/queue_services/business-filer/src/business_filer/services/filer.py @@ -82,7 +82,7 @@ from business_filer.filing_processors.filing_components import business_profile, name_request from business_filer.services import flags from business_filer.services.publish_event import PublishEvent -from business_filer.services.document_service import sync_drs +from business_filer.services.document_service import update_drs_with_busienss_id def get_filing_types(legal_filings: dict): @@ -291,7 +291,7 @@ def process_filing(filing_message: FilingMessage): # noqa: PLR0915, PLR0912 ]: # update business id for new business filing_submission.business_id = business.id - sync_drs(filing_submission, flags) + update_drs_with_busienss_id(filing_submission, flags) db.session.add(filing_submission) db.session.commit() From 77d70edf7df22ab1370287cb596217b5d783cce6 Mon Sep 17 00:00:00 2001 From: flutistar Date: Wed, 6 Aug 2025 20:18:37 +0000 Subject: [PATCH 12/18] updated env variables --- queue_services/business-filer/devops/vaults.gcp.env | 8 ++++---- .../business-filer/src/business_filer/config.py | 2 +- .../src/business_filer/services/publish_event.py | 4 ++-- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/queue_services/business-filer/devops/vaults.gcp.env b/queue_services/business-filer/devops/vaults.gcp.env index d90fedee51..95be4ed77f 100644 --- a/queue_services/business-filer/devops/vaults.gcp.env +++ b/queue_services/business-filer/devops/vaults.gcp.env @@ -39,10 +39,10 @@ BUSINESS_MAILER_TOPIC="op://gcp-queue/$APP_ENV/topics/BUSINESS_EMAILER_TOPIC" BUSINESS_PAY_TOPIC="op://gcp-queue/$APP_ENV/topics/BUSINESS_PAY_TOPIC" NAMEX_PAY_TOPIC="op://gcp-queue/$APP_ENV/topics/NAMEX_PAY_TOPIC" VPC_CONNECTOR="op://CD/$APP_ENV/base/VPC_CONNECTOR" -DOC_API_URL = "op://gcp-queue/$APP_ENV/topics/DOC_API_URL" -DOC_API_ACCOUNT_ID = "op://gcp-queue/$APP_ENV/topics/DOC_API_ACCOUNT_ID" -DOC_API_KEY = "op://gcp-queue/$APP_ENV/topics/DOC_API_KEY" -DOC_API_APP_CREATE_RECORD_TOPIC = "op://gcp-queue/$APP_ENV/topics/DOC_API_APP_CREATE_RECORD_TOPIC" +DOC_API_URL = "op://API/$APP_ENV/doc-api/DOC_API_URL" +DOC_API_VERSION = "op://API/$APP_ENV/doc-api/DOC_API_VERSION" +DOC_API_KEY = op://API/$APP_ENV/doc-api/DOC_API_KEY +DOC_CREATE_REC_TOPIC="op://gcp-queue/$APP_ENV/topics/DOC_CREATE_REC_TOPIC" #gunicorn config GUNICORN_PROCESSES="op://entity/$APP_ENV/business-api/GUNICORN_PROCESSES" diff --git a/queue_services/business-filer/src/business_filer/config.py b/queue_services/business-filer/src/business_filer/config.py index a56712007f..5102029014 100644 --- a/queue_services/business-filer/src/business_filer/config.py +++ b/queue_services/business-filer/src/business_filer/config.py @@ -89,7 +89,7 @@ class _Config: # pylint: disable=too-few-public-methods DOC_API_URL = os.getenv("DOC_API_URL", "") DOC_API_ACCOUNT_ID = os.getenv("DOC_API_ACCOUNT_ID", "") DOC_API_KEY = os.getenv("DOC_API_KEY", "") - DOC_API_APP_CREATE_RECORD_TOPIC = os.getenv("DOC_API_APP_CREATE_RECORD_TOPIC", "") + DOC_CREATE_REC_TOPIC = os.getenv("DOC_CREATE_REC_TOPIC", "") class DevConfig(_Config): # pylint: disable=too-few-public-methods diff --git a/queue_services/business-filer/src/business_filer/services/publish_event.py b/queue_services/business-filer/src/business_filer/services/publish_event.py index 2771b73daa..03f82753ae 100644 --- a/queue_services/business-filer/src/business_filer/services/publish_event.py +++ b/queue_services/business-filer/src/business_filer/services/publish_event.py @@ -101,9 +101,9 @@ def publish_drs_creation_event(app: Flask, data: dict): """Publishes a DRS creation event as a SimpleCloudEvent.""" try: print(data, 'from publish drs creation') - subject = app.config.get("DOC_API_APP_CREATE_RECORD_TOPIC") + subject = app.config.get("DOC_CREATE_REC_TOPIC") if not subject: - raise PublishException("Missing DOC_API_APP_CREATE_RECORD_TOPIC in config.") + raise PublishException("Missing DOC_CREATE_REC_TOPIC in config.") ce = SimpleCloudEvent( id=str(uuid.uuid4()), From d27c6ab8c7f423138ff23a3ec770927926b94957 Mon Sep 17 00:00:00 2001 From: flutistar Date: Wed, 6 Aug 2025 20:25:24 +0000 Subject: [PATCH 13/18] addressed comment --- .../src/business_filer/services/document_service.py | 3 +-- .../business-filer/src/business_filer/services/filer.py | 2 +- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/queue_services/business-filer/src/business_filer/services/document_service.py b/queue_services/business-filer/src/business_filer/services/document_service.py index 7f33c2a1f8..800f4f0375 100644 --- a/queue_services/business-filer/src/business_filer/services/document_service.py +++ b/queue_services/business-filer/src/business_filer/services/document_service.py @@ -11,9 +11,8 @@ from business_filer.services import Flags from business_filer.services.publish_event import PublishEvent -def update_drs_with_busienss_id(filing_submission: Filing, flags: Flags): # noqa: PLR0915, PLR0912 +def update_drs_with_busienss_id(filing_submission: Filing, flags: Flags, legal_type: str): # noqa: PLR0915, PLR0912 document_id_state = filing_submission.filing_json["filing"]["header"].get("documentIdState", {}) - legal_type = filing_submission.filing_json["filing"]["business"].get("legalType") submitter_roles = filing_submission.submitter_roles if document_id_state and flags.is_on("enable-document-records"): diff --git a/queue_services/business-filer/src/business_filer/services/filer.py b/queue_services/business-filer/src/business_filer/services/filer.py index 85358dd36d..ae9358b698 100644 --- a/queue_services/business-filer/src/business_filer/services/filer.py +++ b/queue_services/business-filer/src/business_filer/services/filer.py @@ -291,7 +291,7 @@ def process_filing(filing_message: FilingMessage): # noqa: PLR0915, PLR0912 ]: # update business id for new business filing_submission.business_id = business.id - update_drs_with_busienss_id(filing_submission, flags) + update_drs_with_busienss_id(filing_submission, flags, business.legal_type) db.session.add(filing_submission) db.session.commit() From edc8ad8a9defc7a4e9f0f26b2b1681ea1d656bb2 Mon Sep 17 00:00:00 2001 From: flutistar Date: Wed, 6 Aug 2025 20:58:47 +0000 Subject: [PATCH 14/18] addressed comments --- .../src/business_filer/services/document_service.py | 13 +++++++------ .../src/business_filer/services/filer.py | 2 +- 2 files changed, 8 insertions(+), 7 deletions(-) diff --git a/queue_services/business-filer/src/business_filer/services/document_service.py b/queue_services/business-filer/src/business_filer/services/document_service.py index 800f4f0375..499840a824 100644 --- a/queue_services/business-filer/src/business_filer/services/document_service.py +++ b/queue_services/business-filer/src/business_filer/services/document_service.py @@ -1,7 +1,7 @@ import copy from flask import current_app -from business_model.models import Filing, UserRoles +from business_model.models import Filing, UserRoles, Business from document_record_service import ( DocumentRecordService, RequestInfo as DrsRequestInfo, @@ -11,7 +11,7 @@ from business_filer.services import Flags from business_filer.services.publish_event import PublishEvent -def update_drs_with_busienss_id(filing_submission: Filing, flags: Flags, legal_type: str): # noqa: PLR0915, PLR0912 +def update_drs_with_busienss_id(filing_submission: Filing, flags: Flags, business: Business): # noqa: PLR0915, PLR0912 document_id_state = filing_submission.filing_json["filing"]["header"].get("documentIdState", {}) submitter_roles = filing_submission.submitter_roles @@ -22,8 +22,9 @@ def update_drs_with_busienss_id(filing_submission: Filing, flags: Flags, legal_t # Replace temp_reg with business_identifier for static documents(or staff filing) if (filing_type in ["incorporationApplication", "continuationIn"] or ( - # If a filing is created by staff on the UI with a temp ID, - # replace it with the business identifier + # If a filing (example amalgamationApplication) is created by staff, + # then staff uploads a scanned paper document to DRS and enter the document id at the time of filing + # replace temp identifier with the business identifier submitter_roles == UserRoles.staff and document_id_state["valid"] and temp_reg @@ -31,7 +32,7 @@ def update_drs_with_busienss_id(filing_submission: Filing, flags: Flags, legal_t # Get existing document on DRS doc_list = DocumentRecordService().get_document( DrsRequestInfo( - document_class=get_document_class(legal_type), + document_class=get_document_class(business.legal_type), consumer_identifier=temp_reg ) ) @@ -55,7 +56,7 @@ def update_drs_with_busienss_id(filing_submission: Filing, flags: Flags, legal_t PublishEvent.publish_drs_creation_event(current_app, DrsRequestInfo( document_service_id=doc_service_id, - consumer_identifier=filing_submission.business_id, + consumer_identifier=business.identifier, consumer_reference_id=str(filing_submission.id) ).json ) diff --git a/queue_services/business-filer/src/business_filer/services/filer.py b/queue_services/business-filer/src/business_filer/services/filer.py index ae9358b698..54b1cf2574 100644 --- a/queue_services/business-filer/src/business_filer/services/filer.py +++ b/queue_services/business-filer/src/business_filer/services/filer.py @@ -291,7 +291,7 @@ def process_filing(filing_message: FilingMessage): # noqa: PLR0915, PLR0912 ]: # update business id for new business filing_submission.business_id = business.id - update_drs_with_busienss_id(filing_submission, flags, business.legal_type) + update_drs_with_busienss_id(filing_submission, flags, business) db.session.add(filing_submission) db.session.commit() From 82aa71417d72ef6cb62eb4384fb733edb62f70c9 Mon Sep 17 00:00:00 2001 From: flutistar Date: Wed, 6 Aug 2025 21:09:12 +0000 Subject: [PATCH 15/18] fixed linting issue --- .../business-filer/src/business_filer/services/publish_event.py | 1 - 1 file changed, 1 deletion(-) diff --git a/queue_services/business-filer/src/business_filer/services/publish_event.py b/queue_services/business-filer/src/business_filer/services/publish_event.py index 03f82753ae..80342478d1 100644 --- a/queue_services/business-filer/src/business_filer/services/publish_event.py +++ b/queue_services/business-filer/src/business_filer/services/publish_event.py @@ -100,7 +100,6 @@ def _create_cloud_event(app: Flask, business: Business, filing: Filing, subject: def publish_drs_creation_event(app: Flask, data: dict): """Publishes a DRS creation event as a SimpleCloudEvent.""" try: - print(data, 'from publish drs creation') subject = app.config.get("DOC_CREATE_REC_TOPIC") if not subject: raise PublishException("Missing DOC_CREATE_REC_TOPIC in config.") From fab99bdf38b199bea8a1df320c79c37c0f085f97 Mon Sep 17 00:00:00 2001 From: flutistar Date: Wed, 6 Aug 2025 21:15:00 +0000 Subject: [PATCH 16/18] fixed linting issue --- .../business_filer/services/document_service.py | 14 ++++++-------- .../src/business_filer/services/filer.py | 2 +- 2 files changed, 7 insertions(+), 9 deletions(-) diff --git a/queue_services/business-filer/src/business_filer/services/document_service.py b/queue_services/business-filer/src/business_filer/services/document_service.py index 499840a824..29e86f282c 100644 --- a/queue_services/business-filer/src/business_filer/services/document_service.py +++ b/queue_services/business-filer/src/business_filer/services/document_service.py @@ -1,17 +1,15 @@ import copy -from flask import current_app -from business_model.models import Filing, UserRoles, Business -from document_record_service import ( - DocumentRecordService, - RequestInfo as DrsRequestInfo, - get_document_class -) +from business_model.models import Business, Filing, UserRoles +from document_record_service import DocumentRecordService, get_document_class +from document_record_service import RequestInfo as DrsRequestInfo +from flask import current_app from business_filer.services import Flags from business_filer.services.publish_event import PublishEvent -def update_drs_with_busienss_id(filing_submission: Filing, flags: Flags, business: Business): # noqa: PLR0915, PLR0912 + +def update_drs_with_busienss_id(filing_submission: Filing, flags: Flags, business: Business): document_id_state = filing_submission.filing_json["filing"]["header"].get("documentIdState", {}) submitter_roles = filing_submission.submitter_roles diff --git a/queue_services/business-filer/src/business_filer/services/filer.py b/queue_services/business-filer/src/business_filer/services/filer.py index 54b1cf2574..71f5655a65 100644 --- a/queue_services/business-filer/src/business_filer/services/filer.py +++ b/queue_services/business-filer/src/business_filer/services/filer.py @@ -81,8 +81,8 @@ ) from business_filer.filing_processors.filing_components import business_profile, name_request from business_filer.services import flags -from business_filer.services.publish_event import PublishEvent from business_filer.services.document_service import update_drs_with_busienss_id +from business_filer.services.publish_event import PublishEvent def get_filing_types(legal_filings: dict): From df2bd0894728aa154e40bc9b96d6bc878de1841c Mon Sep 17 00:00:00 2001 From: flutistar Date: Wed, 6 Aug 2025 21:43:40 +0000 Subject: [PATCH 17/18] updated config --- queue_services/business-filer/src/business_filer/config.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/queue_services/business-filer/src/business_filer/config.py b/queue_services/business-filer/src/business_filer/config.py index 5102029014..fe070209a8 100644 --- a/queue_services/business-filer/src/business_filer/config.py +++ b/queue_services/business-filer/src/business_filer/config.py @@ -87,7 +87,7 @@ class _Config: # pylint: disable=too-few-public-methods AUDIENCE = os.getenv("AUDIENCE", "https://pubsub.googleapis.com/google.pubsub.v1.Subscriber") PUBLISHER_AUDIENCE = os.getenv("PUBLISHER_AUDIENCE", "https://pubsub.googleapis.com/google.pubsub.v1.Publisher") DOC_API_URL = os.getenv("DOC_API_URL", "") - DOC_API_ACCOUNT_ID = os.getenv("DOC_API_ACCOUNT_ID", "") + DOC_API_VERSION = os.getenv("DOC_API_VERSION", "") DOC_API_KEY = os.getenv("DOC_API_KEY", "") DOC_CREATE_REC_TOPIC = os.getenv("DOC_CREATE_REC_TOPIC", "") From 1fdaa192b3e523b870ae8eaeed34b49412919ad1 Mon Sep 17 00:00:00 2001 From: flutistar Date: Wed, 6 Aug 2025 21:59:39 +0000 Subject: [PATCH 18/18] updated env variable --- queue_services/business-filer/devops/vaults.gcp.env | 1 + queue_services/business-filer/src/business_filer/config.py | 1 + 2 files changed, 2 insertions(+) diff --git a/queue_services/business-filer/devops/vaults.gcp.env b/queue_services/business-filer/devops/vaults.gcp.env index 95be4ed77f..7a1315e8a1 100644 --- a/queue_services/business-filer/devops/vaults.gcp.env +++ b/queue_services/business-filer/devops/vaults.gcp.env @@ -42,6 +42,7 @@ VPC_CONNECTOR="op://CD/$APP_ENV/base/VPC_CONNECTOR" DOC_API_URL = "op://API/$APP_ENV/doc-api/DOC_API_URL" DOC_API_VERSION = "op://API/$APP_ENV/doc-api/DOC_API_VERSION" DOC_API_KEY = op://API/$APP_ENV/doc-api/DOC_API_KEY +DOC_API_ACCOUNT_ID = op://API/$APP_ENV/doc-api/DOC_API_ACCOUNT_ID DOC_CREATE_REC_TOPIC="op://gcp-queue/$APP_ENV/topics/DOC_CREATE_REC_TOPIC" #gunicorn config diff --git a/queue_services/business-filer/src/business_filer/config.py b/queue_services/business-filer/src/business_filer/config.py index fe070209a8..a8fbd274b8 100644 --- a/queue_services/business-filer/src/business_filer/config.py +++ b/queue_services/business-filer/src/business_filer/config.py @@ -88,6 +88,7 @@ class _Config: # pylint: disable=too-few-public-methods PUBLISHER_AUDIENCE = os.getenv("PUBLISHER_AUDIENCE", "https://pubsub.googleapis.com/google.pubsub.v1.Publisher") DOC_API_URL = os.getenv("DOC_API_URL", "") DOC_API_VERSION = os.getenv("DOC_API_VERSION", "") + DOC_API_ACCOUNT_ID = os.getenv("DOC_API_ACCOUNT_ID", "") DOC_API_KEY = os.getenv("DOC_API_KEY", "") DOC_CREATE_REC_TOPIC = os.getenv("DOC_CREATE_REC_TOPIC", "")