codicoop / boilerplate_django

Plantilla pels nous projectes web amb Django.
GNU General Public License v3.0
0 stars 0 forks source link

Afegir enllaç al dashboard de l'admin per veure log sencer d'accions #27

Closed perepicornell closed 2 years ago

perepicornell commented 2 years ago

Diria que a docus es menciona com fer-ho. En cas que sigui un package extern valorar si val la pena ja que segurament lo únic que fa és registrar un model a l'admin.

Un exemple de com muntar-ho és al repo d'Ateneus, a apps/coopolis/dashboard.py: links_children.append(["Registre d'activitat al panell d'administració", 'admin/logentry/'])

Al posar això al dashboard, fer-ho de manera que únicament superusers vegin l'enllaç/el model. Lo ideal seria que en comptes d'un enllaç com passa amb Coòpolis, sigui una referència al model com amb la resta de coses (al dashboard son els ModelList), de manera que es pugui crear una categoria "Administració" on hi hagi això, el Constance, i d'altres coses en un futur.

nabiu256 commented 2 years ago

He estat investigant el tema i he vist que en principi el model de Django que tracta tot això és el LogEntry de django.contrib.admin.models. El que he provat més immediatament és doncs fer

        self.children.append(
            modules.ModelList(
                _("Logs"),
                column=1,
                collapsible=False,
                models=("django.contrib.admin.models.LogEntry",),
            )
        )

però per alguna raó grappelli no mostra cap model, cosa que entenc que fa quan no hi ha cap instància disponible. He entrat a la shell del docker per veure si els EntryLogs s'estaven fent bé, i sí que he vist que després d'afegir un parell d'usuaris a l'admin, hi havia dues entries, però no estaven del tot ben configurades (l'user associat a l'entry no sortia correctament).

L'altre cosa és que tot i que m'he mirat l'exemple de coòpolis, no acabo d'entendre com és que funciona perquè no veig enlloc la definició de la URL admin/logentry. Entenc que és algo de Django pròpiament, però tampoc he sabut trobar res a la documentació.

perepicornell commented 2 years ago

La URL /admin/logentry la crea un package: https://github.com/yprez/django-logentry-admin

Si l'instal·les la URL ja existirà. El tema és que la app diria que fa poc més que això: https://github.com/yprez/django-logentry-admin/blob/master/logentry_admin/admin.py

Així que una opció és copiar directament això a apps/base/admin.py o on sigui... ara bé si veus que prefereixes seguir fent servir el package extern, endavant, com ho vegis millor tu.