From 8f9fe424db2c19cbbf10b0c3b57971d8e1c5cf40 Mon Sep 17 00:00:00 2001 From: Viswas Date: Tue, 28 Jan 2025 01:14:17 +0530 Subject: [PATCH] feat: POST to integrations settings API on onboarding completion --- apps/fyle/helpers.py | 2 +- apps/workspaces/serializers.py | 3 ++- apps/workspaces/tasks.py | 23 +++++++++++++++++++++++ quickbooks_desktop_api/settings.py | 1 + quickbooks_desktop_api/tests/settings.py | 1 + 5 files changed, 28 insertions(+), 2 deletions(-) diff --git a/apps/fyle/helpers.py b/apps/fyle/helpers.py index d8c1863..dac8d74 100644 --- a/apps/fyle/helpers.py +++ b/apps/fyle/helpers.py @@ -28,7 +28,7 @@ def post_request(url, body, refresh_token=None): data=body ) - if response.status_code == 200: + if response.status_code in (200, 201): return json.loads(response.text) else: raise Exception(response.text) diff --git a/apps/workspaces/serializers.py b/apps/workspaces/serializers.py index 2e01501..248d2d4 100644 --- a/apps/workspaces/serializers.py +++ b/apps/workspaces/serializers.py @@ -3,6 +3,7 @@ """ from typing import Dict from rest_framework import serializers +from apps.workspaces.tasks import post_to_integration_settings from django_q.tasks import async_task from django.core.cache import cache from apps.mappings.models import QBDMapping @@ -225,5 +226,5 @@ def create(self, validated_data): workspace.onboarding_state = 'COMPLETE' workspace.save() async_task('apps.workspaces.tasks.async_create_admin_subcriptions', workspace_id) - + post_to_integration_settings(workspace_id, True) return advanced_setting diff --git a/apps/workspaces/tasks.py b/apps/workspaces/tasks.py index 6b8bb2e..c728fe0 100644 --- a/apps/workspaces/tasks.py +++ b/apps/workspaces/tasks.py @@ -170,3 +170,26 @@ def async_update_timestamp_in_qbd_direct(workspace_id: int) -> None: raise Exception('Auth Token not present for workspace id {}'.format(workspace.id)) except Exception as e: logger.error("Failed to sync timestamp to QBD Connector: {}".format(e)) + + +def post_to_integration_settings(workspace_id: int, active: bool): + """ + Post to integration settings + """ + refresh_token = FyleCredential.objects.get(workspace_id=workspace_id).refresh_token + url = '{}/integrations/'.format(settings.INTEGRATIONS_SETTINGS_API) + payload = { + 'tpa_id': settings.FYLE_CLIENT_ID, + 'tpa_name': 'Fyle Quickbooks Desktop (IIF) Integration', + 'type': 'ACCOUNTING', + 'is_active': active, + 'connected_at': datetime.now().strftime('%Y-%m-%dT%H:%M:%S.%fZ') + } + + try: + post_request(url, json.dumps(payload), refresh_token) + org_id = Workspace.objects.get(id=workspace_id).org_id + logger.info(f'New integration record: Fyle Quickbooks Desktop (IIF) Integration (ACCOUNTING) | {workspace_id = } | {org_id = }') + + except Exception as error: + logger.error(error) diff --git a/quickbooks_desktop_api/settings.py b/quickbooks_desktop_api/settings.py index 402b4fd..bb5126d 100644 --- a/quickbooks_desktop_api/settings.py +++ b/quickbooks_desktop_api/settings.py @@ -268,6 +268,7 @@ FYLE_TOKEN_URI = os.environ.get('FYLE_TOKEN_URI') FYLE_CLIENT_ID = os.environ.get('FYLE_CLIENT_ID') FYLE_CLIENT_SECRET = os.environ.get('FYLE_CLIENT_SECRET') +INTEGRATIONS_SETTINGS_API = os.environ.get('INTEGRATIONS_SETTINGS_API') QBD_DIRECT_API_URL = os.environ.get('QBD_DIRECT_API_URL') diff --git a/quickbooks_desktop_api/tests/settings.py b/quickbooks_desktop_api/tests/settings.py index 477f62d..8bc79cf 100644 --- a/quickbooks_desktop_api/tests/settings.py +++ b/quickbooks_desktop_api/tests/settings.py @@ -246,6 +246,7 @@ FYLE_TOKEN_URI = os.environ.get('FYLE_TOKEN_URI') FYLE_CLIENT_ID = os.environ.get('FYLE_CLIENT_ID') FYLE_CLIENT_SECRET = os.environ.get('FYLE_CLIENT_SECRET') +INTEGRATIONS_SETTINGS_API = os.environ.get('INTEGRATIONS_SETTINGS_API') QBD_DIRECT_API_URL = os.environ.get('QBD_DIRECT_API_URL')