11import logging
22
3- from django_q .tasks import async_task
4- from fyle_accounting_library .fyle_platform .enums import ExpenseImportSourceEnum , RoutingKeyEnum , WebhookCallbackActionEnum
5- from fyle_accounting_library .rabbitmq .connector import RabbitMQConnection
6- from fyle_accounting_library .rabbitmq .data_class import RabbitMQData
3+ from fyle_accounting_library .fyle_platform .enums import ExpenseImportSourceEnum , WebhookCallbackActionEnum
74
85from apps .fyle .helpers import assert_valid_request
96from apps .workspaces .models import FeatureConfig
107from fyle_integrations_imports .modules .webhook_attributes import WebhookAttributeProcessor
8+ from workers .helpers import RoutingKeyEnum , WorkerActionEnum , publish_to_rabbitmq
119
1210logger = logging .getLogger (__name__ )
1311logger .level = logging .INFO
@@ -27,47 +25,78 @@ def handle_webhook_callback(body: dict, workspace_id: int) -> None:
2725 if data and data .get ('org_id' ):
2826 assert_valid_request (workspace_id = workspace_id , fyle_org_id = data ['org_id' ])
2927
30- rabbitmq = RabbitMQConnection .get_instance ('xero_exchange' )
3128 if action in ('ADMIN_APPROVED' , 'APPROVED' , 'STATE_CHANGE_PAYMENT_PROCESSING' , 'PAID' ) and data :
3229 report_id = data ['id' ]
3330 org_id = data ['org_id' ]
3431 state = data ['state' ]
3532 payload = {
33+ 'workspace_id' : workspace_id ,
34+ 'action' : WorkerActionEnum .EXPENSE_STATE_CHANGE .value ,
3635 'data' : {
3736 'report_id' : report_id ,
3837 'org_id' : org_id ,
3938 'is_state_change_event' : True ,
4039 'report_state' : state ,
4140 'imported_from' : ExpenseImportSourceEnum .WEBHOOK
42- },
43- 'workspace_id' : workspace_id
41+ }
4442 }
45- rabbitmq_data = RabbitMQData (
46- new = payload
47- )
48- rabbitmq .publish (RoutingKeyEnum .EXPORT , rabbitmq_data )
43+ publish_to_rabbitmq (payload = payload , routing_key = RoutingKeyEnum .EXPORT_P1 .value )
4944
5045 if action == 'ACCOUNTING_EXPORT_INITIATED' and data :
5146 report_id = data ['id' ]
5247 org_id = data ['org_id' ]
53- async_task ('apps.fyle.tasks.import_and_export_expenses' , report_id , org_id , False , None , ExpenseImportSourceEnum .DIRECT_EXPORT )
48+ payload = {
49+ 'workspace_id' : workspace_id ,
50+ 'action' : WorkerActionEnum .DIRECT_EXPORT .value ,
51+ 'data' : {
52+ 'report_id' : report_id ,
53+ 'org_id' : org_id ,
54+ 'is_state_change_event' : False ,
55+ 'report_state' : None ,
56+ 'imported_from' : ExpenseImportSourceEnum .DIRECT_EXPORT
57+ }
58+ }
59+ publish_to_rabbitmq (payload = payload , routing_key = RoutingKeyEnum .EXPORT_P0 .value )
5460
5561 elif action == 'UPDATED_AFTER_APPROVAL' and data and resource == 'EXPENSE' :
5662 org_id = data ['org_id' ]
5763 logger .info ("| Updating non-exported expenses through webhook | Content: {{WORKSPACE_ID: {} Payload: {}}}" .format (workspace_id , data ))
58- async_task ('apps.fyle.tasks.update_non_exported_expenses' , data )
64+ payload = {
65+ 'workspace_id' : workspace_id ,
66+ 'action' : WorkerActionEnum .EXPENSE_UPDATED_AFTER_APPROVAL .value ,
67+ 'data' : {
68+ 'data' : data
69+ }
70+ }
71+ publish_to_rabbitmq (payload = payload , routing_key = RoutingKeyEnum .UTILITY .value )
5972
6073 elif action in ('EJECTED_FROM_REPORT' , 'ADDED_TO_REPORT' ) and data and resource == 'EXPENSE' :
6174 org_id = data ['org_id' ]
6275 expense_id = data ['id' ]
6376 logger .info ("| Handling expense report change | Content: {{WORKSPACE_ID: {} EXPENSE_ID: {} ACTION: {} Payload: {}}}" .format (workspace_id , expense_id , action , data ))
64- async_task ('apps.fyle.tasks.handle_expense_report_change' , data , action )
77+ payload = {
78+ 'workspace_id' : workspace_id ,
79+ 'action' : WorkerActionEnum .EXPENSE_ADDED_EJECTED_FROM_REPORT .value ,
80+ 'data' : {
81+ 'expense_data' : data ,
82+ 'action_type' : action
83+ }
84+ }
85+ publish_to_rabbitmq (payload = payload , routing_key = RoutingKeyEnum .UTILITY .value )
6586
6687 elif (
6788 action == WebhookCallbackActionEnum .UPDATED .value
6889 and resource == 'ORG_SETTING'
6990 ):
70- async_task ('apps.fyle.tasks.handle_org_setting_updated' , workspace_id , data )
91+ payload = {
92+ 'workspace_id' : workspace_id ,
93+ 'action' : WorkerActionEnum .HANDLE_ORG_SETTING_UPDATED .value ,
94+ 'data' : {
95+ 'workspace_id' : workspace_id ,
96+ 'org_settings' : data
97+ }
98+ }
99+ publish_to_rabbitmq (payload = payload , routing_key = RoutingKeyEnum .UTILITY .value )
71100
72101 elif action in (WebhookCallbackActionEnum .CREATED , WebhookCallbackActionEnum .UPDATED , WebhookCallbackActionEnum .DELETED ):
73102 try :
0 commit comments