[2ff88f42] refactor(connector-superoffice): finalize production readiness cleanup
- Integrated centralized logging system in all modules. - Extracted all IDs and ProgIds into a separate . - Refactored and for cleaner dependency management. - Included updated discovery and inspection utilities. - Verified end-to-end workflow stability.
This commit is contained in:
@@ -1,8 +1,11 @@
|
||||
import requests
|
||||
import logging
|
||||
from auth_handler import AuthHandler
|
||||
from config import Config
|
||||
from logging_config import setup_logging
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
# Use the centralized logging configuration
|
||||
logger = setup_logging(__name__)
|
||||
|
||||
class SuperOfficeClient:
|
||||
"""
|
||||
@@ -12,31 +15,10 @@ class SuperOfficeClient:
|
||||
self.auth_handler = auth_handler
|
||||
self.session = requests.Session()
|
||||
|
||||
# Mapping for UDF fields for Contact entity
|
||||
self.udf_contact_mapping = {
|
||||
"ai_challenge_sentence": "SuperOffice:1",
|
||||
"ai_sentence_timestamp": "SuperOffice:2",
|
||||
"ai_sentence_source_hash": "SuperOffice:3",
|
||||
"ai_last_outreach_date": "SuperOffice:4"
|
||||
}
|
||||
|
||||
# Mapping for UDF fields for Person entity
|
||||
self.udf_person_mapping = {
|
||||
"ai_email_draft": "SuperOffice:1", # NOTE: This is currently a Date field in SO and needs to be changed to Text (Long/Memo)
|
||||
"ma_status": "SuperOffice:2"
|
||||
}
|
||||
|
||||
# Mapping for MA Status list values (Text Label -> SO ID)
|
||||
self.ma_status_id_map = {
|
||||
"Ready_to_Send": 11,
|
||||
"Sent_Week1": 12,
|
||||
"Sent_Week2": 13,
|
||||
"Bounced": 14,
|
||||
"Soft_Denied": 15,
|
||||
"Interested": 16,
|
||||
"Out_of_Office": 17,
|
||||
"Unsubscribed": 18
|
||||
}
|
||||
# Load mappings from Config
|
||||
self.udf_contact_mapping = Config.UDF_CONTACT_MAPPING
|
||||
self.udf_person_mapping = Config.UDF_PERSON_MAPPING
|
||||
self.ma_status_id_map = Config.MA_STATUS_ID_MAP
|
||||
|
||||
def _get_headers(self):
|
||||
"""Returns the authorization headers with Bearer token."""
|
||||
@@ -293,112 +275,38 @@ class SuperOfficeClient:
|
||||
return None
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
# NOTE: The create_email_activity method is currently blocked due to SuperOffice environment limitations.
|
||||
|
||||
|
||||
# Attempting to create an Email Activity via API results in a 500 Internal Server Error,
|
||||
|
||||
|
||||
# likely because the email module is not licensed or configured in the SOD environment.
|
||||
|
||||
|
||||
# This method is temporarily commented out.
|
||||
|
||||
|
||||
#
|
||||
|
||||
|
||||
# def create_email_activity(self, person_id, contact_id, subject, body):
|
||||
|
||||
|
||||
# """Creates an Email Activity linked to a person and contact."""
|
||||
|
||||
|
||||
# url = self._get_url("v1/Activity")
|
||||
|
||||
|
||||
#
|
||||
|
||||
|
||||
# payload = {
|
||||
|
||||
|
||||
# "Type": { # Assuming ID 2 for "Email" ActivityType
|
||||
|
||||
|
||||
# "Id": 2
|
||||
|
||||
|
||||
# },
|
||||
|
||||
|
||||
# "Title": subject,
|
||||
|
||||
|
||||
# "Details": body,
|
||||
|
||||
|
||||
# "Person": {
|
||||
|
||||
|
||||
# "PersonId": person_id
|
||||
|
||||
|
||||
# },
|
||||
|
||||
|
||||
# "Contact": {
|
||||
|
||||
|
||||
# "ContactId": contact_id
|
||||
|
||||
|
||||
# }
|
||||
|
||||
|
||||
# }
|
||||
|
||||
|
||||
#
|
||||
|
||||
|
||||
# try:
|
||||
|
||||
|
||||
# logger.info(f"Attempting to create Email Activity with subject '{subject}' for Person ID {person_id} and Contact ID {contact_id}")
|
||||
|
||||
|
||||
# resp = self.session.post(url, headers=self._get_headers(), json=payload)
|
||||
|
||||
|
||||
# resp.raise_for_status()
|
||||
|
||||
|
||||
# created_activity = resp.json()
|
||||
|
||||
|
||||
# logger.info(f"Successfully created Email Activity: '{created_activity.get('Title')}' (ID: {created_activity.get('ActivityId')})")
|
||||
|
||||
|
||||
# return created_activity
|
||||
|
||||
|
||||
# except Exception as e:
|
||||
|
||||
|
||||
# logger.error(f"Error creating Email Activity: {e}")
|
||||
|
||||
|
||||
# if hasattr(e, 'response') and e.response is not None:
|
||||
|
||||
|
||||
# logger.error(f"Response: {e.response.text}")
|
||||
|
||||
|
||||
# return None
|
||||
|
||||
|
||||
|
||||
# NOTE: The create_email_activity method is currently blocked due to SuperOffice environment limitations.
|
||||
# Attempting to create an Email Activity via API results in a 500 Internal Server Error,
|
||||
# likely because the email module is not licensed or configured in the SOD environment.
|
||||
# This method is temporarily commented out.
|
||||
#
|
||||
# def create_email_activity(self, person_id, contact_id, subject, body):
|
||||
# """Creates an Email Activity linked to a person and contact."""
|
||||
# url = self._get_url("v1/Activity")
|
||||
#
|
||||
# payload = {
|
||||
# "Type": { # Assuming ID 2 for "Email" ActivityType
|
||||
# "Id": 2
|
||||
# },
|
||||
# "Title": subject,
|
||||
# "Details": body,
|
||||
# "Person": {
|
||||
# "PersonId": person_id
|
||||
# },
|
||||
# "Contact": {
|
||||
# "ContactId": contact_id
|
||||
# }
|
||||
# }
|
||||
#
|
||||
# try:
|
||||
# logger.info(f"Attempting to create Email Activity with subject '{subject}' for Person ID {person_id} and Contact ID {contact_id}")
|
||||
# resp = self.session.post(url, headers=self._get_headers(), json=payload)
|
||||
# resp.raise_for_status()
|
||||
# created_activity = resp.json()
|
||||
# logger.info(f"Successfully created Email Activity: '{created_activity.get('Title')}' (ID: {created_activity.get('ActivityId')})")
|
||||
# return created_activity
|
||||
# except Exception as e:
|
||||
# logger.error(f"Error creating Email Activity: {e}")
|
||||
# if hasattr(e, 'response') and e.response is not None:
|
||||
# logger.error(f"Response: {e.response.text}")
|
||||
# return None
|
||||
Reference in New Issue
Block a user