Skip to content

Commit 670304c

Browse files
committed
make shared update_owner, refresh from db in tests, call .sae()
1 parent d442160 commit 670304c

File tree

4 files changed

+30
-25
lines changed

4 files changed

+30
-25
lines changed

src/sentry/workflow_engine/endpoints/validators/base/detector.py

Lines changed: 4 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@
2828
get_unknown_detector_type_error,
2929
log_alerting_quota_hit,
3030
toggle_detector,
31+
update_owner,
3132
)
3233
from sentry.workflow_engine.models import (
3334
DataConditionGroup,
@@ -193,18 +194,9 @@ def update(self, instance: Detector, validated_data: dict[str, Any]) -> Detector
193194

194195
# Handle owner field update
195196
if "owner" in validated_data:
196-
owner = validated_data.get("owner")
197-
if owner:
198-
if owner.is_user:
199-
instance.owner_user_id = owner.id
200-
instance.owner_team_id = None
201-
elif owner.is_team:
202-
instance.owner_user_id = None
203-
instance.owner_team_id = owner.id
204-
else:
205-
# Clear owner if None is passed
206-
instance.owner_user_id = None
207-
instance.owner_team_id = None
197+
instance.owner_user_id, instance.owner_team_id = update_owner(
198+
validated_data.get("owner")
199+
)
208200

209201
if "condition_group" in validated_data:
210202
condition_group = validated_data.pop("condition_group")

src/sentry/workflow_engine/endpoints/validators/base/workflow.py

Lines changed: 5 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@
2323
from sentry.workflow_engine.endpoints.validators.utils import (
2424
log_alerting_quota_hit,
2525
remove_items_by_api_input,
26+
update_owner,
2627
validate_json_schema,
2728
)
2829
from sentry.workflow_engine.models import (
@@ -253,21 +254,13 @@ def update(self, instance: Workflow, validated_data: InputData) -> Workflow:
253254

254255
# Handle owner field update
255256
if "owner" in validated_data:
256-
owner = validated_data.pop("owner")
257-
if owner:
258-
if owner.is_user:
259-
instance.owner_user_id = owner.id
260-
instance.owner_team_id = None
261-
elif owner.is_team:
262-
instance.owner_user_id = None
263-
instance.owner_team_id = owner.id
264-
else:
265-
# Clear owner if None is passed
266-
instance.owner_user_id = None
267-
instance.owner_team_id = None
257+
instance.owner_user_id, instance.owner_team_id = update_owner(
258+
validated_data.get("owner")
259+
)
268260

269261
# Update the workflow
270262
instance.update(**validated_data)
263+
instance.save()
271264
return instance
272265

273266
def _validate_workflow_limits(self) -> None:

src/sentry/workflow_engine/endpoints/validators/utils.py

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
from jsonschema import ValidationError as JsonValidationError
66
from jsonschema import validate
77

8+
from sentry.api.fields.actor import OwnerActorField
89
from sentry.issues import grouptype
910
from sentry.models.organization import Organization
1011
from sentry.users.models.user import User
@@ -15,6 +16,22 @@
1516
logger = logging.getLogger(__name__)
1617

1718

19+
def update_owner(owner: OwnerActorField) -> tuple[int | None, int | None]:
20+
if owner:
21+
if owner.is_user:
22+
owner_user_id = owner.id
23+
owner_team_id = None
24+
elif owner.is_team:
25+
owner_user_id = None
26+
owner_team_id = owner.id
27+
else:
28+
# Clear owner if None is passed
29+
owner_user_id = None
30+
owner_team_id = None
31+
32+
return owner_user_id, owner_team_id
33+
34+
1835
def log_alerting_quota_hit(
1936
object_type: str, organization: Organization, actor: User | RpcUser | None
2037
) -> None:

tests/sentry/workflow_engine/endpoints/validators/test_base_workflow.py

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -160,8 +160,8 @@ def test_create__owner_user_id(self) -> None:
160160
self.valid_data["owner"] = f"user:{self.user.id}"
161161
validator = WorkflowValidator(data=self.valid_data, context=self.context)
162162
assert validator.is_valid() is True
163-
164163
workflow = validator.create(validator.validated_data)
164+
workflow.refresh_from_db()
165165
assert workflow.owner_user_id == self.user.id
166166

167167
def test_team_owner(self) -> None:
@@ -170,6 +170,7 @@ def test_team_owner(self) -> None:
170170
validator = WorkflowValidator(data=self.valid_data, context=self.context)
171171
assert validator.is_valid() is True
172172
workflow = validator.create(validator.validated_data)
173+
workflow.refresh_from_db()
173174
assert workflow.owner_team_id == team.id
174175
assert workflow.owner_user_id is None
175176

@@ -825,12 +826,14 @@ def test_update_owner_type(self, mock_action_validator: mock.MagicMock) -> None:
825826
validator = WorkflowValidator(data=self.valid_data, context=context)
826827
assert validator.is_valid() is True
827828
workflow = validator.update(self.workflow, validator.validated_data)
829+
workflow.refresh_from_db()
828830
assert workflow.owner_team_id == team.id
829831
assert workflow.owner_user_id is None
830832

831833
self.valid_data["owner"] = f"user:{self.user.id}"
832834
validator = WorkflowValidator(data=self.valid_data, context=context)
833835
assert validator.is_valid() is True
836+
workflow.refresh_from_db()
834837
workflow = validator.update(self.workflow, validator.validated_data)
835838
assert workflow.owner_user_id == self.user.id
836839
assert workflow.owner_team_id is None

0 commit comments

Comments
 (0)