Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fixing case creation logic #3224

Merged
merged 4 commits into from
Apr 5, 2023
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
86 changes: 43 additions & 43 deletions src/dispatch/signal/flows.py
Original file line number Diff line number Diff line change
Expand Up @@ -31,52 +31,52 @@ def signal_instance_create_flow(
signal_instance.entities = entities
db_session.commit()

if not signal_service.apply_filter_actions(
db_session=db_session, signal_instance=signal_instance
):
if signal_instance.signal.create_case:
# create a case if not duplicate or snoozed
case_in = CaseCreate(
title=signal_instance.signal.name,
description=signal_instance.signal.description,
case_priority=signal_instance.signal.case_priority,
project=signal_instance.project,
case_type=signal_instance.signal.case_type,
)
case = case_service.create(
db_session=db_session, case_in=case_in, current_user=current_user
)

signal_instance.case = case

db_session.commit()

service_id = None
if signal_instance.signal.oncall_service:
service_id = signal_instance.signal.oncall_service.external_id

conversation_target = None
if signal_instance.signal.conversation_target:
conversation_target = signal_instance.signal.conversation_target

case_flows.case_new_create_flow(
if signal_service.apply_filter_actions(db_session=db_session, signal_instance=signal_instance):
return signal_instance

if signal_instance.signal.create_case:
# create a case if not duplicate or snoozed
case_in = CaseCreate(
title=signal_instance.signal.name,
description=signal_instance.signal.description,
case_priority=signal_instance.signal.case_priority,
project=signal_instance.project,
case_type=signal_instance.signal.case_type,
)
case = case_service.create(
db_session=db_session, case_in=case_in, current_user=current_user
)

signal_instance.case = case

db_session.commit()

service_id = None
if signal_instance.signal.oncall_service:
service_id = signal_instance.signal.oncall_service.external_id

conversation_target = None
if signal_instance.signal.conversation_target:
conversation_target = signal_instance.signal.conversation_target

case_flows.case_new_create_flow(
db_session=db_session,
organization_slug=None,
service_id=service_id,
conversation_target=conversation_target,
case_id=case.id,
)

# run workflows if not duplicate or snoozed
if workflows := signal_instance.signal.workflows:
for workflow in workflows:
workflow_flows.signal_workflow_run_flow(
current_user=current_user,
db_session=db_session,
organization_slug=None,
service_id=service_id,
conversation_target=conversation_target,
case_id=case.id,
signal_instance=signal_instance,
workflow=workflow,
)

# run workflows if not duplicate or snoozed
if workflows := signal_instance.signal.workflows:
for workflow in workflows:
workflow_flows.signal_workflow_run_flow(
current_user=current_user,
db_session=db_session,
signal_instance=signal_instance,
workflow=workflow,
)

return signal_instance


Expand Down
8 changes: 4 additions & 4 deletions src/dispatch/signal/service.py
Original file line number Diff line number Diff line change
Expand Up @@ -354,7 +354,7 @@ def apply_filter_actions(
) -> Literal[True] | None:
"""Applies any matching filter actions associated with this instance."""

action = False
filtered = False
for f in signal_instance.signal.filters:
if f.mode != SignalFilterMode.active:
continue
Expand All @@ -375,7 +375,7 @@ def apply_filter_actions(

if instances:
signal_instance.filter_action = SignalFilterAction.snooze
action = True
filtered = True
break

elif f.action == SignalFilterAction.deduplicate:
Expand All @@ -390,8 +390,8 @@ def apply_filter_actions(
# associate with existing case
signal_instance.case_id = instances[0].case_id
signal_instance.filter_action = SignalFilterAction.deduplicate
action = True
filtered = True
break

db_session.commit()
return action
return filtered