summaryrefslogtreecommitdiffstats
path: root/activities/admin.py
diff options
context:
space:
mode:
Diffstat (limited to 'activities/admin.py')
-rw-r--r--activities/admin.py25
1 files changed, 24 insertions, 1 deletions
diff --git a/activities/admin.py b/activities/admin.py
index 8e29d22..c4875ca 100644
--- a/activities/admin.py
+++ b/activities/admin.py
@@ -1,7 +1,9 @@
+from asgiref.sync import async_to_sync
from django.contrib import admin
from activities.models import (
FanOut,
+ Hashtag,
Post,
PostAttachment,
PostInteraction,
@@ -9,6 +11,20 @@ from activities.models import (
)
+@admin.register(Hashtag)
+class HashtagAdmin(admin.ModelAdmin):
+ list_display = ["hashtag", "name_override", "state", "stats_updated", "created"]
+
+ readonly_fields = ["created", "updated", "stats_updated"]
+
+ actions = ["force_execution"]
+
+ @admin.action(description="Force Execution")
+ def force_execution(self, request, queryset):
+ for instance in queryset:
+ instance.transition_perform("outdated")
+
+
class PostAttachmentInline(admin.StackedInline):
model = PostAttachment
extra = 0
@@ -18,7 +34,7 @@ class PostAttachmentInline(admin.StackedInline):
class PostAdmin(admin.ModelAdmin):
list_display = ["id", "state", "author", "created"]
raw_id_fields = ["to", "mentions", "author"]
- actions = ["force_fetch"]
+ actions = ["force_fetch", "reparse_hashtags"]
search_fields = ["content"]
inlines = [PostAttachmentInline]
readonly_fields = ["created", "updated", "object_json"]
@@ -28,6 +44,13 @@ class PostAdmin(admin.ModelAdmin):
for instance in queryset:
instance.debug_fetch()
+ @admin.action(description="Reprocess content for hashtags")
+ def reparse_hashtags(self, request, queryset):
+ for instance in queryset:
+ instance.hashtags = Hashtag.hashtags_from_content(instance.content) or None
+ instance.save()
+ async_to_sync(instance.ensure_hashtags)()
+
@admin.display(description="ActivityPub JSON")
def object_json(self, instance):
return instance.to_ap()