Skip to content

Commit

Permalink
introduce SiteServiceError exception class
Browse files Browse the repository at this point in the history
  • Loading branch information
dpgraham4401 committed Oct 19, 2023
1 parent 00e1a51 commit 4c8099c
Show file tree
Hide file tree
Showing 3 changed files with 14 additions and 8 deletions.
4 changes: 3 additions & 1 deletion server/apps/sites/services/profile_services.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@
from apps.sites.serializers import RcraPermissionSerializer # type: ignore

from ...core.models import RcraProfile # type: ignore
from .site_services import RcraSiteService, SiteService # type: ignore
from .site_services import RcraSiteService, SiteService, SiteServiceError # type: ignore

logger = logging.getLogger(__name__)

Expand Down Expand Up @@ -78,6 +78,8 @@ def _update_profile_permissions(self, permissions: list[dict]):
self._create_or_update_rcra_permission(
epa_permission=rcra_site_permission, site=site
)
except SiteServiceError as exc:
raise RcraProfileServiceError(f"Error creating or updating Haztrak Site {exc}")
except KeyError as exc:
raise RcraProfileServiceError(f"Error parsing RCRAInfo response: {str(exc)}")

Expand Down
10 changes: 7 additions & 3 deletions server/apps/sites/services/site_services.py
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,11 @@
logger = logging.getLogger(__name__)


class SiteServiceError(Exception):
def __init__(self, message: str):
super().__init__(message)


class SiteService:
"""
SiteService encapsulates the Haztrak site subdomain business logic and use cases.
Expand Down Expand Up @@ -47,20 +52,19 @@ def sync_rcra_manifest(self, *, site_id: Optional[str] = None) -> PullManifestsR
site_id=site_id, start_date=site.last_rcra_sync
)
# ToDo: uncomment this after we have manifest development fixtures
# limit the number of manifest to sync at a time
# limit the number of manifest to sync at a time per RCRAInfo rate limits
tracking_numbers = tracking_numbers[:30]
logger.info(f"Pulling {tracking_numbers} from RCRAInfo")
results: PullManifestsResult = manifest_service.pull_manifests(
tracking_numbers=tracking_numbers
)
# ToDo: uncomment this after we have manifest development fixtures
# Update the Rcrainfo last sync date for future sync operations
# site.last_rcra_sync = datetime.now().replace(tzinfo=timezone.utc)
site.save()
return results
except Site.DoesNotExist:
logger.warning(f"Site Does not exists {site_id}")
raise Exception
raise SiteServiceError(f"Site Does not exists {site_id}")

@transaction.atomic
def create_or_update_site(
Expand Down
8 changes: 4 additions & 4 deletions server/apps/trak/tasks/manifest_task.py
Original file line number Diff line number Diff line change
Expand Up @@ -70,10 +70,10 @@ def sign_manifest(
except (ConnectionError, TimeoutError) as exc:
raise Reject(exc)
except ValueError as exc:
self.update_state(state=states.FAILURE, meta=f"ValueError: {exc}")
self.update_state(state=states.FAILURE, meta={"Error": f"{repr(exc)}"})
raise Ignore()
except Exception as exc:
self.update_state(state=states.FAILURE, meta=f"unknown error: {exc}")
self.update_state(state=states.FAILURE, meta={"unknown error": f"{exc}"})
raise Ignore()


Expand All @@ -88,7 +88,7 @@ def sync_site_manifests(self, *, site_id: str, username: str):
return results
except Exception as exc:
logger.error(f"failed to sync {site_id} manifest")
self.update_state(state=states.FAILURE, meta=f"Internal Error {exc}")
self.update_state(state=states.FAILURE, meta={f"Error: {exc}"})
raise Ignore()


Expand All @@ -115,5 +115,5 @@ def create_rcra_manifest(self, *, manifest: dict, username: str):
return resp.json()
except Exception as exc:
logger.error("error: ", exc)
task_status.update_task_status(status="FAILURE", results=str(exc))
task_status.update_task_status(status="FAILURE", results={"result": str(exc)})
return {"error": f"Internal Error: {exc}"}

0 comments on commit 4c8099c

Please sign in to comment.