Skip to content
Snippets Groups Projects
Forked from funkwhale / funkwhale
6426 commits behind the upstream repository.
admin.py 2.12 KiB
from django.contrib import admin

from . import models
from . import tasks


def redeliver_inbox_items(modeladmin, request, queryset):
    for id in set(
        queryset.filter(activity__actor__user__isnull=False).values_list(
            "activity", flat=True
        )
    ):
        tasks.dispatch_outbox.delay(activity_id=id)


redeliver_inbox_items.short_description = "Redeliver"


def redeliver_activities(modeladmin, request, queryset):
    for id in set(
        queryset.filter(actor__user__isnull=False).values_list("id", flat=True)
    ):
        tasks.dispatch_outbox.delay(activity_id=id)


redeliver_activities.short_description = "Redeliver"


@admin.register(models.Activity)
class ActivityAdmin(admin.ModelAdmin):
    list_display = ["type", "fid", "url", "actor", "creation_date"]
    search_fields = ["payload", "fid", "url", "actor__domain"]
    list_filter = ["type", "actor__domain"]
    actions = [redeliver_activities]
    list_select_related = True


@admin.register(models.Actor)
class ActorAdmin(admin.ModelAdmin):
    list_display = [
        "fid",
        "domain",
        "preferred_username",
        "type",
        "creation_date",
        "last_fetch_date",
    ]
    search_fields = ["fid", "domain", "preferred_username"]
    list_filter = ["type"]


@admin.register(models.Follow)
class FollowAdmin(admin.ModelAdmin):
    list_display = ["actor", "target", "approved", "creation_date"]
    list_filter = ["approved"]
    search_fields = ["actor__fid", "target__fid"]
    list_select_related = True


@admin.register(models.LibraryFollow)
class LibraryFollowAdmin(admin.ModelAdmin):
    list_display = ["actor", "target", "approved", "creation_date"]
    list_filter = ["approved"]
    search_fields = ["actor__fid", "target__fid"]
    list_select_related = True


@admin.register(models.InboxItem)
class InboxItemAdmin(admin.ModelAdmin):
    list_display = [
        "actor",
        "activity",
        "type",
        "last_delivery_date",
        "delivery_attempts",
    ]
    list_filter = ["type"]
    search_fields = ["actor__fid", "activity__fid"]
    list_select_related = True
    actions = [redeliver_inbox_items]