SciPost Code Repository

Skip to content
Snippets Groups Projects
admin.py 1.43 KiB
Newer Older
George Katsikas's avatar
George Katsikas committed
__copyright__ = "Copyright © Stichting SciPost (SciPost Foundation)"
__license__ = "AGPL v3"

from django.contrib import admin
George Katsikas's avatar
George Katsikas committed
from django.urls import reverse
from django.utils.html import format_html
from pins.models import Note


@admin.register(Note)
class NoteAdmin(admin.ModelAdmin):
George Katsikas's avatar
George Katsikas committed
    list_display = (
        "id",
        "web_link",
        "admin_link",
George Katsikas's avatar
George Katsikas committed
        "title",
        "author",
        "created",
        "modified",
    )
    list_filter = ("created", "modified", "visibility")
    search_fields = ("title", "author__username")
    date_hierarchy = "created"
    ordering = ("-created",)
    readonly_fields = ("created", "modified", "web_link", "admin_link")
    fields = (
        "title",
        "description",
        "visibility",
        "author",
        "created",
        "modified",
    )
    autocomplete_fields = ("author",)

    def admin_link(self, obj):
George Katsikas's avatar
George Katsikas committed
        content_type = obj.regarding_content_type
        admin_url = f"admin:{content_type.app_label}_{content_type.model}_change"
        return format_html(
            '<a href="{}">[admin]</a>',
            reverse(admin_url, args=[obj.regarding_object_id]),

    def web_link(self, obj):
        content_type = obj.regarding_content_type
        model = content_type.model_class()
        regarding = model.objects.get(pk=obj.regarding_object_id)
        return format_html(f'<a href="{regarding.get_absolute_url()}">{regarding}</a>')