Skip to content

admin

django_spire.knowledge.collection.admin

TAG_ACTION_MAX_ROWS = 25 module-attribute

CollectionAdmin

Bases: ModelAdmin

actions = ('set_tags_for_collections',) class-attribute instance-attribute

autocomplete_fields = ('parent',) class-attribute instance-attribute

list_display = ('id', 'name', 'parent', 'is_deleted', 'tag_count') class-attribute instance-attribute

list_filter = ('is_deleted', 'is_active') class-attribute instance-attribute

ordering = ('name',) class-attribute instance-attribute

search_fields = ('id', 'name', 'description', 'parent__name') class-attribute instance-attribute

get_queryset

Source code in django_spire/knowledge/collection/admin.py
def get_queryset(self, request: HttpRequest) -> QuerySet[Collection]:
    queryset = super().get_queryset(request)

    return queryset.annotate(_tag_count=Count('tags', distinct=True))

set_tags_for_collections

Source code in django_spire/knowledge/collection/admin.py
@admin.action(description='Set Tags for Collections (Allow 5 Seconds Per)')
def set_tags_for_collections(
    self,
    request: HttpRequest,
    queryset: QuerySet[Collection],
) -> None:
    if queryset.count() > TAG_ACTION_MAX_ROWS:
        message = (
            f'Select at most {TAG_ACTION_MAX_ROWS} collections at a time. '
            f'Tagging runs inline and will time out on larger selections.'
        )

        messages.error(request, message)
        return

    processed = 0

    for collection in queryset:
        collection.services.tag.process_and_set_tags()
        processed += 1

    messages.success(request, f'Successfully processed {processed} collections.')

tag_count

Source code in django_spire/knowledge/collection/admin.py
@admin.display(description='Tags', ordering='_tag_count')
def tag_count(self, collection: Collection) -> int:
    return collection._tag_count

CollectionGroupAdmin

Bases: ModelAdmin

list_display = ('id', 'collection', 'auth_group') class-attribute instance-attribute

search_fields = ('id', 'collection__name', 'auth_group__name') class-attribute instance-attribute