• Stars
    star
    1,546
  • Rank 29,989 (Top 0.6 %)
  • Language
    CSS
  • License
    MIT License
  • Created almost 9 years ago
  • Updated 10 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

๐Ÿฆธ โšก django's default admin interface with superpowers - customizable themes, popup windows replaced by modals and many other features.

django-admin-interface

django-admin-interface is a modern responsive flat admin interface customizable by the admin itself.

django-admin-interface-preview

Features

  • Beautiful default django-theme
  • Themes management and customization (you can customize admin title, logo and colors)
  • Responsive
  • Related modal (instead of the old popup window)
  • Environment name/marker
  • Language chooser
  • Foldable apps (accordions in the navigation bar)
  • Collapsible fieldsets can have their initial state expanded instead of collapsed
  • NEW Collapsible inlines
  • NEW Tabbed fieldsets and inlines
  • NEW List filter removal links
  • NEW List filter highlight selected options
  • List filter dropdown
  • List filter sticky
  • Form controls sticky (pagination and save/delete buttons)
  • Compatibility / style optimizations for:
    • django-ckeditor
    • django-dynamic-raw-id
    • django-json-widget
    • django-modeltranslation
    • django-rangefilter
    • django-streamfield
    • django-tabbed-admin
    • sorl-thumbnail
  • Translated in many languages: de, es, fa, fr, it, pl, pt_BR, tr

Installation

  • Run pip install django-admin-interface
  • Add admin_interface and colorfield to settings.INSTALLED_APPS before django.contrib.admin
INSTALLED_APPS = (
    #...
    "admin_interface",
    "colorfield",
    #...
    "django.contrib.admin",
    #...
)

X_FRAME_OPTIONS = "SAMEORIGIN"
SILENCED_SYSTEM_CHECKS = ["security.W019"]
  • Run python manage.py migrate
  • Run python manage.py collectstatic --clear
  • Restart your application server

Warning - if you want use modals instead of popup windows, ensure to add X_FRAME_OPTIONS = "SAMEORIGIN" setting.

Optional features

To make a fieldset start expanded with a Hide button to collapse, add the class "expanded" to its classes:

class MyModelAdmin(admin.ModelAdmin):
    # ...
    fieldsets = [
        ("Section title", {
            "classes": ("collapse", "expanded"),
            "fields": (...),
        }),
    ]
    # ...

Optional themes

This package ships with optional themes as fixtures, they can be installed using the loaddata admin command. Optional themes are activated on installation.

Django theme (default):

Run python manage.py loaddata admin_interface_theme_django.json

Bootstrap theme:

Run python manage.py loaddata admin_interface_theme_bootstrap.json

Foundation theme:

Run python manage.py loaddata admin_interface_theme_foundation.json

U.S. Web Design Standards theme:

Run python manage.py loaddata admin_interface_theme_uswds.json

Add more themes

You can add a theme you've created through the admin to this repository by sending us a PR. Here are the steps to follow to add:

  1. Export your exact theme as fixture using the dumpdata admin command: python manage.py dumpdata admin_interface.Theme --indent 4 -o admin_interface_theme_{{name}}.json --pks=N

  2. Copy the generated json file into the fixtures folder (making sure its name starts with admin_interface_theme_ to avoid clashes with fixtures that might be provided by other third party apps).

  3. Remove the pk from the fixture and make sure the active field is set to true (in this way a theme is automatically activated when installed).

  4. Edit the section above to document your theme.

Add theme support to third-party libraries

You can add theme support to existing third-party libraries using the following CSS variables:

Header

  • --admin-interface-header-background-color
  • --admin-interface-header-text-color
  • --admin-interface-header-link-color
  • --admin-interface-header-link_hover-color
  • --admin-interface-title-color
  • --admin-interface-env-color

Logo

  • --admin-interface-logo-color
  • --admin-interface-logo-default-background-image
  • --admin-interface-logo-max-width
  • --admin-interface-logo-max-height

Modules / Links

  • --admin-interface-module-background-color
  • --admin-interface-module-background-selected-color
  • --admin-interface-module-border-radius
  • --admin-interface-module-text-color
  • --admin-interface-module-link-color
  • --admin-interface-module-link-selected-color
  • --admin-interface-module-link-hover-color
  • --admin-interface-generic-link-color
  • --admin-interface-generic-link-hover-color
  • --admin-interface-generic-link-active-color

Buttons

  • --admin-interface-save-button-background-color
  • --admin-interface-save-button-background-hover-color
  • --admin-interface-save-button-text-color
  • --admin-interface-delete-button-background-color
  • --admin-interface-delete-button-background-hover-color
  • --admin-interface-delete-button-text-color

Related Modal

  • --admin-interface-related-modal-background-color
  • --admin-interface-related-modal-background-opacity
  • --admin-interface-related-modal-border-radius
  • --admin-interface-related-modal-close-button-display

Screenshots

Admin login

django-admin-interface_login

Admin dashboard

django-admin-interface_dashboard

Admin themes management

django-admin-interface_themes_management

Admin theme customization

django-admin-interface_theme_customization

Localization

At the moment, this package has been translated into the following languages: de, es, fa, fr, it, pl, pt_BR, tr.

Translate into another language

  • Run python -m django makemessages --ignore ".tox" --ignore "venv" --add-location "file" --extension "html,py" --locale "it" (example for Italian localization)

  • Update translations in admin_interface/locale/it/LC_MESSAGES/django.po

  • Run python -m django compilemessages --ignore ".tox" --ignore "venv"

Update translations

If you do some changes to the project, remember to update translations, because if the translations files are not up-to-date, the lint step in the CI will fail:

  • Run tox -e translations

FAQ

Custom base-site.html

I already have a custom base_site.html, how can I make it work?

You can use django-apptemplates, then add {% extends "admin_interface:admin/base_site.html" %} to your base_site.html

Language Chooser not showing

I have enabled the Language Chooser, but it is not visible in the admin, what should I do?

You must configure multilanguage settings and urls correctly:

LANGUAGES = (
    ("en", _("English")),
    ("it", _("Italiano")),
    ("fr", _("Franรงais")),
    # more than one language is expected here
)
LANGUAGE_CODE = "en"
USE_I18N = True
MIDDLEWARE = [
    # ...
    "django.middleware.locale.LocaleMiddleware",
    # ...
]
from django.conf.urls.i18n import i18n_patterns
from django.contrib import admin
from django.urls import include, path

# ...

urlpatterns = [
    path("i18n/", include("django.conf.urls.i18n")),
]
urlpatterns += i18n_patterns(path("admin/", admin.site.urls))

Testing

# clone repository
git clone https://github.com/fabiocaccamo/django-admin-interface.git && cd django-admin-interface

# create virtualenv and activate it
python -m venv venv && . venv/bin/activate

# upgrade pip
python -m pip install --upgrade pip

# install requirements
pip install -r requirements.txt -r requirements-test.txt

# install pre-commit to run formatters and linters
pre-commit install --install-hooks

# run tests
tox
# or
python runtests.py
# or
python -m django test --settings "tests.settings"

Contributing

Contributions are always welcome, please follow these steps for submitting good quality PRs:

  • โ— Open an issue, please don't submit any PR that doesn't refer to an existing issue.
  • ๐Ÿ’ป Work on changes, changes should preferably be covered by tests to avoid regressions in the future.
  • ๐ŸŒ Update the translations files.
  • ๐Ÿงช Run tests ensuring that there are no errors.
  • ๐Ÿ“ฅ Submit a pull-request and mark it as "Ready for review" only if it passes the CI.

License

Released under MIT License.


Supporting

See also

  • django-colorfield - simple color field for models with a nice color-picker in the admin. ๐ŸŽจ

  • django-extra-settings - config and manage typed extra settings using just the django admin. โš™๏ธ

  • django-maintenance-mode - shows a 503 error page when maintenance-mode is on. ๐Ÿšง ๐Ÿ› ๏ธ

  • django-redirects - redirects with full control. โ†ช๏ธ

  • django-treenode - probably the best abstract model / admin for your tree based stuff. ๐ŸŒณ

  • python-benedict - dict subclass with keylist/keypath support, I/O shortcuts (base64, csv, json, pickle, plist, query-string, toml, xml, yaml) and many utilities. ๐Ÿ“˜

  • python-codicefiscale - encode/decode Italian fiscal codes - codifica/decodifica del Codice Fiscale. ๐Ÿ‡ฎ๐Ÿ‡น ๐Ÿ’ณ

  • python-fontbro - friendly font operations. ๐Ÿงข

  • python-fsutil - file-system utilities for lazy devs. ๐ŸงŸโ€โ™‚๏ธ

More Repositories

1

FCUUID

๐Ÿ“ฑ ๐Ÿ†” iOS UUID / Universally Unique Identifiers library as alternative to UDID and identifierForVendor.
Objective-C
1,574
star
2

python-benedict

๐Ÿ“˜ dict subclass with keylist/keypath support, built-in I/O operations (base64, csv, ini, json, pickle, plist, query-string, toml, xls, xml, yaml), s3 support and many utilities.
Python
1,111
star
3

FCFileManager

๐Ÿ“ฑ ๐Ÿ“‚ iOS file manager on top of NSFileManager for simplifying files management.
Objective-C
899
star
4

django-colorfield

๐ŸŽจ color field for django models with a nice color-picker in the admin.
Python
519
star
5

django-treenode

๐ŸŒณ probably the best abstract model/admin for your tree based stuff.
Python
481
star
6

django-maintenance-mode

๐Ÿšง ๐Ÿ› ๏ธ shows a 503 error page when maintenance-mode is on.
Python
408
star
7

django-extra-settings

โš™๏ธ config and manage typed extra settings using just the django admin.
Python
359
star
8

FCCurrentLocationGeocoder

๐Ÿ“ฑ ๐Ÿ“ iOS geocoder for forward / reverse geocode user's current location using a block-based syntax.
Objective-C
262
star
9

python-fsutil

๐Ÿ’ป ๐Ÿ”ง high-level file-system operations for lazy devs.
Python
147
star
10

FCIPAddressGeocoder

๐Ÿ“ฑ ๐ŸŒ iOS geocoder for geocode device IP Address location using GeoIP service(s) and a block-based syntax.
Objective-C
114
star
11

django-freeze

๐ŸงŠ convert your dynamic django site to a static one with one line of code.
Python
89
star
12

python-codicefiscale

๐Ÿ‡ฎ๐Ÿ‡น ๐Ÿ’ณ italian fiscal codes encoding, decoding and validation - codifica, decodifica e validazione del Codice Fiscale italiano.
Python
62
star
13

django-redirects

โ†ช๏ธ โœ… redirects as they should be, with full control.
Python
55
star
14

python-fontbro

๐Ÿงข friendly font operations on top of fontTools.
Python
41
star
15

utils.js

๐Ÿ‘ท ๐Ÿ”ง zero dependencies vanilla JavaScript utils.
JavaScript
18
star
16

create-matrix-action

๐Ÿงช ๐Ÿ’ฅ GitHub action that creates a non-square matrix parsing a readable config.
Python
9
star
17

layers.css

๐Ÿ“‘ pure (s)css independent stacked layers, no js at all.
CSS
8
star
18

wall.css

๐Ÿงฑ pure (s)css block-grid implementation with extra features.
SCSS
8
star
19

FCMapsApp

๐Ÿ“ฑ ๐Ÿ—บ๏ธ iOS utility for launching external maps applications (Apple Maps, Google Maps, Waze, Yandex Maps), showing locations and getting directions.
Objective-C
7
star
20

FCUtils

๐Ÿ“ฑ ๐Ÿ”ง iOS utilities collection.
Objective-C
6
star
21

python-imageutil

๐ŸŽฉ ๐Ÿช„ high-level image operations, with a bit of magic. ๐Ÿฐ
Python
5
star
22

django-cache-cleaner

๐Ÿงนโœจ clear the entire cache or individual caches easily using the admin panel or management command.
Python
2
star
23

xhrm.js

JavaScript XMLHttpRequest manager built on top of jQuery $.ajax.
JavaScript
2
star
24

tabbo.js

๐Ÿซ โŒจ๏ธ enhanced keyboard tabbing usability on any website / webapp with one line of code.
JavaScript
1
star