========
Overview
========
Utility code and patterns.
* Free software: BSD 2-Clause License
Installation
============
::
pip install django-admin-utils
You can also install the in-development version with::
pip install https://github.com/ionelmc/django-admin-utils/archive/master.zip
Documentation
=============
Terse admin.py
--------------
::
from django.contrib import admin
from admin_utils import register, inline
from .models import MyModel, OtherModel
@register(MyModel)
class MyModelAdmin(admin.ModelAdmin):
inlines = inline(OtherModel),
If you want custom admin sites::
customsite = admin.AdminSite()
@register(MyModel, site=customsite)
class MyModelAdmin(admin.ModelAdmin):
inlines = inline(OherModel),
Mock admin (mount your views in admin using model wrappers)
-----------------------------------------------------------
Have you ever wanted a page in the admin that appears in the app list but you don't have any
models ? Now you can have that without patching up the admin Site or the templates. Just put this
in your admin.py::
from django.urls import path
from admin_utils import make_admin_class
make_admin_class(
app_label="test_app",
model_name="Test1",
urls=[
path('', views.root, name='test_app_test1_changelist'),
path('level1/', views.level1, name='level-1'),
path('level1/level2/', views.level2, name='level-2'),
],
)
To use different admin site::
make_admin_class(
site=customsite,
app_label="test_app",
model_name="Test1",
urls=[
path('', views.root, name='test_app_test1_changelist'),
path('level1/', views.level1, name='level-1'),
path('level1/level2/', views.level2, name='level-2'),
],
)
Alternatively you can mount a single view with a decorator::
from admin_utils import register_view
@register_view(
site=customsite,
app_label="test_app",
model_name="Test1",
)
def root(request):
...
Admin mixins
------------
admin_utils.mixins.FoldableListFilterAdminMixin
```````````````````````````````````````````````
Adds nice filter toggling with cookie support. Largely based on `django-foldable-list-filter
<https://bitbucket.org/Stanislas/django-foldable-list-filter>`_ but without the transition effect and no pictures.
Example::
from admin_utils.mixins import FoldableListFilterAdminMixin
class MyModelAdmin(FoldableListFilterAdminMixin, admin.ModelAdmin):
pass
Looks like this:
.. image:: https://raw.githubusercontent.com/ionelmc/django-admin-utils/master/docs/FoldableListFilterAdminMixin.png
:alt: Screenshort of FoldableListFilterAdminMixin
admin_utils.mixins.FullWidthAdminMixin
``````````````````````````````````````
Make the changelist expand instead of having the width of the windows and having that nasty inner scrollbar. You never gonna notice that if
your table is long !
Example::
from admin_utils.mixins import FoldableListFilterAdminMixin
class MyModelAdmin(FoldableListFilterAdminMixin, admin.ModelAdmin):
pass
You probably didn't even notice you had this problem:
.. image:: https://raw.githubusercontent.com/ionelmc/django-admin-utils/master/docs/FullWidthAdminMixin.png
:alt: Screenshort of FullWidthAdminMixin
Changelog
=========
2.0.4 (2021-07-19)
------------------
* Fix mock admin regression and add test.
2.0.3 (2021-07-19)
------------------
* Make the mock admin behave as without editable permissions (implemented the missing ``has_view_permission`` method).
2.0.2 (2021-07-18)
------------------
* Expose the fake hidden model as a ``fake_model`` attribute.
2.0.1 (2021-07-18)
------------------
* Add missing import for ``admin_utils.register_view``.
2.0.0 (2021-07-18)
------------------
* Drop support for Python 2.7 and Django 1.11.
* Added the ``register_view`` decorator.
* Update examples/readme.
* Various bugfixes.
1.0.0 (2021-07-14)
------------------
* Fixed a bunch of regressions with Django 3.2.
0.3.0 (2014-02-02)
------------------
* Forgot to add any details.