Legacy django jet rebooted , supports only Django 3

Overview
https://travis-ci.com/b1go/django-jet-reboot.svg?branch=master

Django JET Reboot

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

We can't support old versions. We focus only on django >= 3.0 & Python >= 3.5.

Why Django JET?

  • New fresh look
  • Responsive mobile interface
  • Useful admin home page
  • Minimal template overriding
  • Easy integration
  • Themes support
  • Autocompletion
  • Handy controls

Screenshots

Screenshot #1 Screenshot #2 Screenshot #3

Installation

  • Download and install latest version of Django JET Reboot:
pip install django-jet-reboot
  • Add 'jet' application to the INSTALLED_APPS setting of your Django project settings.py file (note it should be before 'django.contrib.admin'):
INSTALLED_APPS = (
    ...
    'jet',
    'django.contrib.admin',
)
  • Make sure django.template.context_processors.request context processor is enabled in settings.py (Django 1.8+ way):
TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': [],
        'APP_DIRS': True,
        'OPTIONS': {
            'context_processors': [
                ...
                'django.template.context_processors.request',
                ...
            ],
        },
    },
]
  • Add URL-pattern to the urlpatterns of your Django project urls.py file (they are needed for related–lookups and autocompletes):
urlpatterns = patterns(
    '',
    path('jet/', include('jet.urls', 'jet')),  # Django JET URLS
    path('admin/', include(admin.site.urls)),
    ...
)
  • Create database tables:
python manage.py migrate jet
  • Collect static if you are in production environment:
python manage.py collectstatic
  • Clear your browser cache

Dashboard installation

Note

Dashboard is located into a separate application. So after a typical JET installation it won't be active. To enable dashboard application follow these steps:

  • Add 'jet.dashboard' application to the INSTALLED_APPS setting of your Django project settings.py file (note it should be before 'jet'):
INSTALLED_APPS = (
    ...
    'jet.dashboard',
    'jet',
    'django.contrib.admin',
    ...
)
  • Add URL-pattern to the urlpatterns of your Django project urls.py file (they are needed for related–lookups and autocompletes):
urlpatterns = patterns(
    '',
    path('jet/', include('jet.urls', 'jet')),  # Django JET URLS
    path('jet/dashboard/', include('jet.dashboard.urls', 'jet-dashboard')),  # Django JET dashboard URLS
    path('admin/', include(admin.site.urls)),
    ...
)
  • For Google Analytics widgets only install python package:
pip install google-api-python-client==1.4.1
  • Create database tables:
python manage.py migrate dashboard
  • Collect static if you are in production environment:
python manage.py collectstatic
Comments
  • Fixed display issue reported in issue #27

    Fixed display issue reported in issue #27

    I reported issue #27 which turned out to be a wider problem in how tabs are displayed in change_form views and how select2 fields are displayed. It appears that all what was needed to fix this was the load order of jsi18n.js. The pull request moves jsi18n.js so that it loads after all the js files loaded by django.

    opened by cobia 4
  • module 'collections' has no attribute 'MutableSet'

    module 'collections' has no attribute 'MutableSet'

    When jet.dashboard URLs are included in the project URLs, the following AttributeError is raised:

      File ".../jet/dashboard/urls.py", line 10, in <module>
        from jet.dashboard import dashboard
      File ".../jet/dashboard/dashboard.py", line 11, in <module>
        from jet.ordered_set import OrderedSet
      File ".../jet/ordered_set.py", line 4, in <module>
        class OrderedSet(collections.MutableSet):
    AttributeError: module 'collections' has no attribute 'MutableSet'
    

    Django v. 4.0.2 Python v. 3.10

    The issue is Python 3.10:

    DeprecationWarning: Using or importing the ABCs from 'collections' instead of from 'collections.abc' is deprecated since Python 3.3, and in 3.10 it will stop working
    

    Thank you for maintaining this project!

    bug 
    opened by johnunar 3
  • Connection refused by localhost when trying to add a foreign key model inside a model

    Connection refused by localhost when trying to add a foreign key model inside a model

    I have 2 models, one has a foreign key pointing to the other model. When I press "Add item" in the first model, I can press the plus button next to the foreign key field to add another to that model, but when I click it, it says "Connection refused by localhost".

    `class Currency(models.Model): name = models.CharField(max_length=200, null=False, blank=False)

    class Item(models.Model): name = models.CharField(max_length=200, verbose_name="Megnevezés", blank=False) curr = models.ForeignKey(Currency, max_length=50, blank=False, on_delete=models.CASCADE) `

    screenshot: https://imgur.com/a/f1AFAY1

    Django version: 4.0.6 jet version: newest.

    opened by adhdisdev 2
  • Where do I get the $65 commercial license for Jet mentioned in this article?

    Where do I get the $65 commercial license for Jet mentioned in this article?

    Article: https://betterprogramming.pub/a-better-admin-for-your-django-app-b6302ae06847

    I'm want to use Jet Reboot on my commercial website and just wanted to know if I can with the current license or where I can buy the commercial license?

    Thank you for your time!

    opened by torrinworx 2
  • Custom Admin Page

    Custom Admin Page

    Hello,

    Thank you for making it great again!

    Could I ask if I want to have a custom admin page, how I can do that because I searched there is no changelist file to override.

    Thank you!

    opened by namicts 2
  • Migration fails when using UUID

    Migration fails when using UUID

    User model with a UUID instead of BIGINT, the migrations fail for PostgreSQL. tried django-jet-reboot==1.3.1/1.3.3 still fails.

    Error message: return self.cursor.execute(sql, params) django.db.utils.ProgrammingError: cannot cast type integer to uuid LINE 1: ..." ALTER COLUMN "user_id" TYPE uuid USING "user_id"::uuid, AL...

    opened by iamalmiir 1
  • "Found another file with the destination path ..."

    Right after following install instructions for django-jet-reboot, I ran python manage.py collectstatic and got these messages:

    Found another file with the destination path 'admin\css\base.css'. 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.
    Found another file with the destination path 'admin\css\changelists.css'. 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.
    Found another file with the destination path 'admin\css\dashboard.css'. 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.
    Found another file with the destination path 'admin\css\fonts.css'. 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.
    Found another file with the destination path 'admin\css\forms.css'. 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.
    Found another file with the destination path 'admin\css\login.css'. 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.
    Found another file with the destination path 'admin\css\rtl.css'. 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.
    Found another file with the destination path 'admin\css\widgets.css'. 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.
    Found another file with the destination path 'admin\js\SelectFilter2.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.
    Found another file with the destination path 'admin\js\admin\DateTimeShortcuts.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.
    Found another file with the destination path 'admin\js\admin\RelatedObjectLookups.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.
    

    Is this normal or should I do something to address that?

    Thanks in advance.

    opened by VBobCat 1
  • href missing in compact sidebar if user only has view permission

    href missing in compact sidebar if user only has view permission

    Versions Django==4.1.3 django-jet-reboot=1.3.3

    Description

    If a django project is set up with JET_SIDE_MENU_COMPACT = True and a staff member has only a view access for a certain model, the href is missing from the sidebar item.

    Screenshot 2022-11-21 at 17 32 52

    In jet/utils/get_app_list the url only gets added to the model, if a user has change or add permission: https://github.com/assem-ch/django-jet-reboot/blob/master/jet/utils.py#L85

    I'd be happy to contribute and write a PR for this. But can someone tell me if it's as easy as I think or what should be done?

    Would modifying the existing code as following be ok?

    if perms.get('view', False) or perms.get('change', False) :
        try:
            model_dict['admin_url'] = reverse('admin:%s_%s_changelist' % info, current_app=admin_site.name)
        except NoReverseMatch:
            pass
    
    opened by cdelacombaz 1
  • docs: fix simple typo, dictinaries -> dictionaries

    docs: fix simple typo, dictinaries -> dictionaries

    There is a small typo in jet/dashboard/modules.py.

    Should read dictionaries rather than dictinaries.

    Semi-automated pull request generated by https://github.com/timgates42/meticulous/blob/master/docs/NOTE.md

    opened by timgates42 1
  • Migration does work with custom user-model

    Migration does work with custom user-model

    Hey,

    in the case that someone use a custom User model with a UUID instead of (Big)Integer as primary key, the migrations fail for (at least) a postgresql. As far as I see, the error comes from the migration fiels, which declare "user" as a PositiveIntegerField, first, and then alter "user" to ForeignKey. The cast for the second step won't work, if the User model has a non-integer field as its primary key.

    Squashing or regenerating of the migration fields should solve the problem.

    opened by patrickRauer 1
  • 127.0.0.1 refused to connect

    127.0.0.1 refused to connect

    Python interpreter: 3.8.7 Django version: 3.2.4 django-jet-reboot: 1.1.1

    Problem: Cannot add data using the add icon

    image While clicking the add icon the following page shows: image

    opened by PhurbaGyalzen 1
  • GeoDjango maps don't get displayed

    GeoDjango maps don't get displayed

    I'm having an issue with GeoDjango maps on the admin interface when using Django Jet Reboot. The maps are registered on the admin using django.contrib.gis.admin.OSMGeoAdmin, and they display correctly on the default admin interface. However, when using Django Jet Reboot, the map is just blank.

    Steps to reproduce

    1. Register the maps on the admin using OSMGeoAdmin
    2. View the maps on the default admin interface
    3. Switch to Django Jet Reboot and view the maps on the admin interface

    Expected behavior

    The maps should display correctly on the admin interface when using Django Jet Reboot, just like they do on the default admin interface.

    Actual behavior

    When using Django Jet Reboot, the maps are just blank on the admin interface.

    Additional information

    • Django version: 3.2.6
    • Django Jet Reboot version: 1.3.3

    If anyone has experienced this issue or has any suggestions for how to fix it, please let me know! Thank you in advance for any help.

    opened by DeeStarks 0
  • Bump qs from 6.4.0 to 6.4.1

    Bump qs from 6.4.0 to 6.4.1

    Bumps qs from 6.4.0 to 6.4.1.

    Changelog

    Sourced from qs's changelog.

    6.4.1

    • [Fix] parse: ignore __proto__ keys (#428)
    • [Fix] fix for an impossible situation: when the formatter is called with a non-string value
    • [Fix] use safer-buffer instead of Buffer constructor
    • [Fix] utils.merge: avoid a crash with a null target and an array source
    • [Fix] utils.merge`: avoid a crash with a null target and a truthy non-array source
    • [Fix] stringify: fix a crash with strictNullHandling and a custom filter/serializeDate (#279)
    • [Fix] utils: merge: fix crash when source is a truthy primitive & no options are provided
    • [Fix] when parseArrays is false, properly handle keys ending in []
    • [Robustness] stringify: avoid relying on a global undefined (#427)
    • [Refactor] use cached Array.isArray
    • [Refactor] stringify: Avoid arr = arr.concat(...), push to the existing instance (#269)
    • [readme] remove travis badge; add github actions/codecov badges; update URLs
    • [Docs] Clarify the need for "arrayLimit" option
    • [meta] fix README.md (#399)
    • [meta] Clean up license text so it’s properly detected as BSD-3-Clause
    • [meta] add FUNDING.yml
    • [actions] backport actions from main
    • [Tests] remove nonexistent tape option
    • [Dev Deps] backport from main
    Commits
    • 486aa46 v6.4.1
    • 727ef5d [Fix] parse: ignore __proto__ keys (#428)
    • cd1874e [Robustness] stringify: avoid relying on a global undefined (#427)
    • 45e987c [readme] remove travis badge; add github actions/codecov badges; update URLs
    • 90a3bce [meta] fix README.md (#399)
    • 9566d25 [Fix] fix for an impossible situation: when the formatter is called with a no...
    • 74227ef Clean up license text so it’s properly detected as BSD-3-Clause
    • 35dfb22 [actions] backport actions from main
    • 7d4670f [Dev Deps] backport from main
    • 0485440 [Fix] use safer-buffer instead of Buffer constructor
    • Additional commits viewable in compare view

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language

    You can disable automated security fix PRs for this repo from the Security Alerts page.

    dependencies javascript 
    opened by dependabot[bot] 0
  • Side menu link permissions

    Side menu link permissions

    Hello! Why you need change permissions to click in the changelist view of a model? I have a model user in the core app and I have a group with add and view permissions to this model but not change permissions and this group can't access to this view from the side menu but it can access to the changelist view if it clicks in the core app from the side menu it can click on the view of the users (or entering with the url). This is because of this piece of code:

    if perms.get('change', False):
    try:
    model_dict['admin_url'] = reverse('admin:%s_%s_changelist' % info, current_app=admin_site.name)
    except NoReverseMatch:
    pass
    

    Doesn't this perms.get("change", False) should be perms.get("view", False)?

    opened by covadonga99 0
  • TemplateSyntaxError appeared after downloading 1.3.3.

    TemplateSyntaxError appeared after downloading 1.3.3.

    Hi !

    As the title explains, I have a TemplateSyntaxError in my project. When I force my project to use the 1.3.2 version, this error does not happen anymore. image

    Does someone have any idea about that ?

    Thanks in advance !

    opened by MaximeVlnve 2
  • [Question] Makemigrations denied, what is the best practice to resolve?

    [Question] Makemigrations denied, what is the best practice to resolve?

    Trying to generate makemigration files from local.yml :

    docker-compose -f local.yml run --rm django python manage.py makemigrations

    1. Why jet and dashboard migration files went to /usr/local/lib/python3.10/site-packages folder and not to my local migrations folder as in the 0001_initial.py migration?

    Migrations for 'dashboard': /usr/local/lib/python3.10/site-packages/jet/dashboard/migrations/0003_alter_userdashboardmodule_id.py - Alter field id on userdashboardmodule Migrations for 'jet': /usr/local/lib/python3.10/site-packages/jet/migrations/0002_alter_bookmark_id_alter_pinnedapplication_id.py - Alter field id on bookmark - Alter field id on pinnedapplication Migrations for 'paf': arthur_paf/paf/migrations/0001_initial.py - Create model AddressImpSet - Create model BuildingName

    EDIT: it is trying to create it not does not exist:

    cat: /usr/local/lib/python3.10/site-packages/jet/dashboard/migrations/0003_alter_userdashboardmodule_id.py: No such file or directory

    cat: /usr/local/lib/python3.10/site-packages/jet/migrations/0002_alter_bookmark_id_alter_pinnedapplication_id.py: No such file or directory

    1. But using production.yml:

    sudo docker-compose -f production.yml run --rm django python manage.py makemigrations WARN[0000] The "MONGO_USERNAME" variable is not set. Defaulting to a blank string. WARN[0000] The "MONGO_PASSWORD" variable is not set. Defaulting to a blank string. WARN[0000] The "MONGO_HOST" variable is not set. Defaulting to a blank string. WARN[0000] The "MONGO_PORT" variable is not set. Defaulting to a blank string. [+] Running 1/1 ⠿ Container mongo Recreated 0.2s [+] Running 1/1 ⠿ Container mongo Started 0.4s DATABASE_URL inside entrypoint: mongodb://@mongo:27017/?authMechanism=SCRAM-SHA-1 Migrations for 'dashboard': /usr/local/lib/python3.10/site-packages/jet/dashboard/migrations/0003_alter_userdashboardmodule_id.py - Alter field id on userdashboardmodule Traceback (most recent call last): File "/app/manage.py", line 31, in execute_from_command_line(sys.argv) File "/usr/local/lib/python3.10/site-packages/django/core/management/init.py", line 446, in execute_from_command_line utility.execute() File "/usr/local/lib/python3.10/site-packages/django/core/management/init.py", line 440, in execute self.fetch_command(subcommand).run_from_argv(self.argv) File "/usr/local/lib/python3.10/site-packages/django/core/management/base.py", line 414, in run_from_argv self.execute(*args, **cmd_options) File "/usr/local/lib/python3.10/site-packages/django/core/management/base.py", line 460, in execute output = self.handle(*args, **options) File "/usr/local/lib/python3.10/site-packages/django/core/management/base.py", line 98, in wrapped res = handle_func(*args, **kwargs) File "/usr/local/lib/python3.10/site-packages/django/core/management/commands/makemigrations.py", line 214, in handle self.write_migration_files(changes) File "/usr/local/lib/python3.10/site-packages/django/core/management/commands/makemigrations.py", line 256, in write_migration_files with open(writer.path, "w", encoding="utf-8") as fh: PermissionError: [Errno 13] Permission denied: '/usr/local/lib/python3.10/site-packages/jet/dashboard/migrations/0003_alter_userdashboardmodule_id.py'

    Why is it now saying permission error?

    Do we change chmod in /usr/local/lib to make it writable?

    opened by scheung38 1
Releases(1.3.0)
Owner
null
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.4k Dec 29, 2022
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 373 Dec 26, 2022
📱 An extension for Django admin that makes interface mobile-friendly. Merged into Django 2.0

Django Flat Responsive django-flat-responsive is included as part of Django from version 2.0! ?? Use this app if your project is powered by an older D

elky 248 Sep 2, 2022
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 326 Nov 9, 2022
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 524 Dec 26, 2022
Disable dark mode in Django admin user interface in Django 3.2.x.

Django Non Dark Admin Disable or enable dark mode user interface in Django admin panel (Django==3.2). Installation For install this app run in termina

Artem Galichkin 6 Nov 23, 2022
Drop-in replacement of Django admin comes with lots of goodies, fully extensible with plugin support, pretty UI based on Twitter Bootstrap.

Xadmin Drop-in replacement of Django admin comes with lots of goodies, fully extensible with plugin support, pretty UI based on Twitter Bootstrap. Liv

差沙 4.7k Dec 31, 2022
A Django app that creates automatic web UIs for Python scripts.

Wooey is a simple web interface to run command line Python scripts. Think of it as an easy way to get your scripts up on the web for routine data anal

Wooey 1.9k Jan 1, 2023
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.4k Dec 31, 2022
A Django admin theme using Twitter Bootstrap. It doesn't need any kind of modification on your side, just add it to the installed apps.

django-admin-bootstrapped A Django admin theme using Bootstrap. It doesn't need any kind of modification on your side, just add it to the installed ap

null 1.6k Dec 28, 2022
django's default admin interface made customizable. popup windows replaced by modals. :mage: :zap:

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

Fabio Caccamo 1.3k Dec 31, 2022
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.2k Dec 29, 2022
Modern theme for Django admin interface

Django Suit Modern theme for Django admin interface. Django Suit is alternative theme/skin/extension for Django administration interface. Project home

Kaspars Sprogis 2.2k Dec 29, 2022
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 1.2k Jan 8, 2023
With Django Hijack, admins can log in and work on behalf of other users without having to know their credentials.

Django Hijack With Django Hijack, admins can log in and work on behalf of other users without having to know their credentials. Docs See http://django

null 1.2k Jan 5, 2023
Django application and library for importing and exporting data with admin integration.

django-import-export django-import-export is a Django application and library for importing and exporting data with included admin integration. Featur

null 2.6k Jan 7, 2023
:honey_pot: A fake Django admin login screen page.

django-admin-honeypot django-admin-honeypot is a fake Django admin login screen to log and notify admins of attempted unauthorized access. This app wa

Derek Payton 907 Dec 31, 2022
"Log in as user" for the Django admin.

django-loginas About "Login as user" for the Django admin. loginas supports Python 3 only, as of version 0.4. If you're on 2, use 0.3.6. Installing dj

Stavros Korokithakis 326 Dec 3, 2022
Django app that enables staff to log in as other users using their own credentials.

Impostor Impostor is a Django application which allows staff members to login as a different user by using their own username and password. Login Logg

Andreu Vallbona Plazas 144 Dec 13, 2022