Skip to content

[SPAM] Proposition technique : AdminPages comme entités de première classe dans django-admin #119

@kaliguito

Description

@kaliguito

Code of Conduct

  • I agree to follow Django's Code of Conduct

Feature Description

SPAM

Proposition technique : AdminPages comme entités de première classe dans django-admin

Problème technique identifié

django.contrib.admin est architecturé autour du concept de ModelAdmin, ce qui rend l’enregistrement de fonctionnalités non liées à des modèles artificiel ou détourné (vues ad hoc, faux modèles, applications techniques).

Les solutions existantes (ex. AdminPlus) permettent d’ajouter des vues personnalisées, mais elles restent :

  • rattachées à une application,
  • non équivalentes à ModelAdmin,
  • limitées pour la construction de véritables tableaux de bord.

Objectif

Introduire le concept d’AdminPage comme entité de première classe dans l’admin Django, indépendante de tout modèle.


Pseudo-API proposée

from django.contrib.admin import AdminPage, register_page
from django.http import HttpRequest
from django.template.response import TemplateResponse
class AnalyticsPage(AdminPage):
    title = "Analytics"
    section = "Pages"
    slug = "analytics"
    icon = "chart-line"
    permission_required = "reports.view_analytics"

    def has_permission(self, request: HttpRequest) -> bool:
        return request.user.has_perm(self.permission_required)

    def get_context_data(self, request):
        return {
            "total_users": 1240,
            "active_today": 87,
        }

    def view(self, request: HttpRequest):
        return TemplateResponse(
            request,
            "admin/analytics.html",
            self.get_context_data(request),
        )
register_page(AnalyticsPage)

Comportement attendu

  • Enregistrement global via AdminSite, sans dépendance à une application
  • Apparition dans l’index de l’admin sous une rubrique dédiée ou par défaut
  • URLs internes de type /admin/pages/<slug>/
  • Intégration native au système de permissions Django
  • Aucune dépendance à un modèle ou à des permissions factices

Cas d’usage

  • Dashboards métier
  • Pages de monitoring
  • Interfaces internes non orientées données
  • Back-office applicatif pour petites équipes

Bénéfices

  • Réduction du besoin de dashboards externes
  • Réutilisation complète de l’authentification, des permissions et de l’UI admin
  • Extension naturelle de django-admin sans rupture de compatibilité
  • Alternative légère aux solutions de back-office parallèles

Problem

Proposition technique : AdminPages comme entités de première classe dans django-admin

Problème technique identifié

django.contrib.admin est architecturé autour du concept de ModelAdmin, ce qui rend l’enregistrement de fonctionnalités non liées à des modèles artificiel ou détourné (vues ad hoc, faux modèles, applications techniques).

Les solutions existantes (ex. AdminPlus) permettent d’ajouter des vues personnalisées, mais elles restent :

  • rattachées à une application,
  • non équivalentes à ModelAdmin,
  • limitées pour la construction de véritables tableaux de bord.

Objectif

Introduire le concept d’AdminPage comme entité de première classe dans l’admin Django, indépendante de tout modèle.


Pseudo-API proposée

from django.contrib.admin import AdminPage, register_page
from django.http import HttpRequest
from django.template.response import TemplateResponse
class AnalyticsPage(AdminPage):
    title = "Analytics"
    section = "Pages"
    slug = "analytics"
    icon = "chart-line"
    permission_required = "reports.view_analytics"

    def has_permission(self, request: HttpRequest) -> bool:
        return request.user.has_perm(self.permission_required)

    def get_context_data(self, request):
        return {
            "total_users": 1240,
            "active_today": 87,
        }

    def view(self, request: HttpRequest):
        return TemplateResponse(
            request,
            "admin/analytics.html",
            self.get_context_data(request),
        )
register_page(AnalyticsPage)

Comportement attendu

  • Enregistrement global via AdminSite, sans dépendance à une application
  • Apparition dans l’index de l’admin sous une rubrique dédiée ou par défaut
  • URLs internes de type /admin/pages/<slug>/
  • Intégration native au système de permissions Django
  • Aucune dépendance à un modèle ou à des permissions factices

Cas d’usage

  • Dashboards métier
  • Pages de monitoring
  • Interfaces internes non orientées données
  • Back-office applicatif pour petites équipes

Bénéfices

  • Réduction du besoin de dashboards externes
  • Réutilisation complète de l’authentification, des permissions et de l’UI admin
  • Extension naturelle de django-admin sans rupture de compatibilité
  • Alternative légère aux solutions de back-office parallèles

Request or proposal

request

Additional Details

No response

Implementation Suggestions

No response

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    Status

    Done

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions