oncall-engine/engine/apps/slack
Joey Orlando a29e35c25a
refactor SlackMessage.channel_id (CHAR field) to SlackMessage.channel (foreign key relationship) (#5292)
# What this PR does

Related to https://github.com/grafana/oncall-private/issues/2947

**NOTE**

This PR introduces steps 1 and 2 of the 3 part migration proposed
[here](https://raintank-corp.slack.com/archives/C06K1MQ07GS/p1732555465144099).
Step 3, swapping reads to be from the new-column and dropping
dual-writes, will be done in a future PR/release.

---

I’m tackling this work now because _ultimately_ I want to move
`AlertReceiveChannel.rate_limited_in_slack_at` to
`SlackChannel.rate_limited_at` , but first I sorta need to refactor
`SlackMessage.channel_id` from a `CHAR` field to a foreign key
relationship (because in the spots where we touch Slack rate limiting,
like
[here](https://github.com/grafana/oncall/blob/dev/engine/apps/slack/alert_group_slack_service.py#L42-L50)
for example, we only have `slack_message.channel_id`, which means I need
to do extra queries to fetch the appropriate `SlackChannel` to then be
able to get/set `SlackChannel.rate_limited_at`

Other minor stuffs:
- it also prepares us to drop `SlackMessage._slack_team_identity`. We
already have a `@property` of `SlackMessage.slack_team_identity` (which
[previously had some hacky
logic](https://github.com/grafana/oncall/blob/dev/engine/apps/slack/models/slack_message.py#L74-L84)).
I've refactored `SlackMessage.slack_team_identity` to simply point to
`self.organization.slack_team_identity` + updated our code to _stop_
setting `SlackMessage._slack_team_identity` (will drop this column in
future release)

## Checklist

- [x] Unit, integration, and e2e (if applicable) tests updated
- [x] Documentation added (or `pr:no public docs` PR label added if not
required)
- [x] Added the relevant release notes label (see labels prefixed w/
`release:`). These labels dictate how your PR will
    show up in the autogenerated release notes.
2024-11-26 11:03:38 +00:00
..
migrations refactor SlackMessage.channel_id (CHAR field) to SlackMessage.channel (foreign key relationship) (#5292) 2024-11-26 11:03:38 +00:00
models refactor SlackMessage.channel_id (CHAR field) to SlackMessage.channel (foreign key relationship) (#5292) 2024-11-26 11:03:38 +00:00
representatives Fix acknowledge reminder task (#5179) 2024-10-16 12:13:28 +00:00
scenarios refactor SlackMessage.channel_id (CHAR field) to SlackMessage.channel (foreign key relationship) (#5292) 2024-11-26 11:03:38 +00:00
tests refactor SlackMessage.channel_id (CHAR field) to SlackMessage.channel (foreign key relationship) (#5292) 2024-11-26 11:03:38 +00:00
types Introduce slash command matcher (#4717) 2024-07-24 09:53:06 +00:00
0007_migrate_slackmessage_channel_id.py refactor SlackMessage.channel_id (CHAR field) to SlackMessage.channel (foreign key relationship) (#5292) 2024-11-26 11:03:38 +00:00
__init__.py World, meet OnCall! 2022-06-03 08:09:47 -06:00
alert_group_slack_service.py refactor SlackMessage.channel_id (CHAR field) to SlackMessage.channel (foreign key relationship) (#5292) 2024-11-26 11:03:38 +00:00
chatops_proxy_routing.py Prepare OnCall for Unified Slack App (#4232) 2024-06-03 09:07:10 +00:00
client.py Update when slack client ratelimit retry handler is enabled (#3447) 2023-11-30 12:35:46 +00:00
constants.py Truncate resolution note text in slack message to satisfy block limits (#3351) 2023-11-16 13:15:04 +00:00
errors.py Update Slack user group for a schedule - handle paid_team_only Slack API error (#4793) 2024-08-09 14:51:01 +00:00
installation.py Unified Slack app reinstall (#4682) 2024-07-19 11:53:06 +00:00
slack_formatter.py Fix alert group rendering (#3424) 2023-11-24 15:39:37 +00:00
slash_command.py Make root command configurable (#4863) 2024-08-21 06:54:47 +00:00
tasks.py chore: add more slack related tests (#5227) 2024-11-04 15:49:22 -05:00
urls.py Make Slack URLs work without trailing slashes (#4607) 2024-07-03 15:55:54 +00:00
utils.py Address deprecation warnings in tests (#4681) 2024-08-13 20:51:18 +00:00
views.py refactor SlackMessage.channel_id (CHAR field) to SlackMessage.channel (foreign key relationship) (#5292) 2024-11-26 11:03:38 +00:00