summaryrefslogtreecommitdiffstats
path: root/activities/admin.py
diff options
context:
space:
mode:
authorMichael Manfre2022-11-28 23:41:36 -0500
committerGitHub2022-11-28 21:41:36 -0700
commitfb8f2d10984bcfa2585dc272b4c85d285b722792 (patch)
treefa9616f745c7e9e4b5cc5d1ca82d61512ee64f01 /activities/admin.py
parent7f838433edde6a03d1b7f71da269f9756a3f91e9 (diff)
downloadtakahe-fb8f2d10984bcfa2585dc272b4c85d285b722792.tar.gz
takahe-fb8f2d10984bcfa2585dc272b4c85d285b722792.tar.bz2
takahe-fb8f2d10984bcfa2585dc272b4c85d285b722792.zip
Hashtags
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()