Skip to content

Commit

Permalink
Merge pull request #70 from aboutofpluto/master
Browse files Browse the repository at this point in the history
Custom admin site
  • Loading branch information
tolomea authored Nov 16, 2023
2 parents 3ce20fc + 4e59581 commit e58cadb
Show file tree
Hide file tree
Showing 3 changed files with 35 additions and 1 deletion.
32 changes: 32 additions & 0 deletions README.rst
Original file line number Diff line number Diff line change
Expand Up @@ -80,6 +80,8 @@ Settings
+------------------------------------+---------------+---------------------------------+----------------------------------------------------------------------------------------------------+
| ``DATA_BROWSER_APPS_EXPANDED`` | ``True`` | | Are the app sections of the homepage model list expanded by default. |
+------------------------------------+---------------+---------------------------------+----------------------------------------------------------------------------------------------------+
| ``DATA_BROWSER_ADMIN_SITE`` | ``None`` | `Admin Site`_ | Specify an ``admin.AdminSite`` to use (default is ``admin.site``). |
+------------------------------------+---------------+---------------------------------+----------------------------------------------------------------------------------------------------+


Permissions
Expand Down Expand Up @@ -406,7 +408,37 @@ Then we need to tell the Data Browser we want ``p95`` on duration fields.
lambda x: Percentile(0.95, x), DurationType
)
Admin Site
----------

You can create and use a custom ``admin.AdminSite`` (see https://docs.djangoproject.com/en/4.2/ref/contrib/admin/).

To do so, in your ``settings.py``, add:

.. code-block:: python
from django.contrib import admin
class BrowserAdminSite(admin.AdminSite):
pass
DATA_BROWSER_ADMIN_SITE = BrowserAdminSite(name='data_browser')
Then, in any ``admin.py``, register the models as usually but using ``DATA_BROWSER_ADMIN_SITE``.

For instance in ``myapp/admin.py``:

.. code-block:: python
from django.contrib import admin
from django.conf import settings
from myapp.models import MyAdminModel, MyBrowsableModel
# register in admin only
admin.register(MyAdminModel)
# register in data browser only
settings.DATA_BROWSER_ADMIN_SITE.register(MyBrowsableModel)
Version numbers
---------------
Expand Down
1 change: 1 addition & 0 deletions data_browser/common.py
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@ class Settings:
"DATA_BROWSER_USING_DB": "default",
"DATA_BROWSER_ADMIN_OPTIONS": {},
"DATA_BROWSER_APPS_EXPANDED": True,
"DATA_BROWSER_ADMIN_SITE": None,
}

def __getattr__(self, name):
Expand Down
3 changes: 2 additions & 1 deletion data_browser/orm_admin.py
Original file line number Diff line number Diff line change
Expand Up @@ -191,7 +191,8 @@ def get_common(admin, model):
hidden_model_fields[model].update(_get_option(admin, "hide_fields", request))

model_admins = {}
for model, model_admin in site._registry.items():
admin_site = settings.DATA_BROWSER_ADMIN_SITE or site
for model, model_admin in admin_site._registry.items():
if visible(model_admin):
model_admins[model] = model_admin
all_model_fields[model].update(model_admin.get_list_display(request))
Expand Down

0 comments on commit e58cadb

Please sign in to comment.