Skip to content

Commit 70671f8

Browse files
authored
Simplified fetch_slack_activity and made idempotent (#2058)
1 parent d0b721a commit 70671f8

File tree

7 files changed

+198
-345
lines changed

7 files changed

+198
-345
lines changed

config/celery.py

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -83,11 +83,12 @@ def setup_periodic_tasks(sender, **kwargs):
8383
app.signature("core.tasks.clear_static_content_cache"),
8484
)
8585

86-
# Fetch Slack activity. Executes daily at 3:07 AM.
87-
sender.add_periodic_task(
88-
crontab(hour=3, minute=7),
89-
app.signature("slack.tasks.fetch_slack_activity"),
90-
)
86+
# TODO: reenable
87+
# # Fetch Slack activity. Executes daily at 3:07 AM.
88+
# sender.add_periodic_task(
89+
# crontab(hour=3, minute=7),
90+
# app.signature("slack.tasks.fetch_slack_activity"),
91+
# )
9192

9293
# delete users scheduled for deletion, arbitrarily every 61 minutes
9394
sender.add_periodic_task(

docs/commands.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -360,7 +360,7 @@ Preview which users would be updated:
360360

361361
## `clear_slack_activity`
362362

363-
**Purpose**: Delete all slack activity tracking data from the database. This command removes all records from the `SlackActivityBucket` and `ChannelUpdateGap` tables, and resets the `last_update_ts` field to "0" for all channels. This is useful for resetting the slack activity tracking system to its initial state.
363+
**Purpose**: Delete all slack activity tracking data from the database. This command removes all records from the `SlackActivityBucket` and resets the `last_update_ts` field to July 31st 2025 (for now) for all channels. This is useful for resetting the slack activity tracking system. It should in future be reset to zero for all data.
364364

365365
**Example**
366366

slack/admin.py

Lines changed: 1 addition & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
from django.contrib import admin
22

33
from slack.filters import FilterByReleaseDates
4-
from slack.models import Channel, SlackActivityBucket, Thread
4+
from slack.models import Channel, SlackActivityBucket
55

66

77
@admin.register(Channel)
@@ -64,47 +64,3 @@ def has_change_permission(self, request, obj=None):
6464

6565
def has_delete_permission(self, request, obj=None):
6666
return False
67-
68-
69-
@admin.register(Thread)
70-
class ThreadAdmin(admin.ModelAdmin):
71-
list_display = [
72-
"id",
73-
"channel__id",
74-
"channel__name",
75-
"thread_ts_readable",
76-
"last_update_ts_readable",
77-
]
78-
search_fields = ["channel__id", "channel__name", "thread_ts"]
79-
list_filter = ["channel__name"]
80-
readonly_fields = ["channel", "thread_ts", "last_update_ts", "db_created_at"]
81-
raw_id_fields = ["channel"]
82-
date_hierarchy = "db_created_at"
83-
ordering = ["-db_created_at"]
84-
85-
@admin.display(description="Thread Created")
86-
def thread_ts_readable(self, obj):
87-
"""Display thread_ts in a human-readable format."""
88-
if obj.thread_ts:
89-
from slack.models import parse_ts
90-
91-
return parse_ts(obj.thread_ts).strftime("%Y-%m-%d %H:%M:%S UTC")
92-
return "-"
93-
94-
@admin.display(description="Last Update")
95-
def last_update_ts_readable(self, obj):
96-
"""Display last_update_ts in a human-readable format."""
97-
if obj.last_update_ts:
98-
from slack.models import parse_ts
99-
100-
return parse_ts(obj.last_update_ts).strftime("%Y-%m-%d %H:%M:%S UTC")
101-
return "-"
102-
103-
def has_add_permission(self, request):
104-
return False
105-
106-
def has_change_permission(self, request, obj=None):
107-
return False
108-
109-
def has_delete_permission(self, request, obj=None):
110-
return False

slack/management/commands/clear_slack_activity.py

Lines changed: 2 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -3,11 +3,7 @@
33
import djclick as click
44
from django.db import transaction
55

6-
from slack.models import (
7-
SlackActivityBucket,
8-
Channel,
9-
ChannelUpdateGap,
10-
)
6+
from slack.models import SlackActivityBucket, Channel
117

128

139
logger = logging.getLogger(__name__)
@@ -36,16 +32,12 @@ def command(confirm):
3632

3733
with transaction.atomic():
3834
activity_count = SlackActivityBucket.objects.count()
39-
gap_count = ChannelUpdateGap.objects.count()
4035
channel_count = Channel.objects.count()
4136

4237
logger.info(f"Deleting {activity_count:,} SlackActivityBucket records...")
4338
SlackActivityBucket.objects.all().delete()
4439

45-
logger.info(f"Deleting {gap_count:,} ChannelUpdateGap records...")
46-
ChannelUpdateGap.objects.all().delete()
47-
4840
logger.info(f"Resetting last_update_ts for {channel_count:,} Channels...")
49-
Channel.objects.all().update(last_update_ts="0")
41+
Channel.objects.all().update(last_update_ts="1753920000") # 31st July, 2025
5042

5143
logger.info("Successfully cleared all slack activity data.")

0 commit comments

Comments
 (0)