ethyca-fides 2.63.0rc2__py2.py3-none-any.whl → 2.63.1__py2.py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (131) hide show
  1. {ethyca_fides-2.63.0rc2.dist-info → ethyca_fides-2.63.1.dist-info}/METADATA +1 -1
  2. {ethyca_fides-2.63.0rc2.dist-info → ethyca_fides-2.63.1.dist-info}/RECORD +131 -112
  3. fides/_version.py +3 -3
  4. fides/api/alembic/migrations/versions/29e56fa1fdb3_add_monitor_tasks.py +147 -0
  5. fides/api/alembic/migrations/versions/5efcdf18438e_add_manual_task_tables.py +160 -0
  6. fides/api/alembic/migrations/versions/bf713b5a021d_staged_resource_ancestor_link_data_.py +20 -11
  7. fides/api/api/v1/endpoints/privacy_request_endpoints.py +4 -4
  8. fides/api/db/base.py +7 -1
  9. fides/api/migrations/post_upgrade_index_creation.py +3 -3
  10. fides/api/models/connectionconfig.py +1 -1
  11. fides/api/models/detection_discovery/__init__.py +35 -0
  12. fides/api/models/detection_discovery/monitor_task.py +162 -0
  13. fides/api/models/field_types/__init__.py +5 -0
  14. fides/api/models/field_types/encrypted_large_data.py +151 -0
  15. fides/api/models/manual_tasks/__init__.py +8 -0
  16. fides/api/models/manual_tasks/manual_task.py +110 -0
  17. fides/api/models/manual_tasks/manual_task_log.py +100 -0
  18. fides/api/models/privacy_preference.py +1 -1
  19. fides/api/models/privacy_request/execution_log.py +3 -31
  20. fides/api/models/privacy_request/privacy_request.py +16 -3
  21. fides/api/models/privacy_request/request_task.py +36 -25
  22. fides/api/models/worker_task.py +96 -0
  23. fides/api/schemas/external_storage.py +22 -0
  24. fides/api/schemas/manual_tasks/__init__.py +0 -0
  25. fides/api/schemas/manual_tasks/manual_task_schemas.py +79 -0
  26. fides/api/schemas/manual_tasks/manual_task_status.py +151 -0
  27. fides/api/schemas/privacy_request.py +1 -12
  28. fides/api/service/connectors/base_erasure_email_connector.py +1 -1
  29. fides/api/service/connectors/consent_email_connector.py +2 -1
  30. fides/api/service/connectors/dynamic_erasure_email_connector.py +2 -1
  31. fides/api/service/connectors/erasure_email_connector.py +1 -1
  32. fides/api/service/external_data_storage.py +371 -0
  33. fides/api/service/privacy_request/request_runner_service.py +5 -5
  34. fides/api/service/privacy_request/request_service.py +1 -1
  35. fides/api/task/create_request_tasks.py +1 -1
  36. fides/api/task/execute_request_tasks.py +9 -8
  37. fides/api/task/graph_task.py +22 -10
  38. fides/api/util/consent_util.py +1 -1
  39. fides/api/util/data_size.py +102 -0
  40. fides/api/util/encryption/aes_gcm_encryption_util.py +271 -0
  41. fides/service/manual_tasks/__init__.py +0 -0
  42. fides/service/manual_tasks/manual_task_service.py +150 -0
  43. fides/service/privacy_request/privacy_request_service.py +1 -1
  44. fides/ui-build/static/admin/404.html +1 -1
  45. fides/ui-build/static/admin/add-systems/manual.html +1 -1
  46. fides/ui-build/static/admin/add-systems/multiple.html +1 -1
  47. fides/ui-build/static/admin/add-systems.html +1 -1
  48. fides/ui-build/static/admin/consent/configure/add-vendors.html +1 -1
  49. fides/ui-build/static/admin/consent/configure.html +1 -1
  50. fides/ui-build/static/admin/consent/privacy-experience/[id].html +1 -1
  51. fides/ui-build/static/admin/consent/privacy-experience/new.html +1 -1
  52. fides/ui-build/static/admin/consent/privacy-experience.html +1 -1
  53. fides/ui-build/static/admin/consent/privacy-notices/[id].html +1 -1
  54. fides/ui-build/static/admin/consent/privacy-notices/new.html +1 -1
  55. fides/ui-build/static/admin/consent/privacy-notices.html +1 -1
  56. fides/ui-build/static/admin/consent/properties.html +1 -1
  57. fides/ui-build/static/admin/consent/reporting.html +1 -1
  58. fides/ui-build/static/admin/consent.html +1 -1
  59. fides/ui-build/static/admin/data-catalog/[systemId]/projects/[projectUrn]/[resourceUrn].html +1 -1
  60. fides/ui-build/static/admin/data-catalog/[systemId]/projects/[projectUrn].html +1 -1
  61. fides/ui-build/static/admin/data-catalog/[systemId]/projects.html +1 -1
  62. fides/ui-build/static/admin/data-catalog/[systemId]/resources/[resourceUrn].html +1 -1
  63. fides/ui-build/static/admin/data-catalog/[systemId]/resources.html +1 -1
  64. fides/ui-build/static/admin/data-catalog.html +1 -1
  65. fides/ui-build/static/admin/data-discovery/action-center/[monitorId]/[systemId].html +1 -1
  66. fides/ui-build/static/admin/data-discovery/action-center/[monitorId].html +1 -1
  67. fides/ui-build/static/admin/data-discovery/action-center.html +1 -1
  68. fides/ui-build/static/admin/data-discovery/activity.html +1 -1
  69. fides/ui-build/static/admin/data-discovery/detection/[resourceUrn].html +1 -1
  70. fides/ui-build/static/admin/data-discovery/detection.html +1 -1
  71. fides/ui-build/static/admin/data-discovery/discovery/[resourceUrn].html +1 -1
  72. fides/ui-build/static/admin/data-discovery/discovery.html +1 -1
  73. fides/ui-build/static/admin/datamap.html +1 -1
  74. fides/ui-build/static/admin/dataset/[datasetId]/[collectionName]/[...subfieldNames].html +1 -1
  75. fides/ui-build/static/admin/dataset/[datasetId]/[collectionName].html +1 -1
  76. fides/ui-build/static/admin/dataset/[datasetId].html +1 -1
  77. fides/ui-build/static/admin/dataset/new.html +1 -1
  78. fides/ui-build/static/admin/dataset.html +1 -1
  79. fides/ui-build/static/admin/datastore-connection/[id].html +1 -1
  80. fides/ui-build/static/admin/datastore-connection/new.html +1 -1
  81. fides/ui-build/static/admin/datastore-connection.html +1 -1
  82. fides/ui-build/static/admin/index.html +1 -1
  83. fides/ui-build/static/admin/integrations/[id].html +1 -1
  84. fides/ui-build/static/admin/integrations.html +1 -1
  85. fides/ui-build/static/admin/login/[provider].html +1 -1
  86. fides/ui-build/static/admin/login.html +1 -1
  87. fides/ui-build/static/admin/messaging/[id].html +1 -1
  88. fides/ui-build/static/admin/messaging/add-template.html +1 -1
  89. fides/ui-build/static/admin/messaging.html +1 -1
  90. fides/ui-build/static/admin/poc/ant-components.html +1 -1
  91. fides/ui-build/static/admin/poc/form-experiments/AntForm.html +1 -1
  92. fides/ui-build/static/admin/poc/form-experiments/FormikAntFormItem.html +1 -1
  93. fides/ui-build/static/admin/poc/form-experiments/FormikControlled.html +1 -1
  94. fides/ui-build/static/admin/poc/form-experiments/FormikField.html +1 -1
  95. fides/ui-build/static/admin/poc/form-experiments/FormikSpreadField.html +1 -1
  96. fides/ui-build/static/admin/poc/forms.html +1 -1
  97. fides/ui-build/static/admin/poc/table-migration.html +1 -1
  98. fides/ui-build/static/admin/privacy-requests/[id].html +1 -1
  99. fides/ui-build/static/admin/privacy-requests/configure/messaging.html +1 -1
  100. fides/ui-build/static/admin/privacy-requests/configure/storage.html +1 -1
  101. fides/ui-build/static/admin/privacy-requests/configure.html +1 -1
  102. fides/ui-build/static/admin/privacy-requests.html +1 -1
  103. fides/ui-build/static/admin/properties/[id].html +1 -1
  104. fides/ui-build/static/admin/properties/add-property.html +1 -1
  105. fides/ui-build/static/admin/properties.html +1 -1
  106. fides/ui-build/static/admin/reporting/datamap.html +1 -1
  107. fides/ui-build/static/admin/settings/about/alpha.html +1 -1
  108. fides/ui-build/static/admin/settings/about.html +1 -1
  109. fides/ui-build/static/admin/settings/consent/[configuration_id]/[purpose_id].html +1 -1
  110. fides/ui-build/static/admin/settings/consent.html +1 -1
  111. fides/ui-build/static/admin/settings/custom-fields.html +1 -1
  112. fides/ui-build/static/admin/settings/domain-records.html +1 -1
  113. fides/ui-build/static/admin/settings/domains.html +1 -1
  114. fides/ui-build/static/admin/settings/email-templates.html +1 -1
  115. fides/ui-build/static/admin/settings/locations.html +1 -1
  116. fides/ui-build/static/admin/settings/organization.html +1 -1
  117. fides/ui-build/static/admin/settings/regulations.html +1 -1
  118. fides/ui-build/static/admin/systems/configure/[id]/test-datasets.html +1 -1
  119. fides/ui-build/static/admin/systems/configure/[id].html +1 -1
  120. fides/ui-build/static/admin/systems.html +1 -1
  121. fides/ui-build/static/admin/taxonomy.html +1 -1
  122. fides/ui-build/static/admin/user-management/new.html +1 -1
  123. fides/ui-build/static/admin/user-management/profile/[id].html +1 -1
  124. fides/ui-build/static/admin/user-management.html +1 -1
  125. {ethyca_fides-2.63.0rc2.dist-info → ethyca_fides-2.63.1.dist-info}/WHEEL +0 -0
  126. {ethyca_fides-2.63.0rc2.dist-info → ethyca_fides-2.63.1.dist-info}/entry_points.txt +0 -0
  127. {ethyca_fides-2.63.0rc2.dist-info → ethyca_fides-2.63.1.dist-info}/licenses/LICENSE +0 -0
  128. {ethyca_fides-2.63.0rc2.dist-info → ethyca_fides-2.63.1.dist-info}/top_level.txt +0 -0
  129. /fides/api/models/{detection_discovery.py → detection_discovery/core.py} +0 -0
  130. /fides/ui-build/static/admin/_next/static/{Fb70i-8GI-owNAvgEJWhA → SZn_Fpr_qG1COMjkdloep}/_buildManifest.js +0 -0
  131. /fides/ui-build/static/admin/_next/static/{Fb70i-8GI-owNAvgEJWhA → SZn_Fpr_qG1COMjkdloep}/_ssgManifest.js +0 -0
@@ -0,0 +1,96 @@
1
+ import enum
2
+ from typing import Any, List
3
+
4
+ from sqlalchemy import Column, DateTime, String
5
+ from sqlalchemy.sql import text
6
+
7
+ from fides.api.db.util import EnumColumn
8
+
9
+
10
+ class ExecutionLogStatus(enum.Enum):
11
+ """Enum for task execution log statuses, reflecting where they are in their workflow"""
12
+
13
+ in_processing = "in_processing"
14
+ pending = "pending"
15
+ complete = "complete"
16
+ error = "error"
17
+ awaiting_processing = "paused" # "paused" in the database to avoid a migration, but use "awaiting_processing" in the app
18
+ retrying = "retrying"
19
+ skipped = "skipped"
20
+
21
+
22
+ class WorkerTask:
23
+ """
24
+ A task for a worker to execute.
25
+ """
26
+
27
+ # Field called action_type to avoid migrations in RequestTask when creating this model
28
+ action_type = Column(String, nullable=False, index=True)
29
+ # Note that WorkerTask share statuses with ExecutionLogs. When a WorkerTask changes state, an ExecutionLog
30
+ # is also created with that state. These are tied tightly together in GraphTask.
31
+ status = Column(
32
+ EnumColumn(
33
+ ExecutionLogStatus,
34
+ native_enum=False,
35
+ values_callable=lambda x: [
36
+ i.value for i in x
37
+ ], # Using ExecutionLogStatus values in database, even though app is using the names.
38
+ ), # character varying in database
39
+ index=True,
40
+ nullable=False,
41
+ )
42
+
43
+ def __init__(self, *args: Any, **kwargs: Any) -> None:
44
+ action_type = kwargs.get("action_type")
45
+ if action_type is not None:
46
+ self.validate_action_type(action_type)
47
+ super().__init__(*args, **kwargs)
48
+
49
+ @classmethod
50
+ def validate_action_type(cls, action_type: str) -> None:
51
+ """
52
+ Validates that the action type is allowed for the worker task.
53
+ """
54
+ if action_type not in cls.allowed_action_types():
55
+ raise ValueError(f"Invalid action_type '{action_type}' for {cls.__name__}")
56
+
57
+ @classmethod
58
+ def allowed_action_types(cls) -> List[str]:
59
+ """
60
+ Subclasses must implement this method to return a list of allowed action types.
61
+ """
62
+ raise NotImplementedError("Subclasses must implement allowed_action_types")
63
+
64
+
65
+ class TaskExecutionLog:
66
+ """
67
+ Stores the individual execution logs associated with a WorkerTask.
68
+ """
69
+
70
+ status = Column(
71
+ EnumColumn(
72
+ ExecutionLogStatus,
73
+ native_enum=True,
74
+ values_callable=lambda x: [
75
+ i.value for i in x
76
+ ], # Using ExecutionLogStatus values in database, even though app is using the names.
77
+ ),
78
+ index=True,
79
+ nullable=False,
80
+ )
81
+ # Contains info, warning, or error messages
82
+ message = Column(String)
83
+
84
+ # Use clock_timestamp() instead of NOW() to get the actual current time at row creation,
85
+ # regardless of transaction state. This prevents timestamp caching within transactions
86
+ # and ensures more accurate creation times.
87
+ # https://www.postgresql.org/docs/current/functions-datetime.html#FUNCTIONS-DATETIME-CURRENT
88
+
89
+ created_at = Column(
90
+ DateTime(timezone=True), server_default=text("clock_timestamp()")
91
+ )
92
+ updated_at = Column(
93
+ DateTime(timezone=True),
94
+ server_default=text("clock_timestamp()"),
95
+ onupdate=text("clock_timestamp()"),
96
+ )
@@ -0,0 +1,22 @@
1
+ """Schema for external storage metadata."""
2
+
3
+ from typing import Optional
4
+
5
+ from pydantic import Field
6
+
7
+ from fides.api.schemas.base_class import FidesSchema
8
+ from fides.api.schemas.storage.storage import StorageType
9
+
10
+
11
+ class ExternalStorageMetadata(FidesSchema):
12
+ """Metadata for externally stored encrypted data."""
13
+
14
+ storage_type: StorageType
15
+ file_key: str = Field(description="Path/key of the file in external storage")
16
+ filesize: int = Field(description="Size of the stored file in bytes", ge=0)
17
+ storage_key: Optional[str] = Field(
18
+ default=None, description="Storage configuration key used"
19
+ )
20
+
21
+ class Config:
22
+ use_enum_values = True
File without changes
@@ -0,0 +1,79 @@
1
+ from datetime import datetime
2
+ from enum import Enum
3
+ from typing import Annotated, Any, Optional
4
+
5
+ from pydantic import ConfigDict, Field
6
+
7
+ from fides.api.schemas.base_class import FidesSchema
8
+
9
+
10
+ class ManualTaskType(str, Enum):
11
+ """Enum for manual task types."""
12
+
13
+ privacy_request = "privacy_request"
14
+ # Add more task types as needed
15
+
16
+
17
+ class ManualTaskParentEntityType(str, Enum):
18
+ """Enum for manual task parent entity types."""
19
+
20
+ connection_config = (
21
+ "connection_config" # used for access and erasure privacy requests
22
+ )
23
+ # Add more parent entity types as needed
24
+
25
+
26
+ class ManualTaskReferenceType(str, Enum):
27
+ """Enum for manual task reference types."""
28
+
29
+ privacy_request = "privacy_request"
30
+ connection_config = "connection_config"
31
+ manual_task_config = "manual_task_config"
32
+ assigned_user = "assigned_user" # Reference to the user assigned to the task
33
+ # Add more reference types as needed
34
+
35
+
36
+ class ManualTaskLogStatus(str, Enum):
37
+ """Enum for manual task log status."""
38
+
39
+ created = "created"
40
+ updated = "updated"
41
+ in_processing = "in_processing"
42
+ complete = "complete"
43
+ error = "error"
44
+ retrying = "retrying"
45
+ paused = "paused"
46
+ awaiting_input = "awaiting_input"
47
+
48
+
49
+ class ManualTaskLogCreate(FidesSchema):
50
+ """Schema for creating a manual task log entry."""
51
+
52
+ model_config = ConfigDict(extra="forbid")
53
+
54
+ task_id: Annotated[str, Field(..., description="ID of the task")]
55
+ status: Annotated[ManualTaskLogStatus, Field(..., description="Log status")]
56
+ message: Annotated[Optional[str], Field(None, description="Log message")]
57
+ details: Annotated[
58
+ Optional[dict[str, Any]], Field(None, description="Additional details")
59
+ ]
60
+ config_id: Annotated[Optional[str], Field(None, description="Configuration ID")]
61
+ instance_id: Annotated[Optional[str], Field(None, description="Instance ID")]
62
+
63
+
64
+ class ManualTaskLogResponse(FidesSchema):
65
+ """Schema for manual task log response."""
66
+
67
+ model_config = ConfigDict(extra="forbid")
68
+
69
+ id: Annotated[str, Field(..., description="Log ID")]
70
+ task_id: Annotated[str, Field(..., description="Task ID")]
71
+ status: Annotated[ManualTaskLogStatus, Field(..., description="Log status")]
72
+ message: Annotated[Optional[str], Field(None, description="Log message")]
73
+ details: Annotated[
74
+ Optional[dict[str, Any]], Field(None, description="Additional details")
75
+ ]
76
+ config_id: Annotated[Optional[str], Field(None, description="Configuration ID")]
77
+ instance_id: Annotated[Optional[str], Field(None, description="Instance ID")]
78
+ created_at: Annotated[datetime, Field(..., description="Creation timestamp")]
79
+ updated_at: Annotated[datetime, Field(..., description="Last update timestamp")]
@@ -0,0 +1,151 @@
1
+ from datetime import datetime, timezone
2
+ from enum import Enum as EnumType
3
+ from typing import Optional
4
+
5
+ from sqlalchemy.orm import Session
6
+
7
+
8
+ class StatusTransitionNotAllowed(Exception):
9
+ """Exception raised when a status transition is not allowed."""
10
+
11
+ def __init__(self, message: str):
12
+ self.message = message
13
+ super().__init__(self.message)
14
+
15
+
16
+ class StatusType(str, EnumType):
17
+ """Enum for manual task status."""
18
+
19
+ pending = "pending"
20
+ in_progress = "in_progress"
21
+ completed = "completed"
22
+ failed = "failed"
23
+
24
+ @classmethod
25
+ def get_valid_transitions(cls, current_status: "StatusType") -> list["StatusType"]:
26
+ """Get valid transitions from the current status.
27
+
28
+ Args:
29
+ current_status: The current status
30
+
31
+ Returns:
32
+ list[StatusType]: List of valid transitions
33
+ """
34
+ if current_status == cls.pending:
35
+ return [cls.in_progress, cls.failed]
36
+ if current_status == cls.in_progress:
37
+ return [cls.completed, cls.failed]
38
+ if current_status == cls.completed:
39
+ return []
40
+ if current_status == cls.failed:
41
+ return [cls.pending, cls.in_progress]
42
+ return []
43
+
44
+
45
+ class StatusTransitionMixin:
46
+ """Mixin for handling status transitions.
47
+
48
+ This mixin provides methods for managing status transitions and completion tracking.
49
+ It can be used by any model that needs status management.
50
+ """
51
+
52
+ # These should be overridden by the implementing class
53
+ status: StatusType
54
+ completed_at: Optional[datetime]
55
+ completed_by_id: Optional[str]
56
+
57
+ def _get_valid_transitions(self) -> list[StatusType]:
58
+ """Get valid transitions from the current status.
59
+
60
+ Returns:
61
+ list[StatusType]: List of valid transitions
62
+ """
63
+ return StatusType.get_valid_transitions(self.status)
64
+
65
+ def _validate_status_transition(self, new_status: StatusType) -> None:
66
+ """Validate that a status transition is allowed.
67
+
68
+ Args:
69
+ new_status: The new status to transition to
70
+
71
+ Raises:
72
+ StatusTransitionNotAllowed: If the transition is not allowed
73
+ """
74
+ # Don't allow transitions to the same status
75
+ if new_status == self.status:
76
+ raise StatusTransitionNotAllowed(
77
+ f"Invalid status transition: already in status {new_status}"
78
+ )
79
+
80
+ # Get valid transitions for current status
81
+ valid_transitions = self._get_valid_transitions()
82
+ if new_status not in valid_transitions:
83
+ raise StatusTransitionNotAllowed(
84
+ f"Invalid status transition from {self.status} to {new_status}. "
85
+ f"Valid transitions are: {valid_transitions}"
86
+ )
87
+
88
+ def update_status(
89
+ self, db: Session, new_status: StatusType, user_id: Optional[str] = None
90
+ ) -> None:
91
+ """Update the status with validation and completion handling.
92
+
93
+ Args:
94
+ db: Database session
95
+ new_status: New status to set
96
+ user_id: Optional user ID who is making the change
97
+ """
98
+ self._validate_status_transition(new_status)
99
+
100
+ if new_status == StatusType.completed:
101
+ self.completed_at = datetime.now(timezone.utc)
102
+ self.completed_by_id = user_id
103
+ elif new_status == StatusType.pending:
104
+ # Reset completion fields if going back to pending
105
+ self.completed_at = None
106
+ self.completed_by_id = None
107
+
108
+ self.status = new_status
109
+ db.add(self)
110
+ db.commit()
111
+
112
+ def mark_completed(self, db: Session, user_id: str) -> None:
113
+ """Mark as completed.
114
+
115
+ Args:
116
+ db: Database session
117
+ user_id: user ID who completed the task
118
+ """
119
+ self.update_status(db, StatusType.completed, user_id)
120
+
121
+ def mark_failed(self, db: Session) -> None:
122
+ """Mark as failed."""
123
+ self.update_status(db, StatusType.failed)
124
+
125
+ def start_progress(self, db: Session) -> None:
126
+ """Mark as in progress."""
127
+ self.update_status(db, StatusType.in_progress)
128
+
129
+ def reset_to_pending(self, db: Session) -> None:
130
+ """Reset to pending status."""
131
+ self.update_status(db, StatusType.pending)
132
+
133
+ @property
134
+ def is_completed(self) -> bool:
135
+ """Check if completed."""
136
+ return self.status == StatusType.completed
137
+
138
+ @property
139
+ def is_failed(self) -> bool:
140
+ """Check if failed."""
141
+ return self.status == StatusType.failed
142
+
143
+ @property
144
+ def is_in_progress(self) -> bool:
145
+ """Check if in progress."""
146
+ return self.status == StatusType.in_progress
147
+
148
+ @property
149
+ def is_pending(self) -> bool:
150
+ """Check if pending."""
151
+ return self.status == StatusType.pending
@@ -8,6 +8,7 @@ from pydantic import ConfigDict, Field, field_serializer, field_validator
8
8
  from fides.api.custom_types import SafeStr
9
9
  from fides.api.graph.config import CollectionAddress
10
10
  from fides.api.models.audit_log import AuditLogAction
11
+ from fides.api.models.worker_task import ExecutionLogStatus
11
12
  from fides.api.schemas.api import BulkResponse, BulkUpdateFailed
12
13
  from fides.api.schemas.base_class import FidesSchema
13
14
  from fides.api.schemas.policy import ActionType, CurrentStep
@@ -141,18 +142,6 @@ class FieldsAffectedResponse(FidesSchema):
141
142
  model_config = ConfigDict(from_attributes=True, use_enum_values=True)
142
143
 
143
144
 
144
- class ExecutionLogStatus(EnumType):
145
- """Enum for execution log statuses, reflecting where they are in their workflow"""
146
-
147
- in_processing = "in_processing"
148
- pending = "pending"
149
- complete = "complete"
150
- error = "error"
151
- awaiting_processing = "paused" # "paused" in the database to avoid a migration, but use "awaiting_processing" in the app
152
- retrying = "retrying"
153
- skipped = "skipped"
154
-
155
-
156
145
  class ExecutionLogStatusSerializeOverride(FidesSchema):
157
146
  """Override to serialize "paused" Execution Logs as awaiting_processing instead"""
158
147
 
@@ -5,6 +5,7 @@ from sqlalchemy.orm import Session
5
5
  from fides.api.models.connectionconfig import ConnectionConfig, ConnectionType
6
6
  from fides.api.models.policy import Rule
7
7
  from fides.api.models.privacy_request import ExecutionLog, PrivacyRequest
8
+ from fides.api.models.worker_task import ExecutionLogStatus
8
9
  from fides.api.schemas.connection_configuration.connection_secrets_email import (
9
10
  AdvancedSettings,
10
11
  BaseEmailSchema,
@@ -15,7 +16,6 @@ from fides.api.schemas.messaging.messaging import (
15
16
  MessagingActionType,
16
17
  )
17
18
  from fides.api.schemas.policy import ActionType
18
- from fides.api.schemas.privacy_request import ExecutionLogStatus
19
19
  from fides.api.schemas.redis_cache import Identity
20
20
  from fides.api.service.connectors.base_email_connector import (
21
21
  BaseEmailConnector,
@@ -16,6 +16,7 @@ from fides.api.models.privacy_notice import (
16
16
  )
17
17
  from fides.api.models.privacy_preference import PrivacyPreferenceHistory
18
18
  from fides.api.models.privacy_request import ExecutionLog, PrivacyRequest
19
+ from fides.api.models.worker_task import ExecutionLogStatus
19
20
  from fides.api.schemas.connection_configuration.connection_secrets_email import (
20
21
  AdvancedSettingsWithExtendedIdentityTypes,
21
22
  ExtendedEmailSchema,
@@ -29,7 +30,7 @@ from fides.api.schemas.messaging.messaging import (
29
30
  from fides.api.schemas.policy import ActionType
30
31
  from fides.api.schemas.privacy_notice import PrivacyNoticeHistorySchema
31
32
  from fides.api.schemas.privacy_preference import MinimalPrivacyPreferenceHistorySchema
32
- from fides.api.schemas.privacy_request import Consent, ExecutionLogStatus
33
+ from fides.api.schemas.privacy_request import Consent
33
34
  from fides.api.schemas.redis_cache import Identity
34
35
  from fides.api.service.connectors.base_email_connector import (
35
36
  BaseEmailConnector,
@@ -17,11 +17,12 @@ from fides.api.models.privacy_request import (
17
17
  RequestTask,
18
18
  TraversalDetails,
19
19
  )
20
+ from fides.api.models.worker_task import ExecutionLogStatus
20
21
  from fides.api.schemas.connection_configuration.connection_secrets_dynamic_erasure_email import (
21
22
  DynamicErasureEmailSchema,
22
23
  )
23
24
  from fides.api.schemas.policy import ActionType
24
- from fides.api.schemas.privacy_request import ExecutionLogStatus, PrivacyRequestStatus
25
+ from fides.api.schemas.privacy_request import PrivacyRequestStatus
25
26
  from fides.api.service.connectors.base_connector import BaseConnector
26
27
  from fides.api.service.connectors.base_erasure_email_connector import (
27
28
  BaseErasureEmailConnector,
@@ -10,9 +10,9 @@ from fides.api.models.connectionconfig import (
10
10
  ConnectionType,
11
11
  )
12
12
  from fides.api.models.privacy_request import ExecutionLog
13
+ from fides.api.models.worker_task import ExecutionLogStatus
13
14
  from fides.api.schemas.connection_configuration import EmailSchema
14
15
  from fides.api.schemas.policy import ActionType
15
- from fides.api.schemas.privacy_request import ExecutionLogStatus
16
16
  from fides.api.service.connectors.base_erasure_email_connector import (
17
17
  BaseErasureEmailConnector,
18
18
  filter_user_identities_for_connector,