Skip to content
Snippets Groups Projects
admin.py 2.41 KiB
Newer Older
from funkwhale_api.common import admin
Eliot Berriot's avatar
Eliot Berriot committed

from . import models
from . import tasks


Eliot Berriot's avatar
Eliot Berriot committed
def redeliver_deliveries(modeladmin, request, queryset):
    queryset.update(is_delivered=False)
    for delivery in queryset:
        tasks.deliver_to_remote.delay(delivery_id=delivery.pk)
Eliot Berriot's avatar
Eliot Berriot committed
redeliver_deliveries.short_description = "Redeliver"


def redeliver_activities(modeladmin, request, queryset):
Eliot Berriot's avatar
Eliot Berriot committed
    for activity in queryset.select_related("actor__user"):
        if activity.actor.get_user():
Eliot Berriot's avatar
Eliot Berriot committed
            tasks.dispatch_outbox.delay(activity_id=activity.pk)
        else:
            tasks.dispatch_inbox.delay(activity_id=activity.pk)


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
Eliot Berriot's avatar
Eliot Berriot committed


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


@admin.register(models.Follow)
class FollowAdmin(admin.ModelAdmin):
Eliot Berriot's avatar
Eliot Berriot committed
    list_display = ["actor", "target", "approved", "creation_date"]
    list_filter = ["approved"]
    search_fields = ["actor__fid", "target__fid"]
Eliot Berriot's avatar
Eliot Berriot committed
    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"]
Eliot Berriot's avatar
Eliot Berriot committed
    list_select_related = True


@admin.register(models.InboxItem)
class InboxItemAdmin(admin.ModelAdmin):
Eliot Berriot's avatar
Eliot Berriot committed
    list_display = ["actor", "activity", "type", "is_read"]
    list_filter = ["type", "activity__type", "is_read"]
    search_fields = ["actor__fid", "activity__fid"]
    list_select_related = True


@admin.register(models.Delivery)
class DeliveryAdmin(admin.ModelAdmin):
Eliot Berriot's avatar
Eliot Berriot committed
    list_display = [
Eliot Berriot's avatar
Eliot Berriot committed
        "inbox_url",
Eliot Berriot's avatar
Eliot Berriot committed
        "last_attempt_date",
        "attempts",
        "is_delivered",
Eliot Berriot's avatar
Eliot Berriot committed
    ]
Eliot Berriot's avatar
Eliot Berriot committed
    list_filter = ["activity__type", "is_delivered"]
    search_fields = ["inbox_url"]
Eliot Berriot's avatar
Eliot Berriot committed
    list_select_related = True
Eliot Berriot's avatar
Eliot Berriot committed
    actions = [redeliver_deliveries]