A jazzy skin for the Django Admin-Interface (official repository).

Related tags

django-grappelli
Overview

Django Grappelli

https://readthedocs.org/projects/django-grappelli/badge/?version=latest

A jazzy skin for the Django admin interface.

Grappelli is a grid-based alternative/extension to the Django administration interface.

Code

https://github.com/sehmaschine/django-grappelli

Website

http://www.grappelliproject.com

Documentation

http://readthedocs.org/docs/django-grappelli/

Releases

Grappelli is always developed against the latest stable Django release and is NOT tested with Django's master branch.

  • Grappelli 2.15.1 (April 22th, 2021): Compatible with Django 3.2 (LTS)
  • Grappelli 2.14.4 (April 15th, 2021): Compatible with Django 3.1
  • Grappelli 2.13.4 (February 10th, 2020): Compatible with Django 2.2 (LTS)
  • Grappelli 2.10.4 (November 1st, 2018): Compatible with Django 1.11 (LTS)

Current development branches:

  • Grappelli 2.15.2 (Development version for Django 3.2, see branch Stable/2.15.x)
  • Grappelli 2.14.5 (Development version for Django 3.1, see branch Stable/2.14.x)
  • Grappelli 2.13.5 (Development version for Django 2.2, see branch Stable/2.13.x)
  • Grappelli 2.10.5 (Development version for Django 1.11, see branch Stable/2.10.x)

Older versions are available at GitHub, but are not supported anymore.

Issues
  • get_filtered_queryset  or

    get_filtered_queryset or "'query_string'" should support ModelAdmin.queryset

    Similar to this user: http://stackoverflow.com/questions/17852308/how-to-filter-autocompletion-results-in-django-grapelli/17981530#17981530

    I need to restrict all FK/M2M lookups. In my case, I restrict them to the company division that entered the data. Similar to SAS.

    The existing "ForeignKey.limit_choices_to" (https://docs.djangoproject.com/en/1.5/ref/models/fields/#django.db.models.ForeignKey.limit_choices_to) does not seem able to access anything in the "request" object or session storage.

    The ModelAdmin.queryset feature: https://docs.djangoproject.com/en/1.5/ref/contrib/admin/#django.contrib.admin.ModelAdmin.queryset

    Is passed the request object, which lets me easily restrict records using: qs.filter(site__id=request.session['site'].id)

    What I need is a non-hack way to either instruct Grappelli to use the admin specific model manager (or any custom manger the user cares to define), or a way to include request/session values in the filter.

    I have a pull request pending for "django_extensions" to fix this with their autocomplete function.

    Thanks in advance!

    discussion 
    opened by rcooke 34
  • Filter drop-down doesn't function due to Javascript error in Chrome, FF

    Filter drop-down doesn't function due to Javascript error in Chrome, FF

    I just installed django-grappelli 2.3.4 in combination with Django 1.4.0 alpha. All's fine, except for the filter drop-down box on the change list page. Chrome and Firefox report a Javascript error:

    Uncaught TypeError: Object #<Object> has no method 'actions'
    (anonymous function):8000/admin/msdb/incident/:59
    c.extend.readyjquery-1.4.2.min.js:26
    L
    

    The relevant bit of code is in templates/admin/change_list.html. A fix seems to be moving the block

    {% if action_form %}
      ...
    {% endif %}
    

    from line 19 down to line 65, right after {{ media.js }}. I believe this is because the actions.js script is loaded in the block contained by media.js, which comes after relevant Javascript code.

    Not sure if this is a result of Django code still being in alpha, but figured I'd report it.

    Another error occurrs at the same time by grp_collapsible in templates/admin/includes_grappelli/header.html:

    Uncaught TypeError: Object #<Object> has no method 'grp_collapsible'
    

    Don't know how to fix this one, though.

    opened by ndrsn 31
  • Autocomplete does not work with Django 3.2

    Autocomplete does not work with Django 3.2

    VERSIONS: Grappelli 2.15.1, Django 3.2 STATICFILES: WARNINGS, Details: I see a lot of errors with text like this

    Found another file with the destination path 'admin/js/autocomplete.js'. It will be ignored since only the first encountered file is collected. If this is not what you want, make sure every static file has a unique path.
    

    JAVASCRIPTS: ERROR Failed to load resource: the server responded with a status of 403 (Forbidden) CUSTOMIZATIONS: NONE

    I upgraded django from 2.2 to 3.2 and it broke the autocomplete on related fields it just always says 403 and gives the following error:

    Forbidden (Permission denied): /admin/autocomplete/
    Traceback (most recent call last):
      File "/home/alex/Project/env/lib/python3.8/site-packages/django/utils/datastructures.py", line 76, in __getitem__
        list_ = super().__getitem__(key)
    KeyError: 'app_label'
    
    During handling of the above exception, another exception occurred:
    
    Traceback (most recent call last):
      File "/home/alex/Project/env/lib/python3.8/site-packages/django/contrib/admin/views/autocomplete.py", line 61, in process_request
        app_label = request.GET['app_label']
      File "/home/alex/Project/env/lib/python3.8/site-packages/django/utils/datastructures.py", line 78, in __getitem__
        raise MultiValueDictKeyError(key)
    django.utils.datastructures.MultiValueDictKeyError: 'app_label'
    
    The above exception was the direct cause of the following exception:
    
    Traceback (most recent call last):
      File "/home/alex/Project/env/lib/python3.8/site-packages/django/core/handlers/exception.py", line 47, in inner
        response = get_response(request)
      File "/home/alex/Project/env/lib/python3.8/site-packages/django/core/handlers/base.py", line 181, in _get_response
        response = wrapped_callback(request, *callback_args, **callback_kwargs)
      File "/home/alex/Project/env/lib/python3.8/site-packages/django/contrib/admin/sites.py", line 250, in wrapper
        return self.admin_view(view, cacheable)(*args, **kwargs)
      File "/home/alex/Project/env/lib/python3.8/site-packages/django/utils/decorators.py", line 130, in _wrapped_view
        response = view_func(request, *args, **kwargs)
      File "/home/alex/Project/env/lib/python3.8/site-packages/django/views/decorators/cache.py", line 44, in _wrapped_view_func
        response = view_func(request, *args, **kwargs)
      File "/home/alex/Project/env/lib/python3.8/site-packages/django/contrib/admin/sites.py", line 232, in inner
        return view(request, *args, **kwargs)
      File "/home/alex/Project/env/lib/python3.8/site-packages/django/contrib/admin/sites.py", line 417, in autocomplete_view
        return AutocompleteJsonView.as_view(admin_site=self)(request)
      File "/home/alex/Project/env/lib/python3.8/site-packages/django/views/generic/base.py", line 70, in view
        return self.dispatch(request, *args, **kwargs)
      File "/home/alex/Project/env/lib/python3.8/site-packages/django/views/generic/base.py", line 98, in dispatch
        return handler(request, *args, **kwargs)
      File "/home/alex/Project/env/lib/python3.8/site-packages/django/contrib/admin/views/autocomplete.py", line 20, in get
        self.term, self.model_admin, self.source_field, to_field_name = self.process_request(request)
      File "/home/alex/Project/env/lib/python3.8/site-packages/django/contrib/admin/views/autocomplete.py", line 65, in process_request
        raise PermissionDenied from e
    django.core.exceptions.PermissionDenied
    [02/May/2021 20:11:33] "GET /admin/autocomplete/ HTTP/1.1" 403 135
    

    This ticket seems to be related to the issue https://code.djangoproject.com/ticket/32659?cversion=2&cnum_hist=2

    Downgrade to 3.1 fixes the issue.

    opened by FrozenAlex 31
  • Use Twitter bootstrap instead of blueprint

    Use Twitter bootstrap instead of blueprint

    For the grids and styles, would be great to use twitter bootstrap instead of blueprint as it will come out with more themes in near future and is more actively updated.

    opened by bevenky 30
  • Grapelli 2.7.1's backoffice fails selecting records with checkboxes

    Grapelli 2.7.1's backoffice fails selecting records with checkboxes

    VERSIONS: Grappelli 2.7.1(stable from pip), Django 1.8.3, Python 2.7.9 STATICFILES: OK JAVASCRIPTS: OK? I'm not sure due to this failure (Tested in Firefox 40) CUSTOMIZATIONS: NONE *

    • ...unless adding tinymce.js through myapp/admin.py counts as a customization...

    The failure itself looks simple: if I try to select a model's record in admin panel clicking the checkboxes, it keeps saying "selected 0 of n" and doesn't let me perform DELETE operation through the admin's GUI. This issue happens with any kind of model; even the basic ones, like the users for example.

    Maybe I can try to figure out why this happens - (I mean, I feel comfortable with Python, HTML, CSS -not so comfortable with CSS, but I understand it xD-, JavaScript, jQuery -technically, it is a JavaScript's library :P- and SQL languages; and I have been dealing with Django framework for six months or more)... The problem is that I have no idea where are the functions that control the checkbox's state to start debugging (I mean, I know where to find the package and the source in my machine, but not which order should I follow to analyze the implied functions/classes, because I just don't know them yet)... however, I would try it out.

    PD: How do things work in case I want to self-assign this issue? I guess I would probably need permission or something...

    opened by SebasSBM 27
  • Use localized datepickers for date input fields in Grappelli

    Use localized datepickers for date input fields in Grappelli

    Hi,

    thank you for sharing & maintaining this great, hiqh-quality, useful Django package.

    I found some support for localized (i18n) datepickers in Grappelli, but they did not seem to work for me. So, I created this small patch. I'd be more than happy if you merged it.

    I used {% if LANGUAGE_CODE %} to test for i18n support, but I don't know if this is the best way.

    opened by mpasternak 26
  • Django 1.10 support?

    Django 1.10 support?

    Has Django 1.10 support been looked at yet, and are there any incompatibilities? Happy to help with it.

    opened by adamchainz 24
  • ValueError: The file 'grappelli/jquery/i18n/ui.datepicker-en-us.js' could not be found

    ValueError: The file 'grappelli/jquery/i18n/ui.datepicker-en-us.js' could not be found

    VERSIONS: Grappelli 2.5.6, Django 1.6.10
    STATICFILES: ERROR
    CUSTOMIZATIONS: NONE
    

    Running ./manage.py collectstatic && ./manage.py.compress throws this:

    ValueError: The file 'grappelli/jquery/i18n/ui.datepicker-en-us.js' could not be found with <django.contrib.staticfiles.storage.CachedStaticFilesStorage object at 0x2d61550>.
    
    opened by msamoylov 23
  • RTL version

    RTL version

    Hi The RTL version of the grappelli is old and has many issues, can you please check it?

    opened by sharifzadesina 22
  • [problem] Filter in 2.7.3

    [problem] Filter in 2.7.3

    I just upgraded to 2.7.3 from 2.7.1 and my filter stopped working. I get a javascript error: (index):63 Uncaught TypeError: $(...).actions is not a function

    image

    opened by mykljohn 21
  • RemovedInDjango41Warning raised in Django 3.2 under pytest-django

    RemovedInDjango41Warning raised in Django 3.2 under pytest-django

    Our test suite runs with the following command:

    $ python -Werror -m pytest
    

    It errors due to a deprecation warning triggered by Grappelli:

    Traceback (most recent call last):
      File "[email protected]/3.9.5/Frameworks/Python.framework/Versions/3.9/lib/python3.9/runpy.py", line 197, in _run_module_as_main
        return _run_code(code, main_globals, None,
      File "[email protected]/3.9.5/Frameworks/Python.framework/Versions/3.9/lib/python3.9/runpy.py", line 87, in _run_code
        exec(code, run_globals)
      File ".tox/py39/lib/python3.9/site-packages/pytest/__main__.py", line 5, in <module>
        raise SystemExit(pytest.console_main())
      File ".tox/py39/lib/python3.9/site-packages/_pytest/config/__init__.py", line 185, in console_main
        code = main()
      File ".tox/py39/lib/python3.9/site-packages/_pytest/config/__init__.py", line 143, in main
        config = _prepareconfig(args, plugins)
      File ".tox/py39/lib/python3.9/site-packages/_pytest/config/__init__.py", line 318, in _prepareconfig
        config = pluginmanager.hook.pytest_cmdline_parse(
      File ".tox/py39/lib/python3.9/site-packages/pluggy/hooks.py", line 286, in __call__
        return self._hookexec(self, self.get_hookimpls(), kwargs)
      File ".tox/py39/lib/python3.9/site-packages/pluggy/manager.py", line 93, in _hookexec
        return self._inner_hookexec(hook, methods, kwargs)
      File ".tox/py39/lib/python3.9/site-packages/pluggy/manager.py", line 84, in <lambda>
        self._inner_hookexec = lambda hook, methods, kwargs: hook.multicall(
      File ".tox/py39/lib/python3.9/site-packages/pluggy/callers.py", line 203, in _multicall
        gen.send(outcome)
      File ".tox/py39/lib/python3.9/site-packages/_pytest/helpconfig.py", line 100, in pytest_cmdline_parse
        config: Config = outcome.get_result()
      File ".tox/py39/lib/python3.9/site-packages/pluggy/callers.py", line 80, in get_result
        raise ex[1].with_traceback(ex[2])
      File ".tox/py39/lib/python3.9/site-packages/pluggy/callers.py", line 187, in _multicall
        res = hook_impl.function(*args)
      File ".tox/py39/lib/python3.9/site-packages/_pytest/config/__init__.py", line 1003, in pytest_cmdline_parse
        self.parse(args)
      File ".tox/py39/lib/python3.9/site-packages/_pytest/config/__init__.py", line 1283, in parse
        self._preparse(args, addopts=addopts)
      File ".tox/py39/lib/python3.9/site-packages/_pytest/config/__init__.py", line 1191, in _preparse
        self.hook.pytest_load_initial_conftests(
      File ".tox/py39/lib/python3.9/site-packages/pluggy/hooks.py", line 286, in __call__
        return self._hookexec(self, self.get_hookimpls(), kwargs)
      File ".tox/py39/lib/python3.9/site-packages/pluggy/manager.py", line 93, in _hookexec
        return self._inner_hookexec(hook, methods, kwargs)
      File ".tox/py39/lib/python3.9/site-packages/pluggy/manager.py", line 84, in <lambda>
        self._inner_hookexec = lambda hook, methods, kwargs: hook.multicall(
      File ".tox/py39/lib/python3.9/site-packages/pluggy/callers.py", line 208, in _multicall
        return outcome.get_result()
      File ".tox/py39/lib/python3.9/site-packages/pluggy/callers.py", line 80, in get_result
        raise ex[1].with_traceback(ex[2])
      File ".tox/py39/lib/python3.9/site-packages/pluggy/callers.py", line 187, in _multicall
        res = hook_impl.function(*args)
      File ".tox/py39/lib/python3.9/site-packages/pytest_django/plugin.py", line 348, in pytest_load_initial_conftests
        _setup_django()
      File ".tox/py39/lib/python3.9/site-packages/pytest_django/plugin.py", line 234, in _setup_django
        django.setup()
      File ".tox/py39/lib/python3.9/site-packages/django/__init__.py", line 24, in setup
        apps.populate(settings.INSTALLED_APPS)
      File ".tox/py39/lib/python3.9/site-packages/django/apps/registry.py", line 91, in populate
        app_config = AppConfig.create(entry)
      File ".tox/py39/lib/python3.9/site-packages/django/apps/config.py", line 189, in create
        warnings.warn(message, RemovedInDjango41Warning, stacklevel=2)
    django.utils.deprecation.RemovedInDjango41Warning: 'grappelli' defines default_app_config = 'grappelli.apps.GrappelliConfig'. Django now detects this configuration automatically. You can remove default_app_config.
    

    Package versions:

    • Python 3.9.5
    • Django 3.2.3
    • pytest-django 4.3.0
    • django-grappelli 2.15.1
    opened by johnthagen 4
  • jQuery < 3.5.0 Cross-Site Scripting: update jQuery

    jQuery < 3.5.0 Cross-Site Scripting: update jQuery

    jQuery < 3.5.0 Cross-Site Scripting

    There is a flaw in the jQuery.htmlPrefilter method that is used when displaying elements constructed with the jQuery('') technique. Vulnerable applications passing untrusted data into this method may be vulnerable to cross-site scripting attacks. An attacker can abuse this to attack the user, gain access to their private data, and execute application features with the victim's privileges.

    https://blog.jquery.com/2020/04/10/jquery-3-5-0-released/

    opened by maradragan 0
  • CVE-2019-11358: update jQuery

    CVE-2019-11358: update jQuery

    jQuery < 3.4.0 Prototype Pollution A prototype pollution vulnerability exists whereby the extend function can be tricked into modifying the prototype of Object should an attacker have the ability to control part of the structure passed to this function. An attacker could exploit this to add or modify an existing property that will exist on all objects, which may lead to denial of service, property injection or, under exceptional circumstances, arbitrary code execution.

    http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2019-11358

    opened by maradragan 0
  • CVE-2016-7103: Update jquery-ui

    CVE-2016-7103: Update jquery-ui

    Cross-site scripting (XSS) vulnerability in jQuery UI before 1.12.0 might allow remote attackers to inject arbitrary web script or HTML via the closeText parameter of the dialog function.

    http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2016-7103

    opened by WouterEekhout 0
  • Remove Grappelli autocomplete in favour of Django/Select2

    Remove Grappelli autocomplete in favour of Django/Select2

    Since Django now has a useful option for autocompletes with Select2, we could think about removing this Grappelli feature IMO. It would help with cleaning up the codebase and following Django releases is much easier without our custom autocomplete option. The only thing currently missing with Django is autocompletes with Generic fields. Besides, I'd also think about removing the related fields functionality (showing the label beneath the input field) – but that's also something which is missing with Django. If we remove both related/autocomplet options with Grappelli, we definitely lose a couple of features – but future development will be easier.

    Looking forward to hear opinions on that.

    discussion 
    opened by sehmaschine 1
  • Fix CSS to show full multi-select form element

    Fix CSS to show full multi-select form element

    Previously, the include added a height of 25px to the select[multiple] inputs, which made them un-usable. This avoids adding the height restriction to the multiple-input selects.

    Previous to fix:

    Screen Shot 2019-07-14 at 2 29 53 PM

    After fix:

    Screen Shot 2019-07-14 at 2 47 32 PM
    opened by liquidpele 5
  • No need to check has_staff here.

    No need to check has_staff here.

    Since it's checked in backend code, and customized AdminSite could remove is_staff limit.

    opened by yihuang 0
  • Update css/compass

    Update css/compass

    @parsch please take a look at the current configuration for creating css files (https://django-grappelli.readthedocs.io/en/latest/contributing.html) and see if we can update/simplify.

    opened by sehmaschine 0
  • Dynamic grapelli dashboard size based on columns from Dashboard class…

    Dynamic grapelli dashboard size based on columns from Dashboard class…

    Django Version: 1.11.14 Base branch: master

    Please have a look.

    opened by artur-sikora 1
  • Dynamic grappelli dashboard size based on columns from Dashboard class

    Dynamic grappelli dashboard size based on columns from Dashboard class

    Columns variable was ignored in template. While columns==2 my Django grappelli showed 3 columns and I wanted to make it 4. My solution works with 1,2,3,4,5 columns, any more and longer names will pop up out of boxes. columns use use 23 as bs size as 24 is rounded up to 25 in widthratio template tag.

    opened by orlra 5
A cool, modern and responsive django admin application based on bootstrap 5

django-baton A cool, modern and responsive django admin application based on bootstrap 5 Documentation: readthedocs Live Demo Now you can try django-b

Otto srl 494 Oct 19, 2021
Extends the Django Admin to include a extensible dashboard and navigation menu

django-admin-tools django-admin-tools is a collection of extensions/tools for the default django administration interface, it includes: a full feature

Django Admin Tools 638 Oct 11, 2021
A Django app for easily adding object tools in the Django admin

Django Object Actions If you've ever tried making admin object tools you may have thought, "why can't this be as easy as making Django Admin Actions?"

Chris Chang 406 Oct 15, 2021
Jazzy theme for Django

Django jazzmin (Jazzy Admin) Drop-in theme for django admin, that utilises AdminLTE 3 & Bootstrap 4 to make yo' admin look jazzy Installation pip inst

David Farrington 813 Oct 23, 2021
WordPress look and feel for Django administration panel

Django WP Admin WordPress look and feel for Django administration panel. Features WordPress look and feel New styles for selector, calendar and timepi

Maciej Marczewski 259 Sep 13, 2021
Responsive Theme for Django Admin With Sidebar Menu

Responsive Django Admin If you're looking for a version compatible with Django 1.8 just install 0.3.7.1. Features Responsive Sidebar Menu Easy install

Douglas Miranda 812 Sep 29, 2021
Material design for django administration

Django Material Administration Quick start pip install django-material-admin Add material.admin and material.admin.default to your INSTALLED_APPS sett

Anton 222 Oct 18, 2021
An improved django-admin-tools dashboard for Django projects

django-fluent-dashboard The fluent_dashboard module offers a custom admin dashboard, built on top of django-admin-tools (docs). The django-admin-tools

django-fluent 295 Sep 9, 2021
Django Semantic UI admin theme

Django Semantic UI admin theme A completely free (MIT) Semantic UI admin theme for Django. Actually, this is my 3rd admin theme for Django. The first

Alex 33 Oct 18, 2021
An administration website for Django

yawd-admin, a django administration website yawd-admin now has a live demo at http://yawd-admin.yawd.eu/. Use demo / demo as username & passowrd. yawd

Pantelis Petridis 139 Jul 27, 2021
Legacy django jet rebooted , supports only Django 3

Django JET Reboot Rebooting the original project : django-jet. Django Jet is modern template for Django admin interface with improved functionality. W

null 41 Oct 9, 2021
Modern responsive template for the Django admin interface with improved functionality. We are proud to announce completely new Jet. Please check out Live Demo

Django JET Modern template for Django admin interface with improved functionality Attention! NEW JET We are proud to announce completely new Jet. Plea

Geex Arts 3.2k Oct 18, 2021
fastapi-admin is a fast admin dashboard based on FastAPI and TortoiseORM with tabler ui, inspired by Django admin.

fastapi-admin is a fast admin dashboard based on FastAPI and TortoiseORM with tabler ui, inspired by Django admin.

fastapi-admin 912 Oct 14, 2021
Django Smuggler is a pluggable application for Django Web Framework that helps you to import/export fixtures via the automatically-generated administration interface.

Django Smuggler Django Smuggler is a pluggable application for Django Web Framework to easily dump/load fixtures via the automatically-generated admin

semente 359 Sep 28, 2021
Jet Bridge (Universal) for Jet Admin – API-based Admin Panel Framework for your application

Jet Bridge for Jet Admin – Admin panel framework for your application Description About Jet Admin: https://about.jetadmin.io Live Demo: https://app.je

Jet Admin 1k Oct 14, 2021
Visually distinguish environments in Django Admin

django-admin-env-notice Visually distinguish environments in Django Admin. Based on great advice from post: 5 ways to make Django Admin safer by hakib

Yuri Shikanov 228 Oct 15, 2021
FastAPI Admin Dashboard based on FastAPI and Tortoise ORM.

FastAPI ADMIN 中文文档 Introduction FastAPI-Admin is a admin dashboard based on fastapi and tortoise-orm. FastAPI-Admin provide crud feature out-of-the-bo

long2ice 927 Oct 22, 2021
A jazzy skin for the Django Admin-Interface (official repository).

Django Grappelli A jazzy skin for the Django admin interface. Grappelli is a grid-based alternative/extension to the Django administration interface.

Patrick Kranzlmueller 3.1k Oct 15, 2021
Extendable, adaptable rewrite of django.contrib.admin

django-admin2 One of the most useful parts of django.contrib.admin is the ability to configure various views that touch and alter data. django-admin2

Jazzband 1.1k Oct 19, 2021